private Object arbitrary(Type paramType, int position, 
                             Random random, long size)
    {
        Gen<?> generator = genCache.get(Pair.make(paramType, position));
        if (generator == null) {
            generator = generator(paramType, position);
            genCache.put(Pair.make(paramType, position), generator);
        }

        return generator.arbitrary(random, size);
    }