text: public boolean equals(Object obj) {if (obj == this) {return true;}if (obj instanceof AttributeSource) {AttributeSource other = (AttributeSource) obj;if (hasAttributes()) {if (!other.hasAttributes()) {return false;}if (this.attributeImpls.size() != other.attributeImpls.size()) {return false;}State thisState = this.getCurrentState();State otherState = other.getCurrentState();while (thisState != null && otherState != null) {if (otherState.attribute.getClass() != thisState.attribute.getClass() || !otherState.attribute.equals(thisState.attribute)) {return false;}thisState = thisState.next;otherState = otherState.next;}return true;} else {return !other.hasAttributes();}} else return false;}