class Sexp

def gsub(pattern, repl)

def gsub(pattern, repl)
  return repl if pattern == self
  new = self.map do |subset|
    case subset
    when Sexp then
      subset.gsub(pattern, repl)
    else
      subset
    end
  end
  return Sexp.from_array(new)
end