public override void LeaveClassDefinition(ClassDefinition node)
 {
     if (EvalAnnotation.IsMarked(node))
     {
         My <EvaluationDomainProviderImplementor> .Instance.ImplementIEvaluationDomainProviderOn(node);
     }
 }
 public override void OnMethod(Method node)
 {
     if (EvalAnnotation.IsMarked(node))
     {
         this._currentMethod = (InternalMethod)this.GetEntity(node);
         IType evaluationContextType = this.DefineEvaluationContext();
         Block stmt = this.PrepareEvaluationContextInitialization(evaluationContextType);
         this.Visit(node.Body);
         node.Body.Insert(0, stmt);
     }
 }
 protected override void ProcessBuiltinInvocation(MethodInvocationExpression node, BuiltinFunction function)
 {
     if (function == UnityScript.TypeSystem.UnityScriptTypeSystem.UnityScriptEval)
     {
         EvalAnnotation.Mark(this.CurrentMethod);
         this.BindExpressionType(node, this.TypeSystemServices.ObjectType);
     }
     else if (function == UnityScript.TypeSystem.UnityScriptTypeSystem.UnityScriptTypeof)
     {
         this.ProcessTypeofBuiltin(node);
     }
     else
     {
         base.ProcessBuiltinInvocation(node, function);
     }
 }