question: 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 ; }
target:  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. 