There are manual test cases in #71, but we should encode them into type tests and run them constantly