handle overriding by type parameters explicitly
handle overriding by type parameters explicitly

this is done so that instantiated generic types can be overridden.
it did not show up in tests because I didn't thought of testing

@functor val fun = X => List[List[Int]] { Cons(head = X) }

which I should.

yfcai/CREG