code: @Override
      String[] executeCommand(int timeout, String componentName, Object... data) throws QTasteException {
          mComponentsMap = new HashMap<>();
  
          List<Stage> stages = getStages();
          for (Stage s : stages) {
              browseComponent(s.getScene().getRoot().getChildrenUnmodifiable());
          }
  
          ArrayList<String> list = new ArrayList<>();
          for (String key : mComponentsMap.keySet()) {
              list.add(key + "   (number of instance with this name :" + mComponentsMap.get(key).size() + ")");
          }
          Collections.sort(list);
          list.add("Number of ownerless windows : " + Window.getOwnerlessWindows().length);
          list.add("Number of displayable windows : " + getDisplayableWindows().length);
          list.add("Number of windows (JavaFX) : " + stages.size());
          return list.toArray(new String[list.size()]);
      }
docs: Lists all component's names and counts the number of instances which have the same names.
  
  @return an array of Strings that have the following format : component_name (number of instance : X)