public boolean addAll(Collection<? extends T> c) {
		// the reason we have to write "? extends E" is because we don't really
		// care what class is passed in -- just as long as it inherits from type
		// T at some point.
		boolean retVal = false; // see official documentation for return value
								// specs
		for (T value : c) { // because c is a Collection, we can do this
							// (Collection implements *iterable*)
			if (this.add(value)) { // this performs the addition as well as
									// tells us if something changed
				retVal = true;
			}
		}

		return retVal;
	}