getListSource().get(total) should be getListSource().getTotal(). The concrete implementation of listSource both extends ArrayList and implements the ListSource interface, which has a getTotal() method that returns an int (the intended method). Presumably since it also extends ArrayList, getListSource() is being cast to java.util.List, at which point the get() method is being called.

I think OGNL 2.6's interpretation of getListSource().getTotal() makes more sense here than calling the get() method on java.util.List.