private void groupBySourceAndAnalyze(Walk[] paths) {
        int curSource = -1;
        ArrayList<Walk> curSet = new ArrayList<Walk>();
        for(int j=0; j < paths.length; j++) {
            Walk w = paths[j];
            if (w.getSource() != curSource) {
                if (curSource != -1) processWalksFromSource(curSource, curSet);
                curSource = w.getSource();
                curSet = new ArrayList<Walk>();
            }
            curSet.add(w);
        }
        // Last
        processWalksFromSource(curSource, curSet);
    }