code: protected Node findNextWrite() {
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
              Tr.debug(tc, "findNextWrite entry: on node " + this + "With status: " + status + "and positive ratio of: " + getPriorityRatioPositive());
          }
  
          if (status == NODE_STATUS.REQUESTING_WRITE) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, "findNextWrite exit: node to write next is: " + this.toStringDetails());
              }
              return this;
          } else {
              // go through all dependents in order
              for (int i = 0; i < dependents.size(); i++) {
                  Node n = dependents.get(i);
  
                  Node nextWrite = n.findNextWrite();
                  if (nextWrite != null) {
                      if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                          Tr.debug(tc, "findNextWrite exit: next write node found. stream-id: " + nextWrite.getStreamID() + " node hc: " + nextWrite.hashCode());
                      }
                      return nextWrite;
                  }
  
              }
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, "findNextWrite exit: null");
              }
              return null;
          }
      }
docs: recursively go through the tree finding the highest priority node that is requesting to write.
  
  Assume nodes are arranged according to which dependents should write next from low index to high index at all levels.
  Recursively find the next node ready to write, where first option is the highest rank node at a given level, then all
  the nodes in its tree, before moving to the next highest rank node at the same level, recursively.
  
  @return