public MyGeneralTree<String> createGeneralTree(List<String> nodeDescriptors) 
    {  
        if(nodeDescriptors == null || nodeDescriptors.size() == 0)
           return null;
       
        NodeDescriptor rootDescriptor = null;
        List<NodeDescriptor> nodeDescriptorList = new ArrayList<>();
        for(String nodeDescriptorString : nodeDescriptors) {
             //--- Split the current line into the three fields we need
             String[] tokens = nodeDescriptorString.split(":");
             String id       = tokens[0].trim();
             String parentID = tokens[1].trim();
             String data     = tokens[2].trim();
             
             NodeDescriptor nodeDescriptor = new NodeDescriptor(id, parentID, data);
             
             if(id.equals("0")) {
                 System.out.println("We found a root");
                 
                 rootDescriptor = nodeDescriptor;
                 
             } else {
                 nodeDescriptorList.add(nodeDescriptor);
             }
        }

        for(NodeDescriptor nodeDescriptor : nodeDescriptorList)
         System.out.println("List Node: " + nodeDescriptor.data);

        System.out.println("Root node: " + rootDescriptor.data);
        
        MyGeneralTreeNode rootNode = new MyGeneralTreeNode(rootDescriptor.data);
        rootNode = generateTree(rootNode, rootDescriptor, nodeDescriptorList);
       
        MyGeneralTree<String> returnTree = new MyGeneralTree();
            returnTree.root = rootNode;
        return returnTree;
    }