handle more ADTs and unboxed tuples for primitive pattern matching