JIndexRange JCovering ( const JIndexRange& r1, const JIndexRange& r2 ) { const JBoolean n1 = r1.IsNothing(); const JBoolean n2 = r2.IsNothing(); if (n1 && n2) { return JIndexRange(); } else if (n1) { return r2; } else if (n2) { return r1; } else { return JIndexRange( JMin(r1.first, r2.first), JMax((r1.IsEmpty() ? r1.first-1 : r1.last), (r2.IsEmpty() ? r2.first-1 : r2.last)) ); } }