original.name="Template_Valid_53" ====== >>> main.whiley public type Box is { T val } function box(T x) -> (Box r) ensures r.val == x: return {val:x} // A curious little thing function looper(Box|null x) -> (T r) ensures (x is null) || (x.val == r): if x is null: return looper(x) else: return x.val public export method test(): int i = looper(box(1)) // assert i == 1 ---