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

import Foundation
import JSONValueRX

public protocol QueryConvertible {
    func graphQLString() throws -> String
}

public protocol Field: QueryConvertible {
    var name: String { get }
    var alias: String? { get }

    }
}

/// Any type which inherits `InputValue` can be used as an Input Value (_Value_ and _InputObjectValue_) from the GraphQL language.
///
/// Inherited by `String`, `Int`, `UInt`, `Double`, `Bool`, `Float`, `NSNull`, `NSNumber`, `Array`, and `Dictionary`
/// by default.
public protocol InputValue {
    func graphQLInputValue() throws -> String
}

/// Any type that accepts _Arguments_ from the GraphQL language.
public protocol AcceptsArguments {
    var arguments: [String : InputValue]? { get }
    func serializedArguments() throws -> String
