 public enum QueryError: ErrorType {
   case MissingCollection
   case MissingFields
+  case MissingArguments
   case InvalidState(String)
 }
 

    }
  }

  private func joinCollections(current: Int) -> String {
    return current == collections.count - 1 ? "" : ",\n"
  }

  private func buildArguments(forCollection collection: String) -> String {
    guard let arguments = arguments[collection] else {
      return ""
    }
    var args = "("
    args += arguments.flatMap{ $0.build() }.joinWithSeparator(", ")
    args += ")"


  private func build(topLevel topLevel: Bool) throws -> String {
    try validateQuery()
    return try QueryBuilder(query: self).build(topLevel: topLevel)
  }

  private func validateQuery() throws {
    if collections.isEmpty {
      throw QueryError.MissingCollection
