code: @Override
      public void close() {
          if(isClosed() == false && hook != null) {
              //remove hook to save memory
              Runtime.getRuntime().removeShutdownHook(hook);
              hook = null;
          }
          isClosed.set(true);
      }
docs: {@inheritDoc}