@Override
    public boolean equals(Object o) {
        if (o == this) {
            return true;
        } else if (!(o instanceof Shape)) {
            return false;
        } else if (hashCode() != o.hashCode()) {
            return false; // take advantage of hashcode caching
        }

        Shape other = (Shape) o;
        return getType() == other.getType()
                && getId().equals(other.getId())
                && getMemberNames().equals(other.getMemberNames())
                && getAllMembers().equals(other.getAllMembers())
                && getAllTraits().equals(other.getAllTraits())
                && mixins.equals(other.mixins);
    }
Gets the traits introduced by the shape and not inherited
from mixins.

@return Returns the introduced traits.
smithy-model/src/main/java/software/amazon/smithy/model/shapes/Shape.java