@Override
protected LightweightTypeReference getBoundTypeArgument(ParameterizedTypeReference reference, JvmTypeParameter type,
Set<JvmTypeParameter> visiting) {
LightweightMergedBoundTypeArgument boundTypeArgument = getTypeParameterMapping().get(type);
if (boundTypeArgument != null && boundTypeArgument.getTypeReference() != reference) {
LightweightTypeReference boundReference = boundTypeArgument.getTypeReference();
if (boundTypeArgument.getVariance() == VarianceInfo.OUT) {
WildcardTypeReference wildcard = getOwner().newWildcardTypeReference();
wildcard.addUpperBound(boundReference);
boundReference = wildcard;
}
return boundReference.accept(this, visiting);
}
return null;
}
};