Problema com subList()

Alguem sabe me dizer por que este código gera este erro?

public ArrayList<Item> pagina(int pagina, int quantidade){
        int fim = (pagina * quantidade);
        int inicio = (fim - (quantidade - 1)) - 1;
        return (ArrayList<Item>) registros.subList(inicio, fim);
}
Exception in thread "main" java.lang.ClassCastException: java.util.RandomAccessSubList cannot be cast to java.util.ArrayList

Porém segundo a documentação do JSE