code: public void objectAvailable (T object)
      {
          // make sure life is not too cruel
          if (_object != null) {
              log.warning("Madre de dios! Our object came available but " +
                          "we've already got one!? " + this);
              // go ahead and pitch the old one, God knows what's going on
              _object = null;
          }
          if (!_pending) {
              log.warning("J.C. on a pogo stick! Our object came available " +
                          "but we're not pending!? " + this);
              // go with our badselves, it's the only way
          }
  
          // we're no longer pending
          _pending = false;
  
          // if we are no longer active, we don't want this damned thing
          if (!_active) {
              DObjectManager omgr = object.getManager();
              // if the object's manager is null, that means the object is
              // already destroyed and we need not trouble ourselves with
              // unsubscription as it has already been pitched to the dogs
              if (omgr != null) {
                  omgr.unsubscribeFromObject(_oid, this);
              }
              return;
          }
  
          // otherwise the air is fresh and clean and we can do our job
          _object = object;
          _subscriber.objectAvailable(object);
          for (ChangeListener listener : _listeners) {
              _object.addListener(listener);
          }
      }
docs: documentation inherited from interface