private DefaultMutableTreeNode createNode(@Nullable PatternDescriptor descriptor) {
    DefaultMutableTreeNode root = new DefaultMutableTreeNode(descriptor) {
      @NotNull
      @Override
      public String toString() {
        Object object = getUserObject();
        return object == null ? "" : ((PatternDescriptor)object).getName();
      }
    };
    String id = descriptor == null ? PatternDescriptor.ROOT : descriptor.getId();
    Collection<PatternDescriptor> collection = myMap.get(id);
    for (PatternDescriptor childDescriptor : collection) {
      root.add(createNode(childDescriptor));
    }
    return root;
  }
private DefaultMutableTreeNode createNode(@Nullable PatternDescriptor descriptor)