public GenericParameterMapper(Type type, GenericParameterMapper parent)
 {
     if (type == null)
     {
         throw new ArgumentNullException(nameof(type));
     }
     if (type.IsGenericType)
     {
         if (type.IsGenericTypeDefinition)
         {
             throw new ArgumentException("Cannot Map Generic Type Definition");
         }
         this._parent        = parent;
         this._localMappings = GenericParameterMapper.CreateMappings(type.GetGenericTypeDefinition().GetGenericArguments(), type.GetGenericArguments());
     }
     else
     {
         this._localMappings = GenericParameterMapper.EmptyMappings;
         this._parent        = null;
     }
 }
 public GenericParameterMapper(Type[] reflectedParameters, Type[] generatedParameters, GenericParameterMapper parent)
 {
     this._parent        = parent;
     this._localMappings = GenericParameterMapper.CreateMappings(reflectedParameters, generatedParameters);
 }