protected void Argument(
            NameString name,
            Action <IArgumentDescriptor> argument)
        {
            if (argument == null)
            {
                throw new ArgumentNullException(nameof(argument));
            }

            name.EnsureNotEmpty(nameof(name));

            ArgumentDescriptor descriptor =
                Parameters != null &&
                Parameters.TryGetValue(name, out ParameterInfo p)
                    ? ArgumentDescriptor.New(Context, p)
                    : ArgumentDescriptor.New(Context, name);

            argument(descriptor);

            ArgumentDefinition definition = descriptor.CreateDefinition();

            Definition.Arguments.Add(definition);
        }
 public static ArgumentDescriptor ToDescriptor(
     this ArgumentDefinition definition,
     IDescriptorContext context)
 => ArgumentDescriptor.From(context, definition);