private List<String> marchingCompare(List<String> listA, List<String> listB) {
        List<String> result = new ArrayList<String>();

        int b = 0;
        int c = 0;
        String sb;
        int size = listB.size();

        for (String s : listA) {
            sb = listB.get(b);
            c = s.compareTo(sb);

            if (c == 0) {
                result.add(s);
            } else {
                while (true) {
                    if (c == 0) {
                        result.add(s);
                        b++;   //bump past this one in b list, too.
                        if (b >= size) {
                            return result;
                        }
                        break;
                    } else if (c < 0) {    // s < sb, means go get next x
                        break;
                    } else if (c > 0) {    // s > sb, means bump to next sb and try again.
                        b++;
                        if (b >= size) {
                            return result;
                        }
                        sb = listB.get(b);
                        c = s.compareTo(sb);
                        continue;
                    }
                }
            }
        }
        return result;
    }