public OneOfTheseAttributesRequiredRuleDataREF add(Object v) throws DmcValueException {
synchronized(this){
OneOfTheseAttributesRequiredRuleDataREF newval = typeCheck(v);
if (value == null)
initValue();
RuleName key = (RuleName)((DmcMappedAttributeIF)newval).getKey();
OneOfTheseAttributesRequiredRuleDataREF oldval = value.put(key,newval);
if (oldval != null){
// We had a value with this key, ensure that the value actually changed
if (oldval.valuesAreEqual(newval))