private static Attempt <XmlTree> TryGetXmlTree(this ApplicationTree appTree, string id, FormDataCollection formCollection)
        {
            var treeDefAttempt = appTree.TryGetLegacyTreeDef();

            if (treeDefAttempt.Success == false)
            {
                return(Attempt <XmlTree> .Fail(treeDefAttempt.Exception));
            }
            var treeDef = treeDefAttempt.Result;
            //This is how the legacy trees worked....
            var bTree      = treeDef.CreateInstance();
            var treeParams = new LegacyTreeParams(formCollection);

            //we currently only support an integer id or a string id, we'll refactor how this works
            //later but we'll get this working first
            int startId;

            if (int.TryParse(id, out startId))
            {
                treeParams.StartNodeID = startId;
            }
            else
            {
                treeParams.NodeKey = id;
            }
            var xTree = new XmlTree();

            bTree.SetTreeParameters(treeParams);
            bTree.Render(ref xTree);
            return(Attempt.Succeed(xTree));
        }
        internal static Attempt <XmlTreeNode> TryGetRootXmlNodeFromLegacyTree(this ApplicationTree appTree, FormDataCollection formCollection, UrlHelper urlHelper)
        {
            var treeDefAttempt = appTree.TryGetLegacyTreeDef();

            if (treeDefAttempt.Success == false)
            {
                return(Attempt <XmlTreeNode> .Fail(treeDefAttempt.Exception));
            }
            var treeDef    = treeDefAttempt.Result;
            var bTree      = treeDef.CreateInstance();
            var treeParams = new LegacyTreeParams(formCollection);

            bTree.SetTreeParameters(treeParams);

            var xmlRoot = bTree.RootNode;

            return(Attempt.Succeed(xmlRoot));
        }
        private static Attempt<XmlTree> TryGetXmlTree(this ApplicationTree appTree, string id, FormDataCollection formCollection)
        {
            var treeDefAttempt = appTree.TryGetLegacyTreeDef();
            if (treeDefAttempt.Success == false)
            {
                return Attempt<XmlTree>.Fail(treeDefAttempt.Exception);
            }
            var treeDef = treeDefAttempt.Result;
            //This is how the legacy trees worked....
            var bTree = treeDef.CreateInstance();
            var treeParams = new LegacyTreeParams(formCollection);

            //we currently only support an integer id or a string id, we'll refactor how this works
            //later but we'll get this working first
            int startId;
            if (int.TryParse(id, out startId))
            {
                treeParams.StartNodeID = startId;
            }
            else
            {
                treeParams.NodeKey = id;
            }
            var xTree = new XmlTree();
            bTree.SetTreeParameters(treeParams);
            bTree.Render(ref xTree);
            return Attempt.Succeed(xTree);
        }
        internal static Attempt<XmlTreeNode> TryGetRootXmlNodeFromLegacyTree(this ApplicationTree appTree, FormDataCollection formCollection, UrlHelper urlHelper)
        {
            var treeDefAttempt = appTree.TryGetLegacyTreeDef();
            if (treeDefAttempt.Success == false)
            {
                return Attempt<XmlTreeNode>.Fail(treeDefAttempt.Exception);
            }
            var treeDef = treeDefAttempt.Result;
            var bTree = treeDef.CreateInstance();
            var treeParams = new LegacyTreeParams(formCollection);
            bTree.SetTreeParameters(treeParams);

            var xmlRoot = bTree.RootNode;
            
            return Attempt.Succeed(xmlRoot);
        }