fix `@:generic` method type parameter application and check constraints early (closes #3639)
[analyzer] move some things around so we can use `is_removable_field` in the analyzer