/// <summary>
        /// Gets set of split nodes from a root node
        /// </summary>
        /// <param name="root">Root node to get split nodes from</param>
        /// <param name="splitNodeLocations">Node locations that form the split node</param>
        /// <returns>Set of split nodes</returns>
        private static List <TreeBankNode> GetSplitNode(TreeBankNode root, string splitNodeLocations)
        {
            List <TreeBankNode> splitNode = new List <TreeBankNode>();

            foreach (string nodeLocation in splitNodeLocations.Split(','))
            {
                splitNode.Add(root.GetNode(nodeLocation));
            }

            if (splitNode.Count <= 1)
            {
                throw new Exception("Invalid split node locations");
            }

            return(splitNode);
        }
 /// <summary>
 /// Gets relation nodes given a root and a location series label
 /// </summary>
 /// <param name="root">Root node to get nodes from</param>
 /// <param name="locationLabel">Location series label</param>
 /// <param name="nodeCollection">Collection to add nodes to</param>
 public static void AddNodesToCollection(TreeBankNode root, string locationLabel, LabeledNodeCollection nodeCollection)
 {
     // split on * then on ,
     string[] corefLocations = locationLabel.Split('*');
     foreach (string corefLocation in corefLocations)
     {
         if (corefLocation.Contains(","))
         {
             nodeCollection.AddSplitNode(GetSplitNode(root, corefLocation));
         }
         else
         {
             nodeCollection.AddSingleNode(root.GetNode(corefLocation));
         }
     }
 }