We did https://github.com/Azure/cadl-azure/issues/625, but we still have some writable properties, for example:
- parent
- Also
Sym needs to be deeply readonly too since it hangs off of syntax nodes. We will need to be able reuse the result of binding too.
As we keep growing the amount of work we do in the language server, it will be important to reuse syntax trees (https://github.com/Azure/cadl-azure/issues/619), and it will be important that we have some type checking that you're not mutating them outside of binding.