def alterWiddershinsSupportedPath(alongAway, close):
 alongAway.bottomPoints = []
 alongAway.minimumY = getMinimumYByPath(alongAway.loop)
 for point in alongAway.loop:
  if ((point.y - alongAway.minimumY) < close):
   alongAway.addToBottomPoints(point)
 ascendingYPoints = alongAway.loop[:]
 ascendingYPoints.sort(compareYAscending)
 overhangWiddershinsLeft = OverhangWiddershinsLeft(alongAway)
 overhangWiddershinsRight = OverhangWiddershinsRight(alongAway)
 for point in ascendingYPoints:
  alterWiddershinsSupportedPathByPoint(alongAway, overhangWiddershinsLeft, overhangWiddershinsRight, point)

def alterWiddershinsSupportedPath ( alongAway , close ) : alongAway . bottomPoints = [ ] alongAway . minimumY = getMinimumYByPath ( alongAway . loop ) for point in alongAway . loop : if ( ( point . y - alongAway . minimumY ) < close ) : alongAway . addToBottomPoints ( point ) ascendingYPoints = alongAway . loop [ : ] ascendingYPoints . sort ( compareYAscending ) overhangWiddershinsLeft = OverhangWiddershinsLeft ( alongAway ) overhangWiddershinsRight = OverhangWiddershinsRight ( alongAway ) for point in ascendingYPoints : alterWiddershinsSupportedPathByPoint ( alongAway , overhangWiddershinsLeft , overhangWiddershinsRight , point )
get widdershins path with overhangs filled in .