class CubeId {

    @NonNull
    public static CubeId root(@NonNull String... dimensionIds) throws IllegalArgumentException {
        for (String o : dimensionIds) {
            if (o == null) {
                throw new IllegalArgumentException("Dimensions cannot be null");
            }
        }
        return dimensionIds.length == 0 ? VOID : new CubeId(dimensionIds.clone(), Arrays2.EMPTY_STRING_ARRAY);
    }

    private  CubeId(@NonNull String[] dimensionIds, @NonNull String[] dimensionsValues);

}