private CatNodeSection showSelf(){
    CatNodeSection section=this;
    if (section.isVisible){
      CatNodeSection original=section;
      section=(CatNodeSection)original.cloneSelf(true);
      if (original.copies==null)
        original.copies=new ArrayList<CatNodeSection>();
      original.copies.add(section);
    }
    if (doppleGangers!=null)
      for (CatNodeSection dopple: doppleGangers){
        CatNodeSection doppleCopy=dopple.showSelf();
        if (section!=this)
          section.addDoppleganger(doppleCopy);
      }
    section.isVisible=true; 
    return section;
  }