class OpenStruct

def [](name)

def [](name)
  @table[name.to_sym]
end unless method_defined? :[]

def []=(name, value)

def []=(name, value)
  modifiable[new_ostruct_member(name)] = value
end unless method_defined? :[]=

def each_pair

def each_pair
  return to_enum(:each_pair) unless block_given?
  @table.each_pair{|p| yield p}
end unless method_defined? :each_pair

def eql?(other)

def eql?(other)
  return false unless other.kind_of?(OpenStruct)
  @table.eql?(other.table)
end unless method_defined? :eql?

def hash

def hash
  @table.hash
end unless method_defined? :hash

def to_h

def to_h
  @table.dup
end unless method_defined? :to_h