@Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final StateAction other = (StateAction) obj;
        if (this.state != other.state && (this.state == null || !this.state.equals(other.state))) {
            return false;
        }
        if (this.action != other.action && (this.action == null || !this.action.equals(other.action))) {
            return false;
        }
        return true;
    }