docs: public static byte[] decode(String input) throws AddressFormatException {
          if (input.length() == 0) {
              return new byte[0];
          }
          // Convert the base58-encoded ASCII chars to a base58 byte sequence (base58 digits).
          byte[] input58 = new byte[input.length()];
          for (int i = 0; i < input.length(); ++i) {
              char c = input.charAt(i);
              int digit = c < 128 ? INDEXES[c] : -1;
              if (digit < 0) {
                  throw new AddressFormatException.InvalidCharacter(c, i);
              }
              input58[i] = (byte) digit;
          }
          // Count leading zeros.
          int zeros = 0;
          while (zeros < input58.length && input58[zeros] == 0) {
              ++zeros;
          }
          // Convert base-58 digits to base-256 digits.
          byte[] decoded = new byte[input.length()];
          int outputStart = decoded.length;
          for (int inputStart = zeros; inputStart < input58.length; ) {
              decoded[--outputStart] = divmod(input58, inputStart, 58, 256);
              if (input58[inputStart] == 0) {
                  ++inputStart; // optimization - skip leading zeros
              }
          }
          // Ignore extra leading zeroes that were added during the calculation.
          while (outputStart < decoded.length && decoded[outputStart] == 0) {
              ++outputStart;
          }
          // Return decoded data (including original number of leading zeros).
          return Arrays.copyOfRange(decoded, outputStart - zeros, decoded.length);
      }