code: @SuppressWarnings("uncheck")
      public static TypeDeclaration mergeType(TypeDeclaration one, TypeDeclaration two) {
          TypeDeclaration type = null;
  
          if (isAllNull(one, two)) return null;
  
          if (isAllNotNull(one, two)) {
              // just ignore when class type are not same
              if (one.getClass().equals(two.getClass())) {
  
                  if (one instanceof AnnotationDeclaration) {
  
                      type = mergeType((AnnotationDeclaration) one, (AnnotationDeclaration) two);
                  } else if (one instanceof ClassOrInterfaceDeclaration) {
  
                      type = mergeType((ClassOrInterfaceDeclaration) one, (ClassOrInterfaceDeclaration) two);
                  } else if (one instanceof EmptyTypeDeclaration) {
  
                      type = mergeType((EmptyTypeDeclaration) one, (EmptyTypeDeclaration) two);
                  } else if (one instanceof EnumDeclaration) {
                      type = mergeType((EnumDeclaration) one, (EnumDeclaration) two);
                  }
  
              }
  
          } else {
              type = findFirstNotNull(one, two);
              LOG.info("add {} --> {}", type.getClass().getSimpleName(), type.getName());
          }
  
          return type;
      }
docs: /*
  合并类型声明的分发函数