I don&#x27;t think so, but I&#x27;d be happy to be proven wrong.<p>If you have a function that expects a type A, and you want to pass an object of type B that doesn&#x27;t have A as a supertype, I don&#x27;t know of many ways to do so. Either you wrap your B in a type that extends A, or you create a new implementation of B that extends A (this is often the same solution as the first one), or you use type classes or some variant of the concept. Is there an other option that I&#x27;m not seeing?