Using this class makes it possible to capture a generic/parameterized argument type, such as List<Money>,
instead of having to rely on the classical .class construct.
When you specify a type reference using .class you loose any Generic/Parameterized information, as you cannot write List<Money>.class,
only List.class.
With GenericType you can specify and capture parameterized type information
You can specify a parameterized type using GenericType: var genericType = new GenericType<List<Money>>(){};