     }
 }
 
+/// Represents a GraphQL query sent by a request to the server.
 public protocol GraphQLQuery: QueryConvertible { }
 
+/// Defines an _OperationDefinition_ from the GraphQL language. Generally used as the `query` portion of a GraphQL request.
 public struct Operation: GraphQLQuery, AcceptsSelectionSet, AcceptsArguments {
+    
+    /// Defines an _OperationType_ from the GraphQL language.
     public enum OperationType: QueryConvertible {
         case query
         case mutation

    }
}

public protocol AcceptsFields {
    var fields: [Field]? { get }
    func serializedFields() throws -> String

    }
}

/// Any type that accepts a _SelectionSet_ from the GraphQL Language.
///
/// This type must accept `Field`s and `Fragment`s and must include either a set of
/// `fragments` _(FragmentSpread)_ or a set of `fields` or both.
public protocol AcceptsSelectionSet: AcceptsFields {
    var fields: [Field]? { get }
    var fragments: [Fragment]? { get }
