private static List <AddressSequence> DetectAddressSequenceRuns(IList <int> addressLocs)
        {
            List <AddressSequence> sequences = new List <AddressSequence>();

            for (int i = 0; i < addressLocs.Count; i++)
            {
                // There can't be any more sequences if we're on the last iteration
                if (i + 1 == addressLocs.Count)
                {
                    break;
                }

                if (addressLocs[i + 1] - addressLocs[i] == ADDRESS_SIZE)
                {
                    // We have found a sequence of at least 2 addresses
                    AddressSequence seq = new AddressSequence
                    {
                        addrLocationListStartIdx = i,
                        numAddressInSeq          = 2
                    };
                    i++;

                    while (i + 1 < addressLocs.Count)
                    {
                        if (addressLocs[i + 1] - addressLocs[i] == ADDRESS_SIZE)
                        {
                            // We have found another sequence to add.
                            seq.numAddressInSeq++;
                            i++;
                        }
                        else
                        {
                            // The consecutive sequence ends.
                            break;
                        }
                    }

                    // Check if there are more than 2 addresses in a sequence.
                    if (seq.numAddressInSeq > 2)
                    {
                        // Add the sequence to the list of sequences.
                        sequences.Add(seq);
                    }
                }
            }

            return(sequences);
        }
        private static List <AddressSequence> DetectAddressSequenceRuns(IList <int> addressLocations)
        {
            var sequences = new List <AddressSequence>();

            for (int addressIndex = 0; addressIndex < addressLocations.Count; addressIndex++)
            {
                // There can't be any more sequences if we're on the last iteration
                if (addressIndex + 1 == addressLocations.Count)
                {
                    break;
                }

                if (addressLocations[addressIndex + 1] - addressLocations[addressIndex] == ADDRESS_SIZE)
                {
                    // We have found a sequence of at least 2 addresses
                    var seq = new AddressSequence
                    {
                        ListStartIndex = addressIndex++,
                        Length         = 2
                    };

                    while (addressIndex + 1 < addressLocations.Count)
                    {
                        if (addressLocations[addressIndex + 1] - addressLocations[addressIndex] == ADDRESS_SIZE)
                        {
                            // We have found another sequence to add.
                            seq.Length++;
                            addressIndex++;
                        }
                        else
                        {
                            // The consecutive sequence ends.
                            --addressIndex;
                            break;
                        }
                    }

                    // Check if there are more than 2 addresses in a sequence.
                    if (seq.Length > 2)
                    {
                        // Add the sequence to the list of sequences.
                        sequences.Add(seq);
                    }
                }
            }

            return(sequences);
        }
        private static List<AddressSequence> DetectAddressSequenceRuns(IList<int> addressLocs)
        {
            List<AddressSequence> sequences = new List<AddressSequence>();

            for (int i = 0; i < addressLocs.Count; i++)
            {
                // There can't be any more sequences if we're on the last iteration
                if (i + 1 == addressLocs.Count)
                {
                    break;
                }

                if (addressLocs[i + 1] - addressLocs[i] == ADDRESS_SIZE)
                {
                    // We have found a sequence of at least 2 addresses
                    AddressSequence seq = new AddressSequence
                    {
                        addrLocationListStartIdx = i,
                        numAddressInSeq = 2
                    };
                    i++;
        
                    while (i + 1 < addressLocs.Count)
                    {
                        if (addressLocs[i + 1] - addressLocs[i] == ADDRESS_SIZE)
                        {
                            // We have found another sequence to add.
                            seq.numAddressInSeq++;
                            i++;
                        }
                        else
                        {
                            // The consecutive sequence ends.
                            break;
                        }
                    }

                    // Check if there are more than 2 addresses in a sequence.
                    if (seq.numAddressInSeq > 2)
                    {
                        // Add the sequence to the list of sequences.
                        sequences.Add(seq);
                    }
                }
            }

            return sequences;
        }