public AttributeValues merge(Map<? extends Attribute, ?> map, int mask) {
   if (map instanceof AttributeMap && ((AttributeMap) map).getValues() != null) {
     merge(((AttributeMap) map).getValues(), mask);
   } else if (map != null && !map.isEmpty()) {
     for (Map.Entry<? extends Attribute, ?> e : map.entrySet()) {
       EAttribute ea = EAttribute.forAttribute(e.getKey());
       if (ea != null && (mask & ea.mask) != 0) {
         set(ea, e.getValue());
       }
     }
   }
   return this;
 }
 public static AttributeValues fromSerializableHashtable(Hashtable<Object, Object> ht) {
   AttributeValues result = new AttributeValues();
   if (ht != null && !ht.isEmpty()) {
     for (Map.Entry<Object, Object> e : ht.entrySet()) {
       Object key = e.getKey();
       Object val = e.getValue();
       if (key.equals(DEFINED_KEY)) {
         result.defineAll(((Integer) val).intValue());
       } else {
         try {
           EAttribute ea = EAttribute.forAttribute((Attribute) key);
           if (ea != null) {
             result.set(ea, val);
           }
         } catch (ClassCastException ex) {
         }
       }
     }
   }
   return result;
 }