@Override
	public boolean equals(Object o) {

		if (this == o)
			return true;

		if (!(o instanceof IList<?>))
			return false;

		IList<T> otherList = (IList<T>) o;
		if (this.length() != otherList.length()) {
			return false;
		}

		for (int i = 0; i < this.length(); i++)
			if (!this.get(i).equals(otherList.get(i)))
				return false;

		return true;

	}