public synchronized boolean remove(T item){
  int pos=getPos(item);
  if (pos < 0)   return false;
  int oldLength=array.length;
  int newLength=oldLength - 1;
  T newArray[]=createArray(newLength);
  if (pos > 0)   System.arraycopy(array,0,newArray,0,pos);
  if (pos < newLength)   System.arraycopy(array,pos + 1,newArray,pos,newLength - pos);
  array=newArray;
  return true;
}

public synchronized boolean remove ( T item ) { int pos = getPos ( item ) ; if ( pos < 0 ) return false ; int oldLength = array . length ; int newLength = oldLength - 1 ; T newArray [ ] = createArray ( newLength ) ; if ( pos > 0 ) System . arraycopy ( array , 0 , newArray , 0 , pos ) ; if ( pos < newLength ) System . arraycopy ( array , pos + 1 , newArray , pos , newLength - pos ) ; array = newArray ; return true ; }
removes the first occurance of the item . if the item is added multiple times , then it must be removed as many times .
