Look at the constraint:
`if(!(is(T U: U[])&&(is(Unqual!U == interface)||is(Unqual!U == class))) && !is(Unqual!T : Object) && !__traits(isAssociativeArray, T))` and then you still handle about ten different types in that function.
Having them separated by the constraint is much better readable.
- `if (is(T == enum))`
- `if (is(T == struct))`