public static Object createTreeData() {
    List<AnalysisTypeNode> returnList = new ArrayList<AnalysisTypeNode>();

    // use CategoryHandler
    AnalysisCategories analysisCategories = CategoryHandler.getAnalysisCategories();
    // use this tree (use label attribute of each Category instance)
    EList<AnalysisCategory> categories = analysisCategories.getCategories();

    for (AnalysisCategory category : categories) {
      AnalysisTypeNode typeNode =
          new AnalysisTypeNode(category.getLabel(), category.getAnalysisType().getLiteral(), null);
      if (category.getSubCategories() != null) {
        List<AnalysisTypeNode> subCategories = new ArrayList<AnalysisTypeNode>();
        for (AnalysisCategory subCategory : category.getSubCategories()) {
          // the Semantic analysis must not appear in TOS DQ.
          String label = subCategory.getLabel();
          if (org.talend.commons.utils.platform.PluginChecker.isOnlyTopLoaded()) {
            if (label.equals("Semantic Discovery Analysis")) { // $NON-NLS-1$
              continue;
            }
          }
          subCategories.add(new AnalysisTypeNode(label, label, typeNode));
        }
        typeNode.setChildren(subCategories.toArray());
      }

      returnList.add(typeNode);
    }

    return returnList;
  }