Recursive types
Modify sum types so that the constructors aren't edited when the type is specialised, instead their types are modified when calling getConstructor
Modify sum types so that the constructors aren't edited when the type is specialised, instead their types are modified when calling getConstructor