def self.set_uref_target(uref, target)
refs = uref.element.getGeneric(uref.feature_name)
if refs.is_a?(Array)
index = refs.index(uref.proxy)
uref.element.removeGeneric(uref.feature_name, uref.proxy)
begin
uref.element.addGeneric(uref.feature_name, target, index)
rescue StandardError => e
if is_type_error?(e)
uref.element.addGeneric(uref.feature_name, uref.proxy, index)
return :type_error
else
raise
end
end
else
begin
uref.element.setGeneric(uref.feature_name, target)
rescue StandardError => e
if is_type_error?(e)
return :type_error
else
raise
end
end
end
:success
end