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

        if (!(o instanceof ImplicitLinkedHashCollection))
            return false;

        ImplicitLinkedHashCollection<?> ilhs = (ImplicitLinkedHashCollection<?>) o;
        return this.valuesList().equals(ilhs.valuesList());
    }
Compares the specified object with this collection for equality. Two
{@code ImplicitLinkedHashCollection} objects are equal if they contain the
same elements (as determined by the element's {@code equals} method), and
those elements were inserted in the same order. Because
{@code ImplicitLinkedHashCollectionListIterator} iterates over the elements
in insertion order, it is sufficient to call {@code valuesList.equals}.

Note that {@link ImplicitLinkedHashMultiCollection} does not override
{@code equals} and uses this method as well. This means that two
{@code ImplicitLinkedHashMultiCollection} objects will be considered equal even
if they each contain two elements A and B such that A.equals(B) but A != B and
A and B have switched insertion positions between the two collections. This
is an acceptable definition of equality, because the collections are still
equal in terms of the order and value of each element.

@param o object to be compared for equality with this collection
@return true is the specified object is equal to this collection
clients/src/main/java/org/apache/kafka/common/utils/ImplicitLinkedHashCollection.java