public static int serializePtgs(Ptg[] ptgs, byte[] array, int offset) {LittleEndianByteArrayOutputStream out = new LittleEndianByteArrayOutputStream(array, offset); List<Ptg> arrayPtgs = null;for (Ptg ptg : ptgs) {ptg.write(out);if (ptg instanceof ArrayPtg) {if (arrayPtgs == null) {arrayPtgs = new ArrayList<>(5);}arrayPtgs.add(ptg);}}if (arrayPtgs != null) {for (Ptg arrayPtg : arrayPtgs) {ArrayPtg p = (ArrayPtg) arrayPtg;p.writeTokenValueBytes(out);}}return out.getWriteIndex() - offset;}

public static int SerializePtgs(Ptg[] ptgs, byte[] array, int offset){int size = ptgs.Length;LittleEndianByteArrayOutputStream out1 = new LittleEndianByteArrayOutputStream(array, offset);ArrayList arrayPtgs = null;for (int k = 0; k < size; k++){Ptg ptg = ptgs[k];ptg.Write(out1);if (ptg is ArrayPtg){if (arrayPtgs == null){arrayPtgs = new ArrayList(5);}arrayPtgs.Add(ptg);}}if (arrayPtgs != null){for (int i = 0; i < arrayPtgs.Count; i++){ArrayPtg p = (ArrayPtg)arrayPtgs[i];p.WriteTokenValueBytes(out1);}}return out1.WriteIndex - offset; ;}
