public static List<Integer> getOriginalIndexes(int samplingLevel)
    {
        List<Integer> originalIndexes = originalIndexCache.get(samplingLevel);
        if (originalIndexes != null)
            return originalIndexes;

        List<Integer> pattern = getSamplingPattern(BASE_SAMPLING_LEVEL).subList(0, BASE_SAMPLING_LEVEL - samplingLevel);
        originalIndexes = new ArrayList<>(samplingLevel);
        for (int j = 0; j < BASE_SAMPLING_LEVEL; j++)
        {
            if (!pattern.contains(j))
                originalIndexes.add(j);
        }

        originalIndexCache.put(samplingLevel, originalIndexes);
        return originalIndexes;
    }
public static List < Integer > getOriginalIndexes ( int samplingLevel ) { List < Integer > originalIndexes = originalIndexCache . get ( samplingLevel ) ; if ( originalIndexes != null ) return originalIndexes ; List < Integer > pattern = getSamplingPattern ( BASE_SAMPLING_LEVEL ) . subList ( 0 , BASE_SAMPLING_LEVEL - samplingLevel ) ; originalIndexes = new ArrayList < > ( samplingLevel ) ; for ( int j = 0 ; j < BASE_SAMPLING_LEVEL ; j ++ ) { if ( ! pattern . contains ( j ) ) originalIndexes . add ( j ) ; } originalIndexCache . put ( samplingLevel , originalIndexes ) ; return originalIndexes ; }
Returns a list that can be used to translate current index summary indexes to their original index before
downsampling.  (This repeats every `samplingLevel`, so that's how many entries we return.)

For example, if [0, 64] is returned, the current index summary entry at index 0 was originally
at index 0, and the current index 1 was originally at index 64.

@param samplingLevel the current sampling level for the index summary

@return a list of original indexes for current summary entries