code: @Override
      protected String doBase(String name, Object value) {
  
          // Parse big decimal
          String svalue = value.toString();
          BigInteger bi;
          try {
              bi = new BigInteger(svalue);
          } catch (NumberFormatException e) {
              throw new IndexException("Field '{}' requires a base 10 integer, but found '{}'", name, svalue);
          }
  
          // Check size
          if (bi.abs().toString().length() > digits) {
              throw new IndexException("Field '{}' with value '{}' has more than %d digits", name, value, digits);
          }
  
          // Map
          bi = bi.add(complement);
          String bis = encode(bi);
          return StringUtils.leftPad(bis, hexDigits + 1, '0');
      }
docs: {@inheritDoc}