docs: public String pattern() { synchronized(numberFormat) {
          StringBuilder groups = new StringBuilder();
          for (int group : decimalGroups) {
              groups.append("(").append(Strings.repeat("#", group)).append(")");
          }
          DecimalFormatSymbols s = numberFormat.getDecimalFormatSymbols();
          String digit = String.valueOf(s.getDigit());
          String exp = s.getExponentSeparator();
          String groupSep = String.valueOf(s.getGroupingSeparator());
          String moneySep = String.valueOf(s.getMonetaryDecimalSeparator());
          String zero = String.valueOf(s.getZeroDigit());
          String boundary = String.valueOf(s.getPatternSeparator());
          String minus = String.valueOf(s.getMinusSign());
          String decSep = String.valueOf(s.getDecimalSeparator());
  
          String prefixAndNumber = "(^|" + boundary+ ")" +
              "([^" + Matcher.quoteReplacement(digit + zero + groupSep + decSep + moneySep) + "']*('[^']*')?)*" +
              "[" + Matcher.quoteReplacement(digit + zero + groupSep + decSep + moneySep + exp) + "]+";
  
          return numberFormat.toLocalizedPattern().
              replaceAll(prefixAndNumber, "$0" + groups.toString()).
                 replaceAll("¤¤", Matcher.quoteReplacement(coinCode())).
                 replaceAll("¤", Matcher.quoteReplacement(coinSymbol()));
      }}