private void CheckAssignmentWithBounds(String name, MmdGenericTypeVar argGtv,
MmdGenericTypeVar boundGtv, InheritanceHandler inheritanceHandler)
{
MetaMetadata argMmd = inheritanceHandler.ResolveMmdName(argGtv.Arg);
argMmd.InheritMetaMetadata(null);
MetaMetadata lowerBoundMmd = inheritanceHandler.ResolveMmdName(boundGtv.ExtendsAttribute);
lowerBoundMmd.InheritMetaMetadata(null);
bool satisfyLowerBound = lowerBoundMmd == null || argMmd.IsDerivedFrom(lowerBoundMmd);
// MetaMetadata upperBoundMmd = inheritanceHandler.resolveMmdName(localGtv.getSuperAttribute());
// boolean satisfyUpperBound = upperBoundMmd == null || upperBoundMmd.isDerivedFrom(argMmd);
if (!satisfyLowerBound /* || !satisfyUpperBound */)
{
throw new MetaMetadataException("generic type bound(s) not satisfied: " + name);
}
}