typechecker work