code: public GridNode goDownstreamSP() {
          Direction[] orderedDirs = Direction.getOrderedDirs();
          double maxSlope = Double.NEGATIVE_INFINITY;
          GridNode nextNode = null;
          for( Direction direction : orderedDirs ) {
              int newCol = col + direction.col;
              int newRow = row + direction.row;
              if (isInRaster(newCol, newRow)) {
                  GridNode node = new GridNode(gridIter, cols, rows, xRes, yRes, newCol, newRow);
                  if (node.isValid()) {
                      double slopeTo = getSlopeTo(node);
                      if (slopeTo > 0 && slopeTo > maxSlope) {
                          nextNode = node;
                          maxSlope = slopeTo;
                      }
                  }
              }
          }
          if (nextNode == null && !isPit) {
              isOutlet = true;
          }
          return nextNode;
      }
docs: Get next downstream {@link GridNode node} following the steepest path.
  
  @return the next downstream node or <code>null</code> if it is an outlet.