# File lib/sexp.rb, line 249
  def structure
    result = self.class.new
    if Array === self.first then
      raise "When does this happen? #{self.inspect}" # TODO: remove >= 4.2.0
      result = self.first.structure
    else
      result << self.first
      self.grep(Sexp).each do |subexp|
        result << subexp.structure
      end
    end
    result
  end