public void unset(EAttribute a) {
   if (a.att == null) {
     throw new InternalError("can't unset derived attribute: " + a);
   }
   i_set(a, DEFAULT);
   defined &= ~a.mask;
   nondefault &= ~a.mask;
 }
 public void set(EAttribute a, AttributeValues src) {
   if (a.att == null) {
     throw new InternalError("can't set derived attribute: " + a);
   }
   if (src == null || src == DEFAULT) {
     setDefault(a);
   } else {
     if ((src.defined & a.mask) != 0) {
       i_set(a, src);
       update(a);
     }
   }
 }
 public AttributeValues merge(AttributeValues src, int mask) {
   int m = mask & src.defined;
   for (EAttribute ea : EAttribute.atts) {
     if (m == 0) {
       break;
     }
     if ((m & ea.mask) != 0) {
       m &= ~ea.mask;
       i_set(ea, src);
       update(ea);
     }
   }
   return this;
 }
 public void set(EAttribute a, Object o) {
   if (a.att == null) {
     throw new InternalError("can't set derived attribute: " + a);
   }
   if (o != null) {
     try {
       i_set(a, o);
       update(a);
       return;
     } catch (Exception e) {
     }
   }
   setDefault(a);
 }