It's not very satisfying in the end; I didn't do that because I still end up having redundant code somewhere. If I use the ClassTypeParameter extractor as is, I can't simultaneously promote it to a TypeRef; and in the case of instParams, I need to deconstruct the TypeRef anyway. I can access the members directly if the parameter is a typeref, but I don't consider it an improvement to be calling them tp2.sym, tp2.pre, tp2.args, instead of sym2, pre2, args2. If you can see a total-package improvement, can you describe it more completely?