public static Set<List<Boolean>> getRollUpPermutationsAsBooleans(final int tagCount) {
        Set<List<Boolean>> resultSet = permsMap.get(tagCount);

        if (resultSet == null) {
            // not in our pre-computed map so build them and add them to the
            // cache

            // if multiple threads hit this at once then it just means some
            // brief duplicated effort, but they will both
            // get the same answer and the map will have the same values for the
            // keys being touched.
            resultSet = cacheRollUpPerms(tagCount);
        }
        return resultSet;
    }
@param tagCount The number of tags you want permutations for
@return A set of permutations for the passed number of tags, e.g. 2 => [
[false,false], [false,true], [true,false], [true,true] ]
stroom-statistics/stroom-statistics-impl-hbase/src/main/java/stroom/statistics/impl/hbase/rollup/RollUpBitMask.java