Flexible Types

Limit the allowed types to those compatible with the base or interface type

TODO