private void ResolveArgument(GraphArgumentInfo argument, IResolutionContext resolutionContext)
 {
     if (argument.IsInjected)
     {
         object obj;
         var    argumentType = (TypeInfo)argument.Type.AttributeProvider;
         if (argumentType.AsType() == typeof(IResolutionContext) ||
             argumentType.ImplementedInterfaces.Any(iface => iface == typeof(IResolutionContext)))
         {
             obj = resolutionContext;
         }
         else if (argumentType.AsType() == typeof(IUserContext) ||
                  argumentType.ImplementedInterfaces.Any(iface => iface == typeof(IUserContext)))
         {
             obj = resolutionContext.UserContext;
         }
         else if (argumentType.AsType() == typeof(CancellationToken))
         {
             obj = resolutionContext.CancellationToken;
         }
         else
         {
             obj = resolutionContext.DependencyInjector?.Resolve(argumentType);
         }
         resolutionContext.SetArgument(argument.Name, obj);
     }
     else
     {
         var argumentValue = resolutionContext.GetArgument(argument);
         resolutionContext.SetArgument(argument.Name, Wrapper.Wrap(argument, argument.Type, argumentValue, true));
     }
 }