I see numerous `comment_lenumerator.last_source_range_written = node.location.some_attribute if node.location` in the code.

I think that whole thing should be moved inside the `CommentEnumerator`

```ruby
def consume(node, attribute_name)
  return unless node.location
  @last_source_range_written = node.location.public_send(attribute_name)
end
```

With calls like

```ruby
comment_enumerator.consume(node, :expression)
```

This would try up the very few places a emitter must know about comments.