     }
 }
 
+/// Any type that accepts `Field`s. Inherited by `AcceptsSelectionSet`.
 public protocol AcceptsFields {
     var fields: [Field]? { get }
     func serializedFields() throws -> String

    }
}

public struct Scalar: Field {
    public let name: String
    public let alias: String?

    }
}

/// 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
