docs: @FromString
      public static BigMoney parse(String moneyStr) {
          MoneyUtils.checkNotNull(moneyStr, "Money must not be null");
          if (moneyStr.length() < 4) {
              throw new IllegalArgumentException("Money '" + moneyStr + "' cannot be parsed");
          }
          String currStr = moneyStr.substring(0, 3);
          int amountStart = 3;
          while (amountStart < moneyStr.length() && moneyStr.charAt(amountStart) == ' ') {
              amountStart++;
          }
          String amountStr = moneyStr.substring(amountStart);
          if (PARSE_REGEX.matcher(amountStr).matches() == false) {
              throw new IllegalArgumentException("Money amount '" + moneyStr + "' cannot be parsed");
          }
          return BigMoney.of(CurrencyUnit.of(currStr), new BigDecimal(amountStr));
      }