public MethodTree Walk()
        {
            var method = new MethodTree();

            for (int i = 0; i < node.ChildCount; i++)
            {
                ITree child = node.GetChild(i);

                if (child.IsStatement())
                {
                    method.Add(new StatementTranslator(child).Walk());
                }
                else if (child.IsTypeDeclaration())
                {
                    //TODO: Special Case!
                    new TypeDeclarationTranslator(child).Walk();
                }
                else if (child.IsVarDeclaration())
                {
                    List<VarDeclarationNode> decls = new VarDeclarationTranslator(child).Walk();

                    foreach (VarDeclarationNode decl in decls)
                    {
                        method.Add(decl);
                    }
                }
                else
                {
                    throw new NotImplementedException();
                }
            }

            return method;
        }
        private static MethodTree WalkInit(ITree initNode)
        {
            Debug.Assert(initNode.Type == (int)JavaNodeType.FOR_INIT);

            if (initNode.ChildCount == 0)
            {
                return null;
            }

            var child = initNode.GetChild(0);

            var exprs = new MethodTree();
            if (child.Type == (int)JavaNodeType.VAR_DECLARATION)
            {
                new VarDeclarationTranslator(child).Walk().ForEach(exprs.Add);
            }
            else
            {

                for (var i = 0; i < initNode.ChildCount; i++)
                {
                    exprs.Add(new ExpressionTranslator(initNode.GetChild(i)).Walk());
                }

            }
            return exprs;
        }
        public void RunAllTestsButtonClicked(object sender, EventArgs e)
        {
            OutputMessage.Instance.ResetMessage(outputText);

            if (reflectedObject == null)
            {
                reflectedObject = GetReflectedObject(selectedType);
            }

            FixtureSetup(reflectedObject);

            foreach (var item in MethodList)
            {
                TreeNode treeNode = MethodTree.FirstOrDefault(x => x.Value == item).Key;
                if (treeNode != null)
                {
                    currentNode = treeNode;
                }

                RunTest(item);
            }
            FixtureTearDown(reflectedObject);

            OutputMessage.Instance.CommitMessage(outputText);
        }
        private void RunTest()
        {
            if (MethodTree == null || this.currentNode == null)
            {
                return;
            }

            MethodInfo methodInfo = null;

            if (MethodTree.ContainsKey(this.currentNode))
            {
                MethodTree.TryGetValue(this.currentNode, out methodInfo);
            }

            RunTest(methodInfo);

            OutputMessage.Instance.CommitMessage(outputText);
        }
        private static MethodTree WalkUpdater(ITree updaterNode)
        {
            Debug.Assert(updaterNode.Type == (int)JavaNodeType.FOR_UPDATE);

            var exprs = new MethodTree();

            for (var i = 0; i < updaterNode.ChildCount; i++)
            {
                exprs.Add(new ExpressionTranslator(updaterNode.GetChild(i)).Walk());
            }

            return exprs;
        }
 public ConstructorBlockCompiler(MethodTree tree)
 {
     this.tree = tree;
 }
 public void PopulateMethodTree(TreeNode node, MethodInfo methodInfo)
 {
     MethodTree.Add(node, methodInfo);
 }
 public BlockCompiler(MethodTree tree)
 {
     this.tree = tree;
 }