docs: public GenericUtilities.TypeCategory getTypeCategory() {
          if (hasParameters() && variable == null && extension == null) {
              return GenericUtilities.TypeCategory.PARAMETERIZED;
  
          } else if (!hasParameters() && variable != null && extension == null) {
              if ("*".equals(variable)) {
                  return GenericUtilities.TypeCategory.WILDCARD;
              } else {
                  return GenericUtilities.TypeCategory.TYPE_VARIABLE;
              }
  
          } else if (!hasParameters() && variable != null && extension != null) {
              if ("+".equals(variable)) {
                  return GenericUtilities.TypeCategory.WILDCARD_EXTENDS;
              } else if ("-".equals(variable)) {
                  return GenericUtilities.TypeCategory.WILDCARD_SUPER;
              }
  
          }
          // this should never happen
          throw new IllegalStateException("The Generic Object Type is badly initialized");
      }