bson/src/main/org/bson/Document.java
public <T> List<T> getList(final Object key, final Class<T> clazz) {
        notNull("clazz", clazz);
        return constructValuesList(key, clazz, null);
    }
public <T> List<T> getList(final Object key, final Class<T> clazz) {
        notNull("clazz", clazz);
        return constructValuesList(key, clazz, null);
    }
public < T > List < T > getList ( final Object key , final Class < T > clazz ) { notNull ( "clazz" , clazz ) ; return constructValuesList ( key , clazz , null ) ; }
Gets the list value of the given key, casting the list elements to the given {@code Class<T>}.  This is useful to avoid having
casts in client code, though the effect is the same.

@param key   the key
@param clazz the non-null class to cast the list value to
@param <T>   the type of the class
@return the list value of the given key, or null if the instance does not contain this key.
@throws ClassCastException if the elements in the list value of the given key is not of type T or the value is not a list
@since 3.10
Gets the list value of the given key casting the list elements to the given { @code Class<T > } . This is useful to avoid having casts in client code though the effect is the same .