private static void MakeGenericType(Type baseType, TypeBuilder typeBuilder) {
Type[] genericArguments = baseType.GetGenericArguments();
string[] genericArgumentNames = genericArguments.Select(g => g.Name).ToArray();
var genericTypeParameterBuilder = typeBuilder.DefineGenericParameters(genericArgumentNames);
typeBuilder.MakeGenericType(genericTypeParameterBuilder);
}