Kinda-bidirectional typechecking
Made metaobject into an arbitrary value
Support for DSL literals