docs: private void crossSegmentShadowLine(
              int shadowx, int shadowy,
              int sx0, int sy0,
              int sx1, int sy1,
              boolean top, boolean bottom) {
          if (shadowy <  sy0 && shadowy <  sy1) {
              // Segment is entirely at the top of shadow line
              return;
          }
          if (shadowy > sy0 && shadowy > sy1) {
              // Segment is entirely at the bottom of the shadow line
              return;
          }
          if (shadowx > sx0 && shadowx > sx1) {
              // Segment is entirely at the left of the shadow line
              return;
          }
          // Compute the intersection point between the segment and the shadow line
          final OutputParameter<Integer> param = new OutputParameter<>();
          final int cross = Segment2ai.calculatesCrossingsAndXPointShadowSegment(
                  this.crossings,
                  shadowx, shadowy, sx0, sy0, sx1, sy1, top, bottom, param);
          if (cross != this.crossings) {
              final int xintercept = param.get().intValue();
              setCrossingCoordinateForYMax(xintercept, shadowy);
              setCrossingCoordinateForYMin(xintercept, shadowy);
              this.crossings = cross;
          }
      }