/// <summary>
 /// Initializes a new instance of <see cref="SelectionOptimizerContext"/>
 /// </summary>
 /// <param name="schema">
 /// The schema.
 /// </param>
 /// <param name="path">
 /// The field path.
 /// </param>
 /// <param name="type">
 /// The declaring type of the fields.
 /// </param>
 /// <param name="selectionSet">
 /// The selection set that is currently being compiled.
 /// </param>
 /// <param name="fields">
 /// The fields.
 /// </param>
 /// <param name="compileResolverPipeline">
 /// A helper to compile the resolver pipeline of a field.
 /// </param>
 public SelectionOptimizerContext(
     ISchema schema,
     IImmutableStack <IObjectField> path,
     IObjectType type,
     SelectionSetNode selectionSet,
     IDictionary <string, Selection> fields,
     CompileResolverPipeline compileResolverPipeline)
 {
     Schema                   = schema;
     Path                     = path;
     Type                     = type;
     SelectionSet             = selectionSet;
     Fields                   = fields;
     _compileResolverPipeline = compileResolverPipeline;
 }
 public SelectionSetOptimizerContext(
     ISchema schema,
     Stack <IObjectField> fieldContext,
     IObjectType typeContext,
     SelectionSetNode selectionSet,
     IDictionary <string, PreparedSelection> fields,
     CompileResolverPipeline compileResolverPipeline)
 {
     Schema                   = schema;
     FieldContext             = fieldContext;
     TypeContext              = typeContext;
     SelectionSet             = selectionSet;
     Fields                   = fields;
     _compileResolverPipeline = compileResolverPipeline;
 }