anchor.diff:  /// Compose predicates with `||`
   let inline (|?|) (pred1:'a->bool) (pred2:'a->bool) = fun x -> pred1 x || pred2 x
   
  +
  +
   [<RequireQualifiedAccess>]
   module  List =
       let inline last ls =
  
positive.code:         Reply (Error, ErrorMessageList.Merge (expected "some kind of TOML value", reply.Error))
      | _ -> Reply (Error, expected "some kind of TOML value")
  
  pValueImpl := value_parser
  
          
  (*| Toplevel Parsers |*)
  
  let toml_item : Parser<_> = toml_key .>>. (skipEqs >>. toml_value)
  
  let toml_toplevel, private pToplevelImpl = createParserForwardedToRef ()
  
  let pTable : Parser<_> =
      (pTableKey .>> tskipRestOfLine) .>>. many toml_toplevel
      |>> fun (ks,items) -> 
          let tk = List.last ks
          let tbl:(_,_) table = table<_,_> ()
          List.iter tbl.Add items
          tk,tbl 
  //        Value.Table tbl )
  
  
  let pTableArray : Parser<_> =
      (pTableArrayKey .>> tskipRestOfLine) .>>. many toml_toplevel
      |>> fun (ks,items) -> 
          let ak = List.last ks
          let tbl:(_,_) table = table<_,_> ()
          List.iter tbl.Add items
          ak, Value.Array ([Value.InlineTable tbl])
      
  
  
  let private toplevel_parser (stream: CharStream<_>) =
      match stream.Peek () with
      | '#'  -> (skipComment >>. toml_toplevel) stream
      | ' '
      | '\t' -> (skip_tspcs >>. toml_toplevel) stream
      | '\n' -> (skipUnicodeNewline >>. toml_toplevel) stream
      | '['  -> 
          if stream.Peek2() = TwoChars('[','[') then pTableArray stream else
          (pTable |>> fun (k,tbl) -> k,Value.Table tbl) stream
      | c when (isDigit|?|isLetter|?|isAnyOf['"';'\'']) c ->
          toml_item stream
      | _    -> 
          Reply (Error, expected "A TOML table, array of tables, or a key value pair")
  
  pToplevelImpl := toplevel_parser
  
  
  let parse_toml : Parser<_> = 
      (many1 toml_toplevel) 
      |>> fun items -> 
          let tbl:(_,_) table = table<_,_> ()
          List.iter tbl.Add items
          tbl
  (* 
      ---- NOTES ----
      
  
negative.code: let pQuoteKey      : Parser<_> = between ``"`` ``"`` (many1Chars anyChar) 
  
  // key in a collection
  let toml_key       : Parser<_> = (choice [pBareKey; pQuoteKey ]).>> skip_tspcs
  
  // toplevel keys
  let pTableKey      : Parser<_> = between ``[`` ``]`` (sepBy toml_key ``.``)
  