Non-empty containers: NonEmptyTuple (static) and NonEmptyMap (composition).
Direction rule: a non-empty container appears where the library is the
producer — in ADT fields the user reads, and in parameters the runtime
passes to the user's implementation (protocol parameters are
contravariant, so implementations declaring a wider Mapping keep
satisfying a protocol declaring NonEmptyMap). It never appears in a
parameter the user fills: user-facing construction stays on the widest
reasonable built-in.
attributeNonEmptyTupleTypeAlias= 'tuple[T, *tuple[T, ...]]'