List<Rect> xor(Rect other, {double epsilon = 0.0}) { if (!overlaps(other)) return [this, other]; final a = minus(other, epsilon: epsilon); final b = other.minus(this, epsilon: epsilon); return [...a, ...b]; }