public CompilationUnitSyntax Translate()
        {
            var root = vb6NodeTree.GetRoot();

            var control =
                vb6NodeTree.GetChildren(root).Find(x => x is VisualBasic6Parser.ControlPropertiesContext);

            var statements = new List <StatementSyntax>();

            if (control != null)
            {
                statements = TranslateControl((VisualBasic6Parser.ControlPropertiesContext)control);
            }
            var formTree = SyntaxFactory.Block(statements);

            var template = @"
namespace NAMESPACE {
    public class FORM {
        public void INITIALIZE() {
            METHOD
        }
    }
}
";

            string namespaceTitle = "namespace";
            string formTitle      = "formTitle";
            string initialize     = "Initialize";
            string methodBody     = formTree.NormalizeWhitespace().ToFullString();

            var replacedTemplate = template;

            replacedTemplate = replacedTemplate.Replace("NAMESPACE", namespaceTitle);
            replacedTemplate = replacedTemplate.Replace("FORM", formTitle);
            replacedTemplate = replacedTemplate.Replace("INITIALIZE", initialize);
            replacedTemplate = replacedTemplate.Replace("METHOD", methodBody);

            var methodWrapper = SyntaxFactory.ParseCompilationUnit(replacedTemplate);

            return(methodWrapper);
        }
        public static IEnumerable <OutToken> Translate(VB6NodeTree nodeTree)
        {
            if (nodeTree == null)
            {
                throw new ArgumentNullException(nameof(nodeTree));
            }

            var dict = new Dictionary <ContextNodeType, VB6NodeTranslator>();

            // dict[ContextNodeType.AmbiguousIdentifierContext] = new VB6NodeTranslatorLogging.AmbiguousIdentifierContext(nodeTree, dict);
            dict[ContextNodeType.AmbiguousIdentifierContext] = new VB6NodeTranslatorLogging.AmbiguousIdentifierContext(nodeTree, dict);
            dict[ContextNodeType.AmbiguousKeywordContext]    = new VB6NodeTranslatorLogging.AmbiguousKeywordContext(nodeTree, dict);
            dict[ContextNodeType.AppActivateStmtContext]     = new VB6NodeTranslatorLogging.AppActivateStmtContext(nodeTree, dict);
            dict[ContextNodeType.ArgCallContext]             = new VB6NodeTranslatorLogging.ArgCallContext(nodeTree, dict);
            dict[ContextNodeType.ArgContext]                           = new VB6NodeTranslatorLogging.ArgContext(nodeTree, dict);
            dict[ContextNodeType.ArgDefaultValueContext]               = new VB6NodeTranslatorLogging.ArgDefaultValueContext(nodeTree, dict);
            dict[ContextNodeType.ArgListContext]                       = new VB6NodeTranslatorLogging.ArgListContext(nodeTree, dict);
            dict[ContextNodeType.ArgsCallContext]                      = new VB6NodeTranslatorLogging.ArgsCallContext(nodeTree, dict);
            dict[ContextNodeType.AsTypeClauseContext]                  = new VB6NodeTranslatorLogging.AsTypeClauseContext(nodeTree, dict);
            dict[ContextNodeType.AttributeStmtContext]                 = new VB6NodeTranslatorLogging.AttributeStmtContext(nodeTree, dict);
            dict[ContextNodeType.BaseTypeContext]                      = new VB6NodeTranslatorLogging.BaseTypeContext(nodeTree, dict);
            dict[ContextNodeType.BeepStmtContext]                      = new VB6NodeTranslatorLogging.BeepStmtContext(nodeTree, dict);
            dict[ContextNodeType.BlockContext]                         = new VB6NodeTranslatorLogging.BlockContext(nodeTree, dict);
            dict[ContextNodeType.BlockIfThenElseContext]               = new VB6NodeTranslatorLogging.BlockIfThenElseContext(nodeTree, dict);
            dict[ContextNodeType.BlockStmtContext]                     = new VB6NodeTranslatorLogging.BlockStmtContext(nodeTree, dict);
            dict[ContextNodeType.CallContext]                          = new VB6NodeTranslatorLogging.CallContext(nodeTree, dict);
            dict[ContextNodeType.CaseCondElseContext]                  = new VB6NodeTranslatorLogging.CaseCondElseContext(nodeTree, dict);
            dict[ContextNodeType.CaseCondExprContext]                  = new VB6NodeTranslatorLogging.CaseCondExprContext(nodeTree, dict);
            dict[ContextNodeType.CaseCondExprIsContext]                = new VB6NodeTranslatorLogging.CaseCondExprIsContext(nodeTree, dict);
            dict[ContextNodeType.CaseCondExprToContext]                = new VB6NodeTranslatorLogging.CaseCondExprToContext(nodeTree, dict);
            dict[ContextNodeType.CaseCondExprValueContext]             = new VB6NodeTranslatorLogging.CaseCondExprValueContext(nodeTree, dict);
            dict[ContextNodeType.CertainIdentifierContext]             = new VB6NodeTranslatorLogging.CertainIdentifierContext(nodeTree, dict);
            dict[ContextNodeType.ChDirStmtContext]                     = new VB6NodeTranslatorLogging.ChDirStmtContext(nodeTree, dict);
            dict[ContextNodeType.ChDriveStmtContext]                   = new VB6NodeTranslatorLogging.ChDriveStmtContext(nodeTree, dict);
            dict[ContextNodeType.CloseStmtContext]                     = new VB6NodeTranslatorLogging.CloseStmtContext(nodeTree, dict);
            dict[ContextNodeType.ComparisonOperatorContext]            = new VB6NodeTranslatorLogging.ComparisonOperatorContext(nodeTree, dict);
            dict[ContextNodeType.ComplexTypeContext]                   = new VB6NodeTranslatorLogging.ComplexTypeContext(nodeTree, dict);
            dict[ContextNodeType.CondExprContext]                      = new VB6NodeTranslatorLogging.CondExprContext(nodeTree, dict);
            dict[ContextNodeType.ConstStmtContext]                     = new VB6NodeTranslatorLogging.ConstStmtContext(nodeTree, dict);
            dict[ContextNodeType.ConstSubStmtContext]                  = new VB6NodeTranslatorLogging.ConstSubStmtContext(nodeTree, dict);
            dict[ContextNodeType.ControlPropertiesContext]             = new VB6NodeTranslatorLogging.ControlPropertiesContext(nodeTree, dict);
            dict[ContextNodeType.Cp_ControlIdentifierContext]          = new VB6NodeTranslatorLogging.Cp_ControlIdentifierContext(nodeTree, dict);
            dict[ContextNodeType.Cp_ControlTypeContext]                = new VB6NodeTranslatorLogging.Cp_ControlTypeContext(nodeTree, dict);
            dict[ContextNodeType.Cp_NestedPropertyContext]             = new VB6NodeTranslatorLogging.Cp_NestedPropertyContext(nodeTree, dict);
            dict[ContextNodeType.Cp_PropertiesContext]                 = new VB6NodeTranslatorLogging.Cp_PropertiesContext(nodeTree, dict);
            dict[ContextNodeType.Cp_PropertyValueContext]              = new VB6NodeTranslatorLogging.Cp_PropertyValueContext(nodeTree, dict);
            dict[ContextNodeType.Cp_SinglePropertyContext]             = new VB6NodeTranslatorLogging.Cp_SinglePropertyContext(nodeTree, dict);
            dict[ContextNodeType.DateStmtContext]                      = new VB6NodeTranslatorLogging.DateStmtContext(nodeTree, dict);
            dict[ContextNodeType.DeclareStmtContext]                   = new VB6NodeTranslatorLogging.DeclareStmtContext(nodeTree, dict);
            dict[ContextNodeType.DeftypeStmtContext]                   = new VB6NodeTranslatorLogging.DeftypeStmtContext(nodeTree, dict);
            dict[ContextNodeType.DeleteSettingStmtContext]             = new VB6NodeTranslatorLogging.DeleteSettingStmtContext(nodeTree, dict);
            dict[ContextNodeType.DictionaryCallStmtContext]            = new VB6NodeTranslatorLogging.DictionaryCallStmtContext(nodeTree, dict);
            dict[ContextNodeType.DoLoopStmtContext]                    = new VB6NodeTranslatorLogging.DoLoopStmtContext(nodeTree, dict);
            dict[ContextNodeType.ECS_MemberProcedureCallContext]       = new VB6NodeTranslatorLogging.ECS_MemberProcedureCallContext(nodeTree, dict);
            dict[ContextNodeType.ECS_ProcedureCallContext]             = new VB6NodeTranslatorLogging.ECS_ProcedureCallContext(nodeTree, dict);
            dict[ContextNodeType.EndStmtContext]                       = new VB6NodeTranslatorLogging.EndStmtContext(nodeTree, dict);
            dict[ContextNodeType.EnumerationStmt_ConstantContext]      = new VB6NodeTranslatorLogging.EnumerationStmt_ConstantContext(nodeTree, dict);
            dict[ContextNodeType.EnumerationStmtContext]               = new VB6NodeTranslatorLogging.EnumerationStmtContext(nodeTree, dict);
            dict[ContextNodeType.EraseStmtContext]                     = new VB6NodeTranslatorLogging.EraseStmtContext(nodeTree, dict);
            dict[ContextNodeType.EventStmtContext]                     = new VB6NodeTranslatorLogging.EventStmtContext(nodeTree, dict);
            dict[ContextNodeType.ExitStmtContext]                      = new VB6NodeTranslatorLogging.ExitStmtContext(nodeTree, dict);
            dict[ContextNodeType.ExplicitCallStmtContext]              = new VB6NodeTranslatorLogging.ExplicitCallStmtContext(nodeTree, dict);
            dict[ContextNodeType.FieldLengthContext]                   = new VB6NodeTranslatorLogging.FieldLengthContext(nodeTree, dict);
            dict[ContextNodeType.FilecopyStmtContext]                  = new VB6NodeTranslatorLogging.FilecopyStmtContext(nodeTree, dict);
            dict[ContextNodeType.ForEachStmtContext]                   = new VB6NodeTranslatorLogging.ForEachStmtContext(nodeTree, dict);
            dict[ContextNodeType.ForNextStmtContext]                   = new VB6NodeTranslatorLogging.ForNextStmtContext(nodeTree, dict);
            dict[ContextNodeType.FunctionStmtContext]                  = new VB6NodeTranslatorLogging.FunctionStmtContext(nodeTree, dict);
            dict[ContextNodeType.GetStmtContext]                       = new VB6NodeTranslatorLogging.GetStmtContext(nodeTree, dict);
            dict[ContextNodeType.GoToStmtContext]                      = new VB6NodeTranslatorLogging.GoToStmtContext(nodeTree, dict);
            dict[ContextNodeType.ICS_B_MemberProcedureCallContext]     = new VB6NodeTranslatorLogging.ICS_B_MemberProcedureCallContext(nodeTree, dict);
            dict[ContextNodeType.ICS_B_ProcedureCallContext]           = new VB6NodeTranslatorLogging.ICS_B_ProcedureCallContext(nodeTree, dict);
            dict[ContextNodeType.ICS_S_DictionaryCallContext]          = new VB6NodeTranslatorLogging.ICS_S_DictionaryCallContext(nodeTree, dict);
            dict[ContextNodeType.ICS_S_MemberCallContext]              = new VB6NodeTranslatorLogging.ICS_S_MemberCallContext(nodeTree, dict);
            dict[ContextNodeType.ICS_S_MembersCallContext]             = new VB6NodeTranslatorLogging.ICS_S_MembersCallContext(nodeTree, dict);
            dict[ContextNodeType.ICS_S_ProcedureOrArrayCallContext]    = new VB6NodeTranslatorLogging.ICS_S_ProcedureOrArrayCallContext(nodeTree, dict);
            dict[ContextNodeType.ICS_S_VariableOrProcedureCallContext] = new VB6NodeTranslatorLogging.ICS_S_VariableOrProcedureCallContext(nodeTree, dict);
            dict[ContextNodeType.IfBlockStmtContext]                   = new VB6NodeTranslatorLogging.IfBlockStmtContext(nodeTree, dict);
            dict[ContextNodeType.IfConditionStmtContext]               = new VB6NodeTranslatorLogging.IfConditionStmtContext(nodeTree, dict);
            dict[ContextNodeType.IfElseBlockStmtContext]               = new VB6NodeTranslatorLogging.IfElseBlockStmtContext(nodeTree, dict);
            dict[ContextNodeType.IfElseIfBlockStmtContext]             = new VB6NodeTranslatorLogging.IfElseIfBlockStmtContext(nodeTree, dict);
            dict[ContextNodeType.ImplicitCallStmt_InBlockContext]      = new VB6NodeTranslatorLogging.ImplicitCallStmt_InBlockContext(nodeTree, dict);
            dict[ContextNodeType.ImplicitCallStmt_InStmtContext]       = new VB6NodeTranslatorLogging.ImplicitCallStmt_InStmtContext(nodeTree, dict);
            dict[ContextNodeType.InlineIfThenElseContext]              = new VB6NodeTranslatorLogging.InlineIfThenElseContext(nodeTree, dict);
            dict[ContextNodeType.KillStmtContext]                      = new VB6NodeTranslatorLogging.KillStmtContext(nodeTree, dict);
            dict[ContextNodeType.LetStmtContext]                       = new VB6NodeTranslatorLogging.LetStmtContext(nodeTree, dict);
            dict[ContextNodeType.LetterrangeContext]                   = new VB6NodeTranslatorLogging.LetterrangeContext(nodeTree, dict);
            dict[ContextNodeType.LineInputStmtContext]                 = new VB6NodeTranslatorLogging.LineInputStmtContext(nodeTree, dict);
            dict[ContextNodeType.LineLabelContext]                     = new VB6NodeTranslatorLogging.LineLabelContext(nodeTree, dict);
            dict[ContextNodeType.LiteralContext]                       = new VB6NodeTranslatorLogging.LiteralContext(nodeTree, dict);
            dict[ContextNodeType.LsetStmtContext]                      = new VB6NodeTranslatorLogging.LsetStmtContext(nodeTree, dict);
            dict[ContextNodeType.MemberCallContext]                    = new VB6NodeTranslatorLogging.MemberCallContext(nodeTree, dict);
            dict[ContextNodeType.MkdirStmtContext]                     = new VB6NodeTranslatorLogging.MkdirStmtContext(nodeTree, dict);
            dict[ContextNodeType.ModuleAttributesContext]              = new VB6NodeTranslatorLogging.ModuleAttributesContext(nodeTree, dict);
            dict[ContextNodeType.ModuleBlockContext]                   = new VB6NodeTranslatorLogging.ModuleBlockContext(nodeTree, dict);
            dict[ContextNodeType.ModuleBodyContext]                    = new VB6NodeTranslatorLogging.ModuleBodyContext(nodeTree, dict);
            dict[ContextNodeType.ModuleBodyElementContext]             = new VB6NodeTranslatorLogging.ModuleBodyElementContext(nodeTree, dict);
            dict[ContextNodeType.ModuleConfigElementContext]           = new VB6NodeTranslatorLogging.ModuleConfigElementContext(nodeTree, dict);
            dict[ContextNodeType.ModuleContext]                        = new VB6NodeTranslatorLogging.ModuleContext(nodeTree, dict);
            dict[ContextNodeType.ModuleHeaderContext]                  = new VB6NodeTranslatorLogging.ModuleHeaderContext(nodeTree, dict);
            dict[ContextNodeType.ModuleOptionsContext]                 = new VB6NodeTranslatorLogging.ModuleOptionsContext(nodeTree, dict);
            dict[ContextNodeType.ModuleReferenceComponentContext]      = new VB6NodeTranslatorLogging.ModuleReferenceComponentContext(nodeTree, dict);
            dict[ContextNodeType.ModuleReferenceContext]               = new VB6NodeTranslatorLogging.ModuleReferenceContext(nodeTree, dict);
            dict[ContextNodeType.ModuleReferencesContext]              = new VB6NodeTranslatorLogging.ModuleReferencesContext(nodeTree, dict);
            dict[ContextNodeType.ModuleReferenceValueContext]          = new VB6NodeTranslatorLogging.ModuleReferenceValueContext(nodeTree, dict);
            dict[ContextNodeType.NameStmtContext]                      = new VB6NodeTranslatorLogging.NameStmtContext(nodeTree, dict);
            dict[ContextNodeType.OnErrorStmtContext]                   = new VB6NodeTranslatorLogging.OnErrorStmtContext(nodeTree, dict);
            dict[ContextNodeType.OpenStmtContext]                      = new VB6NodeTranslatorLogging.OpenStmtContext(nodeTree, dict);
            dict[ContextNodeType.OptionBaseStmtContext]                = new VB6NodeTranslatorLogging.OptionBaseStmtContext(nodeTree, dict);
            dict[ContextNodeType.OptionCompareStmtContext]             = new VB6NodeTranslatorLogging.OptionCompareStmtContext(nodeTree, dict);
            dict[ContextNodeType.OptionExplicitStmtContext]            = new VB6NodeTranslatorLogging.OptionExplicitStmtContext(nodeTree, dict);
            dict[ContextNodeType.OptionPrivateModuleStmtContext]       = new VB6NodeTranslatorLogging.OptionPrivateModuleStmtContext(nodeTree, dict);
            dict[ContextNodeType.OutputList_ExpressionContext]         = new VB6NodeTranslatorLogging.OutputList_ExpressionContext(nodeTree, dict);
            dict[ContextNodeType.OutputListContext]                    = new VB6NodeTranslatorLogging.OutputListContext(nodeTree, dict);
            dict[ContextNodeType.ParserRuleContext]                    = new VB6NodeTranslatorLogging.ParserRuleContext(nodeTree, dict);
            dict[ContextNodeType.PrintStmtContext]                     = new VB6NodeTranslatorLogging.PrintStmtContext(nodeTree, dict);
            dict[ContextNodeType.PropertyGetStmtContext]               = new VB6NodeTranslatorLogging.PropertyGetStmtContext(nodeTree, dict);
            dict[ContextNodeType.PropertyLetStmtContext]               = new VB6NodeTranslatorLogging.PropertyLetStmtContext(nodeTree, dict);
            dict[ContextNodeType.PropertySetStmtContext]               = new VB6NodeTranslatorLogging.PropertySetStmtContext(nodeTree, dict);
            dict[ContextNodeType.PublicPrivateGlobalVisibilityContext] = new VB6NodeTranslatorLogging.PublicPrivateGlobalVisibilityContext(nodeTree, dict);
            dict[ContextNodeType.PublicPrivateVisibilityContext]       = new VB6NodeTranslatorLogging.PublicPrivateVisibilityContext(nodeTree, dict);
            dict[ContextNodeType.PutStmtContext]                       = new VB6NodeTranslatorLogging.PutStmtContext(nodeTree, dict);
            dict[ContextNodeType.RedimSubStmtContext]                  = new VB6NodeTranslatorLogging.RedimSubStmtContext(nodeTree, dict);
            dict[ContextNodeType.ResumeStmtContext]                    = new VB6NodeTranslatorLogging.ResumeStmtContext(nodeTree, dict);
            dict[ContextNodeType.SaveSettingStmtContext]               = new VB6NodeTranslatorLogging.SaveSettingStmtContext(nodeTree, dict);
            dict[ContextNodeType.SC_CaseContext]                       = new VB6NodeTranslatorLogging.SC_CaseContext(nodeTree, dict);
            dict[ContextNodeType.SC_CondContext]                       = new VB6NodeTranslatorLogging.SC_CondContext(nodeTree, dict);
            dict[ContextNodeType.SC_CondExprContext]                   = new VB6NodeTranslatorLogging.SC_CondExprContext(nodeTree, dict);
            dict[ContextNodeType.SelectCaseStmtContext]                = new VB6NodeTranslatorLogging.SelectCaseStmtContext(nodeTree, dict);
            dict[ContextNodeType.SetStmtContext]                       = new VB6NodeTranslatorLogging.SetStmtContext(nodeTree, dict);
            dict[ContextNodeType.StartRuleContext]                     = new VB6NodeTranslatorLogging.StartRuleContext(nodeTree, dict);
            dict[ContextNodeType.SubscriptContext]                     = new VB6NodeTranslatorLogging.SubscriptContext(nodeTree, dict);
            dict[ContextNodeType.SubscriptsContext]                    = new VB6NodeTranslatorLogging.SubscriptsContext(nodeTree, dict);
            dict[ContextNodeType.SubStmtContext]                       = new VB6NodeTranslatorLogging.SubStmtContext(nodeTree, dict);
            dict[ContextNodeType.TypeContext]                          = new VB6NodeTranslatorLogging.TypeContext(nodeTree, dict);
            dict[ContextNodeType.TypeHintContext]                      = new VB6NodeTranslatorLogging.TypeHintContext(nodeTree, dict);
            dict[ContextNodeType.TypeOfStmtContext]                    = new VB6NodeTranslatorLogging.TypeOfStmtContext(nodeTree, dict);
            dict[ContextNodeType.TypeStmt_ElementContext]              = new VB6NodeTranslatorLogging.TypeStmt_ElementContext(nodeTree, dict);
            dict[ContextNodeType.TypeStmtContext]                      = new VB6NodeTranslatorLogging.TypeStmtContext(nodeTree, dict);
            dict[ContextNodeType.UnloadStmtContext]                    = new VB6NodeTranslatorLogging.UnloadStmtContext(nodeTree, dict);
            dict[ContextNodeType.ValueStmtContext]                     = new VB6NodeTranslatorLogging.ValueStmtContext(nodeTree, dict);
            dict[ContextNodeType.VariableListStmtContext]              = new VB6NodeTranslatorLogging.VariableListStmtContext(nodeTree, dict);
            dict[ContextNodeType.VariableStmtContext]                  = new VB6NodeTranslatorLogging.VariableStmtContext(nodeTree, dict);
            dict[ContextNodeType.VariableSubStmtContext]               = new VB6NodeTranslatorLogging.VariableSubStmtContext(nodeTree, dict);
            dict[ContextNodeType.VisibilityContext]                    = new VB6NodeTranslatorLogging.VisibilityContext(nodeTree, dict);
            dict[ContextNodeType.VsAddContext]                         = new VB6NodeTranslatorLogging.VsAddContext(nodeTree, dict);
            dict[ContextNodeType.VsAddressOfContext]                   = new VB6NodeTranslatorLogging.VsAddressOfContext(nodeTree, dict);
            dict[ContextNodeType.VsAmpContext]                         = new VB6NodeTranslatorLogging.VsAmpContext(nodeTree, dict);
            dict[ContextNodeType.VsAndContext]                         = new VB6NodeTranslatorLogging.VsAndContext(nodeTree, dict);
            dict[ContextNodeType.VsAssignContext]                      = new VB6NodeTranslatorLogging.VsAssignContext(nodeTree, dict);
            dict[ContextNodeType.VsDivContext]                         = new VB6NodeTranslatorLogging.VsDivContext(nodeTree, dict);
            dict[ContextNodeType.VsEqContext]                          = new VB6NodeTranslatorLogging.VsEqContext(nodeTree, dict);
            dict[ContextNodeType.VsEqvContext]                         = new VB6NodeTranslatorLogging.VsEqvContext(nodeTree, dict);
            dict[ContextNodeType.VsGeqContext]                         = new VB6NodeTranslatorLogging.VsGeqContext(nodeTree, dict);
            dict[ContextNodeType.VsGtContext]                          = new VB6NodeTranslatorLogging.VsGtContext(nodeTree, dict);
            dict[ContextNodeType.VsICSContext]                         = new VB6NodeTranslatorLogging.VsICSContext(nodeTree, dict);
            dict[ContextNodeType.VsImpContext]                         = new VB6NodeTranslatorLogging.VsImpContext(nodeTree, dict);
            dict[ContextNodeType.VsIsContext]                          = new VB6NodeTranslatorLogging.VsIsContext(nodeTree, dict);
            dict[ContextNodeType.VsLeqContext]                         = new VB6NodeTranslatorLogging.VsLeqContext(nodeTree, dict);
            dict[ContextNodeType.VsLikeContext]                        = new VB6NodeTranslatorLogging.VsLikeContext(nodeTree, dict);
            dict[ContextNodeType.VsLiteralContext]                     = new VB6NodeTranslatorLogging.VsLiteralContext(nodeTree, dict);
            dict[ContextNodeType.VsLtContext]                          = new VB6NodeTranslatorLogging.VsLtContext(nodeTree, dict);
            dict[ContextNodeType.VsMidContext]                         = new VB6NodeTranslatorLogging.VsMidContext(nodeTree, dict);
            dict[ContextNodeType.VsMinusContext]                       = new VB6NodeTranslatorLogging.VsMinusContext(nodeTree, dict);
            dict[ContextNodeType.VsModContext]                         = new VB6NodeTranslatorLogging.VsModContext(nodeTree, dict);
            dict[ContextNodeType.VsMultContext]                        = new VB6NodeTranslatorLogging.VsMultContext(nodeTree, dict);
            dict[ContextNodeType.VsNegationContext]                    = new VB6NodeTranslatorLogging.VsNegationContext(nodeTree, dict);
            dict[ContextNodeType.VsNeqContext]                         = new VB6NodeTranslatorLogging.VsNeqContext(nodeTree, dict);
            dict[ContextNodeType.VsNewContext]                         = new VB6NodeTranslatorLogging.VsNewContext(nodeTree, dict);
            dict[ContextNodeType.VsNotContext]                         = new VB6NodeTranslatorLogging.VsNotContext(nodeTree, dict);
            dict[ContextNodeType.VsOrContext]                          = new VB6NodeTranslatorLogging.VsOrContext(nodeTree, dict);
            dict[ContextNodeType.VsPlusContext]                        = new VB6NodeTranslatorLogging.VsPlusContext(nodeTree, dict);
            dict[ContextNodeType.VsPowContext]                         = new VB6NodeTranslatorLogging.VsPowContext(nodeTree, dict);
            dict[ContextNodeType.VsStructContext]                      = new VB6NodeTranslatorLogging.VsStructContext(nodeTree, dict);
            dict[ContextNodeType.VsTypeOfContext]                      = new VB6NodeTranslatorLogging.VsTypeOfContext(nodeTree, dict);
            dict[ContextNodeType.VsXorContext]                         = new VB6NodeTranslatorLogging.VsXorContext(nodeTree, dict);
            dict[ContextNodeType.WhileWendStmtContext]                 = new VB6NodeTranslatorLogging.WhileWendStmtContext(nodeTree, dict);
            dict[ContextNodeType.WithStmtContext]                      = new VB6NodeTranslatorLogging.WithStmtContext(nodeTree, dict);
            dict[ContextNodeType.WriteStmtContext]                     = new VB6NodeTranslatorLogging.WriteStmtContext(nodeTree, dict);


            if (!Enum.TryParse(nodeTree.GetRoot().GetType().Name, out ContextNodeType contextNodeType))
            {
                throw new ArgumentException("contextNodeType");
            }
            //return dict[contextNodeType].Translate(nodeTree.GetChildren(nodeTree.GetRoot()));
            return(dict[contextNodeType].Translate(new List <ParseTree> {
                nodeTree.GetRoot()
            }));
        }