def METHOD_NAME(self, polygons):
    for polygon in polygons:
        for other in polygons:
            if polygon == other:
                continue
            if polygon.overlaps(other):
                diff = polygon.symmetric_difference(other)
                if diff.geom_type == 'MultiPolygon':
                    polygons.remove(other)
                    polygons.remove(polygon)
                    for p in diff.geoms:
                        polygons.append(p)
                    # it is possible, that a polygons overlap with multiple
                    # polygons, this means, we need to start all over again
                    polygons = self.METHOD_NAME(polygons)
                    return polygons
    return polygons