/** {@inheritDoc} */
 @Override
 public String toString() {
   StringBuilder buf = new StringBuilder();
   buf.append("[" + this.getClass().getSimpleName() + "@" + System.identityHashCode(this) + " ");
   buf.append("name: '");
   buf.append(
       (this.getName().length() > 0 ? this.getName() + "." : "") + this.getTypeWithSubtype());
   buf.append("' address: '");
   InetAddress[] addresses = this.getInetAddresses();
   if (addresses.length > 0) {
     for (InetAddress address : addresses) {
       buf.append(address);
       buf.append(':');
       buf.append(this.getPort());
       buf.append(' ');
     }
   } else {
     buf.append("(null):");
     buf.append(this.getPort());
   }
   buf.append("' status: '");
   buf.append(_state.toString());
   buf.append(this.isPersistent() ? "' is persistent," : "',");
   buf.append(" has ");
   buf.append(this.hasData() ? "" : "NO ");
   buf.append("data");
   if (this.getTextBytes().length > 0) {
     // buf.append("\n");
     // buf.append(this.getNiceTextString());
     Map<String, byte[]> properties = this.getProperties();
     if (!properties.isEmpty()) {
       buf.append("\n");
       for (String key : properties.keySet()) {
         buf.append("\t" + key + ": " + new String(properties.get(key)) + "\n");
       }
     } else {
       buf.append(" empty");
     }
   }
   buf.append(']');
   return buf.toString();
 }
 /** @param needTextAnnouncing the needTextAnnouncing to set */
 public void setNeedTextAnnouncing(boolean needTextAnnouncing) {
   this._needTextAnnouncing = needTextAnnouncing;
   if (this._needTextAnnouncing) {
     _state.setTask(null);
   }
 }
 /** {@inheritDoc} */
 @Override
 public boolean isClosed() {
   return _state.isClosed();
 }
 /** {@inheritDoc} */
 @Override
 public boolean waitForCanceled(long timeout) {
   return _state.waitForCanceled(timeout);
 }
 /** {@inheritDoc} */
 @Override
 public boolean isAnnounced() {
   return _state.isAnnounced();
 }
 /** {@inheritDoc} */
 @Override
 public boolean isCanceled() {
   return _state.isCanceled();
 }
 /** {@inheritDoc} */
 @Override
 public boolean isAssociatedWithTask(DNSTask task, DNSState state) {
   return _state.isAssociatedWithTask(task, state);
 }
 /** {@inheritDoc} */
 @Override
 public boolean isProbing() {
   return _state.isProbing();
 }
 /** {@inheritDoc} */
 @Override
 public void associateWithTask(DNSTask task, DNSState state) {
   _state.associateWithTask(task, state);
 }
 /** {@inheritDoc} */
 @Override
 public void removeAssociationWithTask(DNSTask task) {
   _state.removeAssociationWithTask(task);
 }
 /** {@inheritDoc} */
 @Override
 public boolean cancelState() {
   return _state.cancelState();
 }
 /** {@inheritDoc} */
 @Override
 public boolean revertState() {
   return _state.revertState();
 }
 /** {@inheritDoc} */
 @Override
 public boolean advanceState(DNSTask task) {
   return _state.advanceState(task);
 }