class AlterRoleRequest extends AcknowledgedRequest<AlterRoleRequest> {

    private final String roleName;
    private final SecureHash secureHash;

    @Nullable
    private final JwtProperties jwtProperties;

    private final boolean resetPassword;

    private final boolean resetJwtProperties;


    public AlterRoleRequest(String roleName,
                            @Nullable SecureHash secureHash,
                            @Nullable JwtProperties jwtProperties,
                            boolean resetPassword,
                            boolean resetJwtProperties) {
        this.roleName = roleName;
        this.secureHash = secureHash;
        this.jwtProperties = jwtProperties;
        this.resetPassword = resetPassword;
        this.resetJwtProperties = resetJwtProperties;
    }

    public String roleName() {
        return roleName;
    }

    @Nullable
    public SecureHash secureHash() {
        return secureHash;
    }

    @Nullable
    public JwtProperties jwtProperties() {
        return jwtProperties;
    }

    public boolean resetPassword() {
        return resetPassword;
    }

    public boolean resetJwtProperties() {
        return resetJwtProperties;
    }

    public AlterRoleRequest(StreamInput in) throws IOException {
        super(in);
        roleName = in.readString();
        secureHash = in.readOptionalWriteable(SecureHash::readFrom);
        if (in.getVersion().onOrAfter(Version.V_5_7_0)) {
            this.jwtProperties = in.readOptionalWriteable(JwtProperties::readFrom);
            this.resetPassword = in.readBoolean();
            this.resetJwtProperties = in.readBoolean();
        } else {
            this.jwtProperties = null;
            this.resetPassword = false;
            this.resetJwtProperties = false;
        }
    }

    @Override
    public void writeTo(StreamOutput out) throws IOException {<FILL_FUNCTION_BODY>}
}

        super.writeTo(out);
        out.writeString(roleName);
        out.writeOptionalWriteable(secureHash);
        if (out.getVersion().onOrAfter(Version.V_5_7_0)) {
            out.writeOptionalWriteable(jwtProperties);
            out.writeBoolean(resetPassword);
            out.writeBoolean(resetJwtProperties);
        }
    
<methods>public void <init>(org.elasticsearch.common.io.stream.StreamInput) throws java.io.IOException,public io.crate.common.unit.TimeValue ackTimeout() ,public final io.crate.role.AlterRoleRequest timeout(java.lang.String) ,public final io.crate.role.AlterRoleRequest timeout(io.crate.common.unit.TimeValue) ,public final io.crate.common.unit.TimeValue timeout() ,public void writeTo(org.elasticsearch.common.io.stream.StreamOutput) throws java.io.IOException<variables>public static final io.crate.common.unit.TimeValue DEFAULT_ACK_TIMEOUT,protected io.crate.common.unit.TimeValue timeout