class Hamster::Set

def flatten

def flatten
  reduce(EmptySet) do |set, item|
    next set.union(item.flatten) if item.is_a?(Set)
    set.add(item)
  end
end