code: private String format(long number, NFRuleSet ruleSet) {
          // all API format() routines that take a double vector through
          // here.  We have these two identical functions-- one taking a
          // double and one taking a long-- the couple digits of precision
          // that long has but double doesn't (both types are 8 bytes long,
          // but double has to borrow some of the mantissa bits to hold
          // the exponent).
          // Create an empty string buffer where the result will
          // be built, and pass it to the rule set (along with an insertion
          // position of 0 and the number being formatted) to the rule set
          // for formatting
          StringBuilder result = new StringBuilder();
          if (number == Long.MIN_VALUE) {
              // We can't handle this value right now. Provide an accurate default value.
              result.append(getDecimalFormat().format(Long.MIN_VALUE));
          }
          else {
              ruleSet.format(number, result, 0, 0);
          }
          postProcess(result, ruleSet);
          return result.toString();
      }
docs: Bottleneck through which all the public format() methods
  that take a long pass. By the time we get here, we know
  which rule set we're using to do the formatting.
  @param number The number to format
  @param ruleSet The rule set to use to format the number
  @return The text that resulted from formatting the number