} else if (b == null) {
return +1;
}
StringValue as = (StringValue)a;
StringValue bs = (StringValue)b;
if (as.containsSurrogatePairs() || bs.containsSurrogatePairs()) {
return collator.compareCS(as.getStringValueCS(), bs.getStringValueCS());
} else {
// optimize to use UTF-16 binary comparison
return as.getStringValue().compareTo(bs.getStringValue());
}