A bidirectional typechecking puzzle

Type inference challenges for real-world JSON