public static <Type> LazyArray<Type> with(final ObjectProvider<? extends Type> provider, final Class<Type> forClass,
            final Iterable<? extends Type> values) {
        final LazyArray<Type> array = new LazyArray<Type>(provider, forClass);
        for (final Type value : values) {
            array.add(value);
        }
        return array;
    }
public static < Type > LazyArray < Type > with ( final ObjectProvider < ? extends Type > provider , final Class < Type > forClass , final Iterable < ? extends Type > values ) { final LazyArray < Type > array = new LazyArray < Type > ( provider , forClass ) ; for ( final Type value : values ) { array . add ( value ) ; } return array ; }
@param values will be appended to the array.
@param forClass type of stored values.
@param provider used to create elements when getter methods are called for empty indexes.
@return a new typed LazyArray with the passed values.
@param <Type> type of stored values.