If you use the same extractor in both cases, how do you prevent the situation when `TupleN` captures a tuple of types and vice versa?