code: protected Type[] getUppermostTypeVariableBounds(TypeVariable<?> bound) {
          if (bound.getBounds()[0] instanceof TypeVariable<?>) {
              return getUppermostTypeVariableBounds((TypeVariable<?>) bound.getBounds()[0]);
          }
          return bound.getBounds();
      }
docs: /*
  TypeVariable bounds are treated specially - CDI assignability rules are applied.
  Standard Java covariant assignability rules are applied to all other types of bounds.
  This is not explicitly mentioned in the specification but is implied.