public void Populate (Node node, LinkedList<interval> list)
    {
    	//System.out.println("Poblando el árbol del nodo "+node.toString());
        int node_depth = 0;
    	if (!list.isEmpty())
        {
             if (node.CurrentInterval == null)
             {
                 node.CurrentInterval = list.removeFirst();
                 //System.out.println("just added interval " + node.CurrentInterval.Name + " as the root");
                 
                 node_depth++;
                 Populate(node, list);

             }
             else
             {
                 if (node.LeftNode == null && list.getFirst().End.before(node.CurrentInterval.Start))
                 {
                	 //Hacer removeFirst en vez de getFirst.
                     node.LeftNode = new Node(list.removeFirst());
                     //System.out.println("just added interval " + node.LeftNode.CurrentInterval.Name + " left of " + node.CurrentInterval.Name );
                     
                     Populate(this, list);
                 }
                 else if (node.RightNode == null && list.getFirst().Start.after(node.CurrentInterval.End))
                 {
                     node.RightNode = new Node(list.removeFirst());
                     //System.out.println("just added interval " + node.RightNode.CurrentInterval.Name + " right of " + node.CurrentInterval.Name);
                     
                     Populate(this, list);
                 }
                 else if (node.CenterNode == null)
                 {
                     node.CenterNode = new Node(list.removeFirst());
                     //System.out.println("just added interval " + node.CenterNode.CurrentInterval.Name + " center of " + node.CurrentInterval.Name);
                     
                     Populate(this, list);
                 }
                 else
                 {
                     if (list.getFirst().End.before(node.CurrentInterval.Start))
                          {
                              Populate(node.LeftNode, list);
                          }
                     else if (list.getFirst().Start.after(node.CurrentInterval.End))
                          {
                              Populate(node.RightNode, list);
                          }
                     else
                          {
                              Populate(node.CenterNode, list);
                          }
                 }
             }
        }
        else
        {
        	/*System.out.println("Depth: " + node_depth);
            System.out.println("Your tree is now populated :)");*/
        }
    }