/// <summary>
 /// Creates a new instance of <see cref="OperationRequest"/>.
 /// </summary>
 /// <param name="name">The operation name.</param>
 /// <param name="document">The GraphQL query document containing this operation.</param>
 /// <param name="variables">The request variable values.</param>
 /// <param name="strategy">The request strategy to the connection.</param>
 public OperationRequest(
     string name,
     IDocument document,
     IReadOnlyDictionary <string, object?>?variables = null,
     RequestStrategy strategy = RequestStrategy.Default)
     : this(null, name, document, variables, strategy)
 {
 }
 /// <summary>
 /// Creates a new instance of <see cref="OperationRequest"/>.
 /// </summary>
 /// <param name="id">The the optional request id.</param>
 /// <param name="name">The operation name.</param>
 /// <param name="document">The GraphQL query document containing this operation.</param>
 /// <param name="variables">The request variable values.</param>
 /// <param name="strategy">The request strategy to the connection.</param>
 public OperationRequest(
     string?id,
     string name,
     IDocument document,
     IReadOnlyDictionary <string, object?>?variables = null,
     RequestStrategy strategy = RequestStrategy.Default)
 {
     Id         = id;
     Name       = name ?? throw new ArgumentNullException(nameof(name));
     Document   = document ?? throw new ArgumentNullException(nameof(document));
     _variables = variables ?? ImmutableDictionary <string, object?> .Empty;
     Strategy   = strategy;
 }
 /// <summary>
 /// Deconstructs <see cref="OperationRequest"/>.
 /// </summary>
 /// <param name="id">The the optional request id.</param>
 /// <param name="name">The operation name.</param>
 /// <param name="document">The GraphQL query document containing this operation.</param>
 /// <param name="variables">The request variable values.</param>
 /// <param name="extensions">The request extension values.</param>
 /// <param name="contextData">The local context data.</param>
 /// <param name="strategy">The request strategy to the connection.</param>
 public void Deconstruct(
     out string?id,
     out string name,
     out IDocument document,
     out IReadOnlyDictionary <string, object?> variables,
     out IReadOnlyDictionary <string, object?>?extensions,
     out IReadOnlyDictionary <string, object?>?contextData,
     out RequestStrategy strategy)
 {
     id          = Id;
     name        = Name;
     document    = Document;
     variables   = _variables;
     extensions  = _extensions;
     contextData = _contextData;
     strategy    = Strategy;
 }