docs: @Override
      public synchronized void close () throws CIFSException {
          boolean wasOpen = isOpen();
          this.open = false;
          if ( this.input != null ) {
              this.input.close();
              this.input = null;
          }
  
          if ( this.output != null ) {
              this.output.close();
              this.output = null;
          }
  
          try {
              if ( wasOpen ) {
                  this.handle.close();
              }
              else if ( this.handle != null ) {
                  this.handle.release();
              }
              this.handle = null;
          }
          finally {
              if ( this.treeHandle != null ) {
                  this.treeHandle.release();
              }
          }
      }