I wonder if any of the high performance serialization libraries (like Google protocol buffers) support sum types.
Sum types are tagged unions, basically the ability to say that something is either A, B, or C. Sum types are used in languages such as Haskell and ML which support Algebraic Data Types