@Override
 protected void removeListenerFrom(final Object next) {
   if (next instanceof ConnectionHolder) {
     ((ConnectionHolder) next).removePropertyChangeListener(this);
   }
   super.removeListenerFrom(next);
 }
 @Override
 protected void addListenerTo(final Object next) {
   super.addListenerTo(next);
   if (next instanceof ConnectionHolder) {
     ((ConnectionHolder) next).addPropertyChangeListener(this);
   }
 }
 @Override
 public void dispose() {
   this.resource.dispose();
   super.dispose();
 }