code: protected void implCloseChannel() throws IOException {
          // Release and invalidate any locks that we still hold
          if (fileLockTable != null) {
              for (FileLock fl: fileLockTable.removeAll()) {
                  synchronized (fl) {
                      if (fl.isValid()) {
                          nd.release(fd, fl.position(), fl.size());
                          ((FileLockImpl)fl).invalidate();
                      }
                  }
              }
          }
  
          threads.signalAndWait();
  
          if (parent != null) {
  
              // Close the fd via the parent stream's close method.  The parent
              // will reinvoke our close method, which is defined in the
              // superclass AbstractInterruptibleChannel, but the isOpen logic in
              // that method will prevent this method from being reinvoked.
              //
              ((java.io.Closeable)parent).close();
          } else {
              nd.close(fd);
          }
  
      }
docs: -- Standard channel operations --