module AmazingPrint::OpenStruct

def self.included(base)

def self.included(base)
  base.send :alias_method, :cast_without_ostruct, :cast
  base.send :alias_method, :cast, :cast_with_ostruct
end

def awesome_open_struct_instance(object)

def awesome_open_struct_instance(object)
  "#{object.class} #{awesome_hash(object.marshal_dump)}"
end

def cast_with_ostruct(object, type)

def cast_with_ostruct(object, type)
  cast = cast_without_ostruct(object, type)
  if defined?(::OpenStruct) && object.is_a?(::OpenStruct)
    cast = :open_struct_instance
  end
  cast
end