code: void decrementOpen() {
          if (openCount.decrementAndGet() == 0 && !completed) {
              synchronized (this) {
                  completed = true;
                  notifyAll();
              }
              if (completionEvents != null && !isCancelled()) {
                  processedBy.updateNewEventsParent(generatedBy);
                  for (Event<?> e : completionEvents) {
                      Channel[] completeChannels = e.channels();
                      if (completeChannels.length == 0) {
                          // Note that channels() cannot be empty, as it is set
                          // when firing the event and an event is never fired
                          // on no channels.
                          completeChannels = channels();
                          e.setChannels(completeChannels);
                      }
                      processedBy.add(e, completeChannels);
                  }
              }
              if (generatedBy != null) {
                  generatedBy.decrementOpen();
              }
              processedBy = null; // No longer needed
          }
      }
docs: /* default