code: NGSession take() {
      synchronized (lock) {
        if (done) {
          throw new UnsupportedOperationException("NGSession pool is shutting down");
        }
        NGSession session = idlePool.poll();
        if (session == null) {
          session = instanceCreator.get();
          session.start();
        }
        workingPool.add(session);
        return session;
      }
    }
docs: Returns an NGSession from the pool, or creates one if necessary
  
  @return an NGSession ready to work