public static RollUpBitMask fromRolledupTagList(final String allTags, final String rolledUpTags) {
        if (allTags == null || allTags.length() == 0 || rolledUpTags == null || rolledUpTags.length() == 0) {
            return ZERO_MASK;
        }

        final List<String> allTagsList = Arrays.asList(allTags.split(","));
        final String[] rolledUpTagsList = rolledUpTags.split(",");
        final List<Integer> rolledUpTagPositions = new ArrayList<>();

        Collections.sort(allTagsList);

        for (final String rolledUpTag : rolledUpTagsList) {
            final int pos = allTagsList.indexOf(rolledUpTag);

            if (pos == -1) {
                throw new RuntimeException(
                        String.format("Rolled up tag [%s] could not be found in the full list of tags [%s]",
                                rolledUpTag, rolledUpTags));
            }

            rolledUpTagPositions.add(pos);
        }
        return fromTagPositions(rolledUpTagPositions);
    }
@param mask An array of length MASK_LENGTH containing values 0 or 1. A
            value of 1 at a position indicates that the tag at that
            position in the row key should have its values rolled up
@return
stroom-statistics/stroom-statistics-impl-sql/src/main/java/stroom/statistics/impl/sql/rollup/RollUpBitMask.java