private int collectEqualHash(int i, ArrayList<DataNGram> matchList, int minWeight) {
		DataNGram first = null;
		matchList.clear();
		for (;;) {
			if (i >= fragments.size()) {
				return i;
			}
			first = fragments.get(i);
			i += 1;
			if (first.weight < minWeight) {
				if (!first.root.isOp() || first.root.op.getOpcode() != PcodeOp.CALL) {
					continue;
				}
			}
			if (!first.root.paired && first.root.passComplete < pass) {
				break;
			}
		}
		matchList.add(first);
		for (;;) {
			if (i >= fragments.size()) {
				return i;
			}
			DataNGram gram = fragments.get(i);
			if (!first.equalHash(gram)) {
				break;
			}
			i += 1;
			if (!gram.root.paired && gram.root.passComplete < pass) {
				matchList.add(gram);
			}
		}
		return i;
	}
Starting at the given index in fragment, the main n-gram list, collect all n-grams
with the same hash.  The matching n-grams are passed back in matchList.
Any n-gram whose weight is less than the minWeight threshold is skipped, as
is any n-gram whose underlying DataVertex is already paired or ruled out.
@param i is the given starting index
@param matchList will contain exactly the list of matching n-grams being passed back
@param minWeight is the minimum weight threshold for n-grams
@return the index advanced to the next unexamined slot
Ghidra/Features/CodeCompare/src/main/java/ghidra/features/codecompare/graphanalysis/Pinning.java