class YARD::Serializers::YardocSerializer

def internal_dump(object, first_object = false)

def internal_dump(object, first_object = false)
  if !first_object && object.is_a?(CodeObjects::Base) &&
     !(Tags::OverloadTag === object)
    return StubProxy.new(object.path)
  end
  if object.is_a?(Hash) || object.is_a?(Array) ||
     object.is_a?(CodeObjects::Base) ||
     !object.instance_variables.empty?
    object = object.dup
  end
  object.instance_variables.each do |ivar|
    ivar_obj = object.instance_variable_get(ivar)
    ivar_obj_dump = internal_dump(ivar_obj)
    object.instance_variable_set(ivar, ivar_obj_dump)
  end
  case object
  when Hash
    list = object.map do |k, v|
      [k, v].map {|item| internal_dump(item) }
    end
    object.replace(Hash[list])
  when Array
    list = object.map {|item| internal_dump(item) }
    object.replace(list)
  end
  object
end