class Prism::LexCompat::Heredoc::DedentingHeredoc

def <<(token)

remove that amount of whitespace from the beginning of each line.
whitespace on plain string content tokens. This allows us to later
As tokens are coming in, we track the minimum amount of common leading
def <<(token)
  case token.event
  when :on_embexpr_beg, :on_heredoc_beg
    @embexpr_balance += 1
    @dedent = 0 if @dedent_next && @ended_on_newline
  when :on_embexpr_end, :on_heredoc_end
    @embexpr_balance -= 1
  when :on_tstring_content
    if embexpr_balance == 0
      line = token.value
      if dedent_next && !(line.strip.empty? && line.end_with?("\n"))
        leading = line[/\A(\s*)\n?/, 1]
        next_dedent = 0
        leading.each_char do |char|
          if char == "\t"
            next_dedent = next_dedent - (next_dedent % TAB_WIDTH) + TAB_WIDTH
          else
            next_dedent += 1
          end
        end
        @dedent = [dedent, next_dedent].compact.min
        @dedent_next = true
        @ended_on_newline = line.end_with?("\n")
        tokens << token
        return
      end
    end
  end
  @dedent_next = token.event == :on_tstring_content && embexpr_balance == 0
  @ended_on_newline = false
  tokens << token
end