When creating a parametrized type, there should be the possibility to check that the actual type arguments match the bounds of the type parameters. Given a class Foo:
public Foo<T extends Number> {
}
We should disallow new ParameterizedTypeImpl(Foo.class, null, String.class) since String does not extend Number.
Should probably still allow a way of doing it if somehow relevant / for performance, but by default this should probably be validated.