An Implementation of Java ArrayList<E> which does not allow client code add null values