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));
        }