We can simplify mutating an authentication by adding a builder to each Authentication implementation:

public Builder<?> toBuilder()

This method will return a builder that is based off of the existing authentication instance.