re mix of expressions: I don't see that. Whenever it was possible to express the 'allowedtype' value as a formal constraint it was done. 'allowedtype was never functional beyond human interpretation -- it could be removed completely with little damage.

re arbitrary types: I'd consider this counter-productive. Constraints give us structured documentation and meaningful error messages. By allowing anything to go in (already doable with EnsureDType) we would loose that completely. The only benefit would be to promote lazy development -- we are the only ones that write classes with Parameters -- hence no burden for the user.