Reviewed-by: darcy
Added global sanity check in order to make sure that return type inference does not violate bounds constraints Reviewed-by: jjg