///|
fn main {
  let source = "{id:9007199254740993, n:1.2300e+02, label:'Moon',}"
  let result = try! @repair.repair(source)
  println("Input: " + source)
  println("Output: " + result.output)
  println("Original UTF-16 edit spans: " + result.to_json().stringify())
  let replayed = try! @repair.apply_edits(source, result.edits)
  println("Replay equals output: " + (replayed == result.output).to_string())
  let strict = try! @repair.repair(
    result.output,
    options=@repair.Options::strict(),
  )
  println("Strict recheck edits: " + strict.edits.length().to_string())
  try {
    ignore(@repair.repair("{\"role\":\"user\",\"role\":\"admin\"}"))
    println("Unexpected duplicate-key acceptance")
  } catch {
    @repair.Rejected(code, offset) => println("Refusal: \{code} at \{offset}")
  }
}