private final int getCaseDiff(final String text, final String pattern) {
    final int savedStrength = m_collator.getStrength();
    final int savedDecomposition = m_collator.getDecomposition();
    m_collator.setStrength(Collator.TERTIARY); // not to ignore case
    m_collator.setDecomposition(Collator.CANONICAL_DECOMPOSITION); // corresponds NDF

    final int diff[] = getFirstCaseDiff(text, pattern, m_locale);
    m_collator.setStrength(savedStrength); // restore
    m_collator.setDecomposition(savedDecomposition); // restore
    if (diff != null) {
      if ((m_caseOrder).equals("upper-first")) {
        if (diff[0] == UPPER_CASE) {
          return -1;
        } else {
          return 1;
        }
      } else { // lower-first
        if (diff[0] == LOWER_CASE) {
          return -1;
        } else {
          return 1;
        }
      }
    } else { // No case differences
      return 0;
    }
  }