@Override
 public void decodeAFP(byte[] sfData, int offset, int length, AFPParserConfiguration config)
     throws AFPParserException {
   checkDataLength(sfData, offset, length, 6);
   startingCopyNumber = UtilBinaryDecoding.parseShort(sfData, offset, 2);
   endingCopyNumber = UtilBinaryDecoding.parseShort(sfData, offset + 2, 2);
   reserved4 = sfData[4];
   mediumModificationControlIdentifier = sfData[5];
 }
  @Override
  public void decodeAFP(byte[] sfData, int offset, int length, AFPParserConfiguration config)
      throws AFPParserException {
    checkDataLength(sfData, offset, length, 13);

    defaultGraphicCharacterGlobalID = new String(sfData, 0, 8, cpIBM500);
    defaultCharacterUseFlags = DefaultCharacterUseFlag.valueOf(sfData[8] & 0xFF);
    cpiRepeatingGroupLength = CPIRepeatingGroupLength.valueOf(sfData[9] & 0xFF);
    spaceCharacterSectionNumber = UtilBinaryDecoding.parseShort(sfData, offset + 10, 1);
    spaceCharacterCodePoint = UtilBinaryDecoding.parseShort(sfData, offset + 11, 1);
    codePageUseFlags = CodePageUseFlag.valueOf(sfData[12] & 0xFF);
    if (cpiRepeatingGroupLength == CPIRepeatingGroupLength.SingleByteCodePageUnicodeScalarValues
        || cpiRepeatingGroupLength
            == CPIRepeatingGroupLength.DoubleByteCodePageUnicodeScalarValues) {
      unicodeScalarValue = UtilBinaryDecoding.parseLong(sfData, 13, 4);
    }
  }