class SyntaxTree::Binary

def format(q)

def format(q)
  left = self.left
  power = operator == :**
  q.group do
    q.group { q.format(left) }
    q.text(" ") unless power
    if operator != :<<
      q.group do
        q.text(operator.name)
        q.indent do
          power ? q.breakable_empty : q.breakable_space
          q.format(right)
        end
      end
    elsif left.is_a?(Binary) && left.operator == :<<
      q.group do
        q.text(operator.name)
        q.indent do
          power ? q.breakable_empty : q.breakable_space
          q.format(right)
        end
      end
    else
      q.text("<< ")
      q.format(right)
    end
  end
end