rem: PRINT(("%s\n", __PRETTY_FUNCTION__));
context: or_region(BRegion *first, BRegion *second, BRegion *dest){	PRINT(("%s\n", __PRETTY_FUNCTION__));	ASSERT(first);	ASSERT(second);	ASSERT(dest);		BRegion *regionA, *regionB;				// A little trick, to save some work...	if (first->count != 0) {		regionA = first;		regionB = second;	} else {		regionA = second;		regionB = first;	}		if (regionB->count == 0)		copy_region(regionA, dest);	else {		if (regionB->bound.top > regionA->bound.bottom)			append_region(regionA, regionB, dest);				else if (regionA->bound.top > regionB->bound.bottom)			append_region(regionB, regionA, dest);				else if (regionA->bound.left > regionB->bound.right)			or_region_no_x(regionB, regionA, dest);				else if (regionB->bound.left > regionA->bound.right)			or_region_no_x(regionA, regionB, dest);				else if (regionA->count == 1)			or_region_1_to_n(regionA, regionB, dest);				else if (regionB->count == 1)			or_region_1_to_n(regionB, regionA, dest);				else 			or_region_complex(regionA, regionB, dest);			}}