Determines which type should be substituted for the requested type. The
caller must ensure that the result type is instantiable.
the substitute type name, which may be the requested type itself;this method must not return null if sourceTypeNameis not null