I'm having hard time reading this code because everything is called either `ast`, `error` or `transform`. can we provide better names? for example, in most cases, where you use `ast` I think you mean `astChunk`.