unlock restriction of value types that can appear at macro-expansion time
reimplement identifier=? in scheme
remove unused UNREACHABLE()