// TODO: optimize static L dropOverlappingRects(L l) { new L out; bigloop: for (int i = 0; i < l(l); i++) { Rect a = l.get(i); for (Rect r : out) if (rectsOverlap(a, r)) continue bigloop; out.add(a); } ret out; }