@dkubb, @7even 

I prefer to avoid context aware nodes emitter for the following reasons:

* Less state. A non context aware emitter simply has less state (the backreference is state).

* Its overall less code.

* There is a type of optimization VMs can do. http://en.wikipedia.org/wiki/Escape_analysis It would allow the VM to totally avoid the emitter object allocation, creating the object state on stack. This is only possible if no pointer to the object can "escape" the call stack. Those back references violate a precondition. I dont know ANY ruby VM implementing this one, but the LLVM has it, and I know some private ruby implementations will also have it in future. If unparser would do close to 0 object allocations, while keeping the `buffer.append` scheme it will be fast enough for some private use cases.

I'm very open to accept the patch as is and refactor myself! Also for dicussions.