@Override
  public int unpack(ISOComponent c, byte[] b, int offset) throws ISOException {
    try {
      int len = prefixer.decodeLength(b, offset);
      if (len == -1) {
        // The prefixer doesn't know how long the field is, so use
        // maxLength instead
        len = getLength(b, offset);
      }

      int lenLen = prefixer.getPackedLength();
      String unpacked = interpreter.uninterpret(b, offset + lenLen, len);

      c.setValue(unpacked);
      return lenLen + interpreter.getPackedLength(len);
    } catch (Exception e) {
      throw new ISOException(makeExceptionMessage(c, "unpacking"), e);
    }
  }