docs: public synchronized ModuleItem add(String[] path, int index) {
          if (path == null)
              return null;
          if (path.length == 0)
              return this;
  
          ModuleItem item = find(path[index]);
  
          // custom module shouldn't go inside if{}
          if (item == null) {
              // Create Aggregate Module
              String[] myPath = new String[index + 1];
              System.arraycopy(path, 0, myPath, 0, myPath.length);
  
              if (myPath.length == 1) { // first layer will have aggregation
                  ModuleAggregate aggregate = new ModuleAggregate(myPath[0]);
                  item = find(path[index]);
              } else if (myPath.length == 3) { // this is supposed to be submdoule layer
                  new ModuleAggregate(myPath[0], myPath[1], myPath[2]);
                  item = find(path[index]);
              } else { // lower levels will not have aggregation
                  //item = new ModuleItem(new PmiModuleDummyImpl(myPath));      
                  Tr.warning(tc, "PMI9999E", "Parent module not found.");
              }
  
              // Add aggregate module to tree
              add(item);
          }
  
          if (index == path.length - 1)
              return item;
          else
              return item.add(path, index + 1);
      }