private void updateAttrs(SvcReg reg,EntryRep entry,Object[] values){
  EntryClass eclass=entry.eclass;
  for (int fldidx=values.length; --fldidx >= 0; ) {
    Object oval=entry.fields[fldidx];
    Object nval=values[fldidx];
    if (nval != null && !nval.equals(oval)) {
      eclass=getDefiningClass(eclass,fldidx);
      HashMap map=addAttr(reg,eclass,fldidx,nval);
      entry.fields[fldidx]=nval;
      if (hasAttr(reg,eclass,fldidx,oval))       continue;
      ArrayList regs=(ArrayList)map.get(oval);
      regs.remove(regs.indexOf(reg));
      if (regs.isEmpty())       map.remove(oval);
    }
  }
}

private void updateAttrs ( SvcReg reg , EntryRep entry , Object [ ] values ) { EntryClass eclass = entry . eclass ; for ( int fldidx = values . length ; -- fldidx >= 0 ; ) { Object oval = entry . fields [ fldidx ] ; Object nval = values [ fldidx ] ; if ( nval != null && ! nval . equals ( oval ) ) { eclass = getDefiningClass ( eclass , fldidx ) ; HashMap map = addAttr ( reg , eclass , fldidx , nval ) ; entry . fields [ fldidx ] = nval ; if ( hasAttr ( reg , eclass , fldidx , oval ) ) continue ; ArrayList regs = ( ArrayList ) map . get ( oval ) ; regs . remove ( regs . indexOf ( reg ) ) ; if ( regs . isEmpty ( ) ) map . remove ( oval ) ; } } }
store all non - null elements of values into the given entry , and update servicebyattr to match .
