@Override
    public Q get(int index) {
        if (cache.containsKey(index)) {
            return cache.get(index);
        } else {
            Q rv = create(index);
            cache.put(index, rv);
            return rv;
        }
    }
{@code ListPath} represents list paths

@author tiwe

@param <E> component type
@param <Q> result type for {@code get(int)} and {@code any()} results
querydsl-core/src/main/java/com/querydsl/core/types/dsl/ListPath.java