private void addDoppleganger(CatNodeSection newDopple){
    if (doppleGangers==null) 
      doppleGangers=new ArrayList<CatNodeSection>();
    doppleGangers.add(newDopple);  

    //Now we need to make sure that every section represented in the doppleganger is
    //represented in the main section; if it isn't, we create a dummy Section. Then
    //we make all the subsections of the doppleganger dopplegangers of the same
    //subsections of this section. Woo.
    if (newDopple.sectionMap!=null) 
      for (CatNodeSection doppleChild: newDopple.sectionMap.values()){      
        CatNodeSection mainChild=getCatNodeSection(doppleChild.name);
        if (mainChild==null) {
          mainChild=new Section(doppleChild.name);
          add(mainChild);
        }
        mainChild.addDoppleganger(doppleChild);
      }
  }