///|
using @lib {
type Catch,
type Data,
type Elem,
type Expr,
type Instruction,
type LocalIdx,
type FuncIdx,
type MemArg,
type MemIdx,
type DataIdx,
type GlobalIdx,
type TableIdx,
type ElemIdx,
type TypeIdx,
type ValType,
type TagIdx,
type RefType,
type FuncType,
type GlobalType,
type TableType,
type TagType,
type FieldType,
type BlockType,
type LabelIdx,
type Module,
type SubType,
type I32,
type I64,
type F32,
type F64,
}
///|
using @validate {
type Env,
type TcState,
trait Typecheck,
empty_env,
make_state,
make_state_owned,
tc_state_clone,
tc_state_new,
tc_state_pop_expect,
tc_state_pop_types,
tc_state_typecheck_catch_clause,
tc_state_validate_end_stack,
tc_state_with_stack,
tc_state_with_owned_stack,
}