https://medium.com/c-sharp-progarmming/unleashing-the-power-of-generic-attributes-in-c-11-a3ef372640c