@Nullable public TypeProjection substitute(@NotNull TypeProjection typeProjection) { TypeProjection substitutedTypeProjection = substituteWithoutApproximation(typeProjection); if (!substitution.approximateCapturedTypes()) { return substitutedTypeProjection; } return CapturedTypeApproximationKt.approximateCapturedTypesIfNecessary( substitutedTypeProjection); }