### Question:
ArrayList extends List<E> { @Override public int indexOf(E object) { int lastIndex = firstIndex + itemCount; if (object != null) { for (int i = firstIndex; i < lastIndex; i++) { if (object.equals(array[i])) { return i - firstIndex; } } } else { for (int i = firstIndex; i < lastIndex; i++) { if (array[i] == null) { return i - firstIndex; } } } return -1; } ArrayList();  ArrayList(int capacity);  ArrayList(Collection<E> collection);  ArrayList(E... args); @Override void add(int location, E object); @Override boolean add(E object); @Override boolean addAll(int location, Collection<? extends E> collection); @Override boolean addAll(Collection<? extends E> collection); @Override void clear(); @Override boolean contains(E object); void ensureCapacity(int minimumCapacity); @Override E get(int location); @Override int indexOf(E object); @Override boolean isEmpty(); @Override int lastIndexOf(E object); @Override Iterator<E> iterator(); @Override E remove(int location); @Override boolean remove(E object); @Override E set(int location, E object); @Override int size(); @Override Object[] toArray(); @Override void toArray(E[] contents); void sortInPlace(Comparator<E> comparator); void trimToSize();  }### Answer:
@Test public void testIndexOf() { assertEquals("Returned incorrect index", 87, alist.indexOf(objArray[87])); assertEquals("Returned index for invalid Object", -1, alist.indexOf(new Object())); alist.add(25, null); alist.add(50, null); assertTrue("Wrong indexOf for null. Wanted 25 got: " + alist.indexOf(null), alist.indexOf(null) == 25); }