Using and abusing the features of C# 6 to provide lots of helper methods and types