custom type systems for Clang