docs: public Coin parse(String source, ParsePosition pos) {
          DecimalFormatSymbols anteSigns = null;
          int parseScale = COIN_SCALE; // default
          Coin coin = null;
          synchronized (numberFormat) {
              if (numberFormat.toPattern().contains("¤")) {
                  for(ScaleMatcher d : denomMatchers()) {
                      Matcher matcher = d.pattern.matcher(source);
                      if (matcher.find()) {
                          anteSigns = setSymbolAndCode(numberFormat, matcher.group());
                          parseScale = d.scale;
                          break;
                      }
                  }
                  if (parseScale == COIN_SCALE) {
                      Matcher matcher = coinPattern.matcher(source);
                      matcher.find();
                      anteSigns = setSymbolAndCode(numberFormat, matcher.group());
                  }
              } else parseScale = scale();
  
              Number number = numberFormat.parse(source, pos);
              if (number != null) try {
                      coin = Coin.valueOf(
                          ((BigDecimal)number).movePointRight(offSatoshis(parseScale)).setScale(0, HALF_UP).longValue()
                      );
                  } catch (IllegalArgumentException e) {
                      pos.setIndex(0);
                  }
              if (anteSigns != null) numberFormat.setDecimalFormatSymbols(anteSigns);
          }
          return coin;
      }