private void findProbableRoutes() {
		ArrayList<StopAdapter> list = new ArrayList<>();
		if (mProbableRoutes.size() == 0) {
			mRejectedRoutes.clear();
		}
		synchronized (mStopHistory) {
			int index = mStopHistoryIndex;
			for (int i = 0; i < mStopHistory.size(); i++) {
				index = incIndex(index);
				if (mStopHistory.get(index) != null) {
					ListIterator li = mStopHistory.get(index).listIterator();
					while (li.hasNext()) {
						list.add((StopAdapter) li.next());
					}
				}
			}
		}

		HashSet<Route> probableCheck = new HashSet<>();

		// mProbableRoutes.clear();
		for (int i = 0; i < list.size() - 1; i++) {
			StopAdapter checkStop = list.get(i).getNextStop();
			for (int j = i + 1; j < list.size(); j++) {
				if (list.get(j) == checkStop) {
					probableCheck.add(checkStop.getRoute());
					list.remove(j);
					break;
				}
			}
		}

		// any old possibilities missing?
		HashSet<Route> probableClone = (HashSet<Route>) mProbableRoutes.clone();
		probableClone.removeAll(probableCheck);

		if (!probableClone.isEmpty()) {
			Iterator i = probableClone.iterator();
			while (i.hasNext()) {
				mRejectedRoutes.add((Route) i.next());
			}
		}

		mProbableRoutes.addAll(probableCheck);
		mProbableRoutes.removeAll(mRejectedRoutes);

	}