code: @Override
      public void free() {
          try {
          if(hasCoreConnection()) {
              this.getCoreConnection().close();
          }
          this.fireConnectionFreed();
          this.boundThreadId= Thread.currentThread().getId();
  
      } finally {
          this.setClosed(true);
          // state may be important for State-Listener, so its set after the listener did their work
          setTransactionalData(false);
  
          // re-opem is not possible
          // this.connection=null;
          this.releaseThreadBinding();
      }
  
      }
docs: marks a connection a freed. This connection won't be used any more.
  
  The connection is released from the bound thread an can be bind to an other thread
  
  The thread binding is not checked as this method is called in emergency and has to be robust