class ReeObject::ToObj

def call(obj, **opts)

def call(obj, **opts)
  dump = to_hash(obj)
  options = prepare_options(opts)
  if opts[:include]
    dump = slice(dump, options[:include])
  end
  if opts[:exclude]
    dump = except(dump, options[:exclude])
  end
  if opts[:global_exclude]
    dump = except(dump, global_except: options[:global_exclude])
  end
  ancestors = dump.class.ancestors
  return dump if ancestors.intersection(BASIC_TYPES).size > 0
  if dump.is_a?(Array)
    build_array(dump)
  else
    recursively_assign(Object.new, dump)
  end
end