anchor.diff:          return (keyNameText, value), status
       }
   
  -and AcceptJsonKeyPairWithComma jsonKeyPairs status continuation =
  -    Classifiers.sub continuation {
  -        let! status = Classifier.discard OPTIONAL_WHITESPACE status
  -        let result = Classifier.discard Comma status
  -        match result with 
  -        | ClassifierResult.Ok(status) -> 
  +and AcceptRecordKeyPairs elements status continuation =
  +    Classifiers.sub continuation {
  +        let! status = Classifier.discard OPTIONAL_WHITESPACE status
  +
  +        if List.isEmpty elements then
  +            let! (tryFirstValue, status) = ClassifierBuilder.ZeroOrOne(status, AcceptJsonKeyPair)
  +            match tryFirstValue with
  +            | None -> 
  +                return [], status
  +            | Some firstValue ->
  +                return! AcceptRecordKeyPairs [ firstValue ] status
  +        else
               let! status = Classifier.discard OPTIONAL_WHITESPACE status
  -            let! (value, status) = AcceptJsonKeyPair status
  -            return (value :: jsonKeyPairs), status
  -        | ClassifierResult.Error _ -> 
  -            return jsonKeyPairs, status
  +            let result = Classifier.discard Comma status
  +            match result with 
  +            | ClassifierResult.Ok(status) -> 
  +                let! status = Classifier.discard OPTIONAL_WHITESPACE status
  +
  +                let! (value, status) = AcceptJsonKeyPair status
  +                return! AcceptRecordKeyPairs (value :: elements) status
  +
  +            | ClassifierResult.Error _ -> 
  +                return elements, status
       }
   
   and AcceptJsonRecord status continuation =
  
positive.code:         let! status = Classifier.discard OPTIONAL_WHITESPACE status
          
          let! (keyName, status) = AcceptStringLiteral status
          let keyNameText = match keyName with | JsonValue.String str -> str | _ -> failwith "need better error"
  
          let! status = Classifier.discard OPTIONAL_WHITESPACE status
          let! status = Classifier.discard Colon status
  
negative.code:         let! status = Classifier.discard OPTIONAL_WHITESPACE originalStatus
  
          if List.isEmpty elements then
              let! (tryFirstValue, status) = ClassifierBuilder.ZeroOrOne(status, AcceptJsonObject)
              match tryFirstValue with
              | None -> 
  