@SuppressWarnings("unchecked")
    public ArrayList arbitrary(Random random, long size)
    {
        int length = (int) Arbitrary.random(random, 0, 
                                      Math.min(Integer.MAX_VALUE, size));
        ArrayList list = new ArrayList(length);
        for (int i = 0; i < length; ++i) {
            list.add(i, subGenerator.arbitrary(random, size));
        }
        
        return list;
    }