public static void removeDupesHeadside(Vector someVector) {
	
		// we'll be storing census info here
		TreeSet censusTree = new TreeSet() ;
		if (censusTree == null) {
			return ;
		} // end if
		
		// grab the vector's starting size
		int size = someVector.size() ;
		
		// starting at the tail
		int position = size - 1;
		
		// local var to hold each vector element;s hashcode
		Integer hash = null ;
		
		// until we get all the way to the head
		while (position >= 0) {
			
			// grab the element's hashcode
			hash = new Integer(someVector.get(position).hashCode()) ;
			
			// if this element's hashcode isn't in the tree yet
			if (! censusTree.contains(hash)) {
				
				// add it to the tree
				censusTree.add(hash) ;
				
			// else this is a dupe
			} else {
				// slide more tailward elements headwards
				moveElementsHeadward(someVector, position + 1, size-1, 1) ;
				
				// that crushes the dupe
				
				// our size just shrunk
				size-- ;
				
			} // end if-else notIn-isDupe
			
			// next !
			position-- ;
			
		} // end while
		
		// okay, any dupes are gone
		
		// if our size changed ...
		if (size < someVector.size()) {
			
			// resize
			someVector.setSize(size) ;
			
			// setSize cuts off from the tail end
			// which is correct, since we slid uniques headwards
				
		} // end if our size changed
			
	} // end method removeDupesHeadside