docs: public ArrayList getTreePerfLevelDescriptors(int parentLevel) {
          ArrayList res = new ArrayList();
          int thisLevel = level;
          if (instance == null) { // should be root
              res.add(new PerfLevelDescriptor(new String[] { "pmi" }, thisLevel));
          } else {
              PmiModule instance = getInstance();
              thisLevel = instance.getInstrumentationLevel();
              // if the level is same as parent, do not add to the list
              if ((thisLevel != LEVEL_UNDEFINED) && (thisLevel != parentLevel)) {
                  res.add(new PerfLevelDescriptor(instance.getPath(), thisLevel, instance.getModuleID()));
              }
          }
  
          // get from children
          ModuleItem[] items = children();
          if (items == null)
              return res;
          for (int i = 0; i < items.length; i++) {
              ArrayList childrenLevels = items[i].getTreePerfLevelDescriptors(thisLevel);
              for (int j = 0; j < childrenLevels.size(); j++)
                  res.add(childrenLevels.get(j));
          }
          return res;
      }