docs: private static ClassNode createUsableClassNodeFromGenericsType(final GenericsType genericsType) {
          ClassNode value = genericsType.getType();
          if (genericsType.isPlaceholder()) {
              value = OBJECT_TYPE;
          }
          ClassNode lowerBound = genericsType.getLowerBound();
          if (lowerBound != null) {
              value = lowerBound;
          } else {
              ClassNode[] upperBounds = genericsType.getUpperBounds();
              if (upperBounds != null) {
                  value = WideningCategories.lowestUpperBound(Arrays.asList(upperBounds));
              }
          }
          return value;
      }