class STSIssuedTokenState {

    @Override
    public boolean equals(Object other) {
        if (this == other) {
            return true;
        }
        if (other instanceof STSIssuedTokenState) {
            STSIssuedTokenState otherState = (STSIssuedTokenState)other;
            return this.expirationTimeInSecondsFromEpoch == otherState.expirationTimeInSecondsFromEpoch &&
                    Objects.equal(this.principalName, otherState.principalName) &&
                    Objects.equal(this.stsId, otherState.stsId) &&
                    Objects.equal(this.tokenId, otherState.tokenId) &&
                    Objects.equal(this.tokenType, otherState.tokenType);
        }
        return false;
    }

    private  STSIssuedTokenState(STSIssuedTokenStateBuilder builder);

}