public override INode DoResolve(ResolveContext rc) { var vd = new List <VariableDeclaration>(); foreach (var variableDeclaration in Variables) { vd.Add((VariableDeclaration)variableDeclaration.DoResolve(rc)); } Variables = vd; var md = new List <MethodDeclaration>(); foreach (var methodDeclaration in Methods) { ResolveContext childctx = rc.CreateAsChild(methodDeclaration); MethodDeclaration d = (MethodDeclaration)methodDeclaration.DoResolve(childctx); md.Add(d); rc.UpdateFather(childctx); } Methods = md; Block = (Statement)Block.DoResolve(rc); return(base.DoResolve(rc)); }