public Object arbitrary(Random random, long size)
    {
        int arraySize = (int) Arbitrary.random(random, 0, 
                                               Math.min(Integer.MAX_VALUE, size));
        int[] dimensions = new int[dimension];
        for (int i = 0; i < dimension; ++i) {
            dimensions[i] = arraySize;
        }

        Object array = Array.newInstance(componentClass, dimensions);
        fillArray(array, random, (int)size);
        
        return array;
    }