List<NamedRange> removeSurrogates(int startCodePoint,int endCodePoint){
  assert startCodePoint <= endCodePoint;
  if (startCodePoint >= 0xD800 && endCodePoint <= 0xDFFF) {
    return Collections.emptyList();
  }
  List<NamedRange> ranges=new ArrayList<NamedRange>();
  if (endCodePoint < 0xD800 || startCodePoint > 0xDFFF) {
    ranges.add(new NamedRange(startCodePoint,endCodePoint));
    return ranges;
  }
  if (startCodePoint < 0xD800) {
    ranges.add(new NamedRange(startCodePoint,0xD7FF));
  }
  if (endCodePoint > 0xDFFF) {
    ranges.add(new NamedRange(0xE000,endCodePoint));
  }
  return ranges;
}

List < NamedRange > removeSurrogates ( int startCodePoint , int endCodePoint ) { assert startCodePoint <= endCodePoint ; if ( startCodePoint >= 0xD800 && endCodePoint <= 0xDFFF ) { return Collections . emptyList ( ) ; } List < NamedRange > ranges = new ArrayList < NamedRange > ( ) ; if ( endCodePoint < 0xD800 || startCodePoint > 0xDFFF ) { ranges . add ( new NamedRange ( startCodePoint , endCodePoint ) ) ; return ranges ; } if ( startCodePoint < 0xD800 ) { ranges . add ( new NamedRange ( startCodePoint , 0xD7FF ) ) ; } if ( endCodePoint > 0xDFFF ) { ranges . add ( new NamedRange ( 0xE000 , endCodePoint ) ) ; } return ranges ; }
returns 0 , 1 , or 2 ranges for the given interval , depending on whether it is contained within ; is entirely outside of or starts or ends within ; or straddles the surrogate range 0xd800 - 0xdfff , respectively .
