Abstract MODIFIED and READONLY booleans for AstFunction returning
throw error on illegal roots
Support resolving a variable's declared type