@mbj we should probably discuss it in IRC, but I think the difference in our approach is that you want to push the conditional logic into a factory method, and I would prefer for the conditional logic to be encapsulated in the literal emitters.

I don't like putting that conditional logic in a factory method because it means the factory method needs to have knowledge of things that are outside it's realm of responsibility. I think it would be cleaner for the symbol literal emitter to know how to emit itself in the context of a key.

There's no reason it couldn't use the `Colon` and `Hashrocked` classes you have here, only it would be responsible for making the decision rather than a factory method that has knowledge that I think should be encapsulated in the symbol specific emitter.

The `#save_without_quotes?` method can become a private method and there's no reason it needs to be exposed in the public API.