Deal correctly with lazy patterns and GADTs