public int createArgPredSequenceCode(int[] arglbids, int[] predIndex, int[] voice, boolean[] isPruned, int p, int pid) {
		long code = 0;
		for (int i = 0; i < arglbids.length; ++i) {
			if (i == pid) {
				code = (code << auglbNumBits) | (DictionarySet.ARGINDEX);
			}
			else if (predIndex[i] >= 0) {
				Utils.Assert(voice[i] >= 0 && voice[i] <= 2);
				code = (code << auglbNumBits) | (DictionarySet.ARGINDEX + (voice[i] == 2 ? 1 : 2));
			}

			if (arglbids[i] == -1 || arglbids[i] >= DictionarySet.ARGINDEX - 1 || isPruned[p * arglbids.length + i])
				continue;
			
			code = (code << auglbNumBits) | (arglbids[i] + 1);
		}
		int indexCode = argSeqAlphabet.lookupIndex(code) + 1;
		return indexCode;
	}