code: public synchronized int indexOf(Object o, int index) {
          if (o == null) {
              for (int i = index ; i < elementCount ; i++)
                  if (elementData[i]==null)
                      return i;
          } else {
              for (int i = index ; i < elementCount ; i++)
                  if (o.equals(elementData[i]))
                      return i;
          }
          return -1;
      }
docs: Returns the index of the first occurrence of the specified element in
  this vector, searching forwards from {@code index}, or returns -1 if
  the element is not found.
  More formally, returns the lowest index {@code i} such that
  <tt>(i&nbsp;&gt;=&nbsp;index&nbsp;&amp;&amp;&nbsp;(o==null&nbsp;?&nbsp;get(i)==null&nbsp;:&nbsp;o.equals(get(i))))</tt>,
  or -1 if there is no such index.
  
  @param o element to search for
  @param index index to start searching from
  @return the index of the first occurrence of the element in
  this vector at position {@code index} or later in the vector;
  {@code -1} if the element is not found.
  @throws IndexOutOfBoundsException if the specified index is negative
  @see     Object#equals(Object)