void release(Object owner,Field field){
  Map<String,Integer> fields=owners.get(owner);
  if (fields != null) {
    release();
    Integer count=fields.get(field.toGenericString());
    if (--count > 0) {
      fields.put(field.toGenericString(),count);
    }
 else {
      fields.remove(field.toGenericString());
    }
  }
  if (fields != null && fields.isEmpty()) {
    owners.remove(owner);
  }
}

void release ( Object owner , Field field ) { Map < String , Integer > fields = owners . get ( owner ) ; if ( fields != null ) { release ( ) ; Integer count = fields . get ( field . toGenericString ( ) ) ; if ( -- count > 0 ) { fields . put ( field . toGenericString ( ) , count ) ; } else { fields . remove ( field . toGenericString ( ) ) ; } } if ( fields != null && fields . isEmpty ( ) ) { owners . remove ( owner ) ; } }
release an instance injected as a field of an object
