I don't think this is what we want. Why does the result have to be to super class?

Why not:

`def getSpout[R](transformer: Scheme[T] => Scheme[R])`
or:
`def getSpout[U >: T, R](transformer: Scheme[U] => Scheme[R]):`