pub fn intersect(r1: TextRange, r2: TextRange) -> Option<TextRange>