@Override
	public boolean equals(Object o) {
		if (o == this) {
			return true;
		}

		if (!(o instanceof IntegerList)) {
			return false;
		}

		IntegerList other = (IntegerList)o;
		if (_size != other._size) {
			return false;
		}

		for (int i = 0; i < _size; i++) {
			if (_data[i] != other._data[i]) {
				return false;
			}
		}

		return true;
	}
Compares the specified object with this list for equality.  Returns
{@code true} if and only if the specified object is also an {@link IntegerList},
both lists have the same size, and all corresponding pairs of elements in
the two lists are equal.  In other words, two lists are defined to be
equal if they contain the same elements in the same order.
<p>
This implementation first checks if the specified object is this
list. If so, it returns {@code true}; if not, it checks if the
specified object is an {@link IntegerList}. If not, it returns {@code false};
if so, it checks the size of both lists. If the lists are not the same size,
it returns {@code false}; otherwise it iterates over both lists, comparing
corresponding pairs of elements.  If any comparison returns {@code false},
this method returns {@code false}.

@param o the object to be compared for equality with this list
@return {@code true} if the specified object is equal to this list
runtime/Java/src/org/antlr/v4/runtime/misc/IntegerList.java