///|
fn main raise {
  // Synthetic rows follow Linux's preorder indentation (depth 1 then 2 then 1).
  let text =
    #|1: POSIX ADVISORY WRITE 100 08:01:42 0 99
    #|1: -> POSIX ADVISORY WRITE 200 08:01:42 0 99
    #|1:  -> POSIX ADVISORY READ 300 08:01:42 0 99
    #|1: -> POSIX ADVISORY WRITE 400 08:01:42 50 EOF
    #|2: OFDLCK ADVISORY WRITE -1 08:01:99 128 EOF
  let s = @locks.parse(text)
  println("Synthetic Linux lock wait tree")
  println(s.to_json().stringify())
  println("Immediate-to-root chain for source line 3:")
  println(Json(s.wait_chain(3)).stringify())
  println("Entries intersecting inode 42 at the inclusive byte 99:")
  println(
    Json(
      s.query_range(@locks.file_key("08:01:42"), @locks.byte_range("99", "99")),
    ).stringify(),
  )
}