this prefix handling seem quite hackish for me.
What about state machine and have method prefix, that return indentation depending on state?
like
```
@state = :item
def prefix
  case @state
    when :item then " "*4
    when :header then " "*2
    when :default then ""
    default raise "Unknown value"
  end
```
of course better state names would help imagine what the state actually is.