class KerberosCredentials extends Credentials {
    private byte[] kerberosTicket;
    /**
     *
     */
    @Serial
    private static final long serialVersionUID = -4264156105410684508L;

    /**
     * <p>Constructor for KerberosCredentials.</p>
     *
     * @param kerberosTicket an array of {@link byte} objects
     */
    public KerberosCredentials(byte[] kerberosTicket) {
        this.kerberosTicket = kerberosTicket.clone();
    }

    /**
     * <p>getKerberosTicketAsString.</p>
     *
     * @return a {@link String} object
     */
    public String getKerberosTicketAsString() {
        return getTicketAsString(kerberosTicket);
    }

    /** {@inheritDoc} */
    @Override
    public boolean equals(Object o) {<FILL_FUNCTION_BODY>}

    /** {@inheritDoc} */
    @Override
    public int hashCode() {
        return kerberosTicket != null ? getTicketAsString(kerberosTicket).hashCode() : 0;
    }

    private String getTicketAsString(byte[] kerberosTicket) {
        return new String(kerberosTicket, StandardCharsets.UTF_8);
    }

    /**
     * <p>Getter for the field <code>kerberosTicket</code>.</p>
     *
     * @return an array of {@link byte} objects
     */
    public byte[] getKerberosTicket() {
        return kerberosTicket.clone();
    }
}

        if (this == o)
            return true;
        if (o == null || getClass() != o.getClass())
            return false;

        var that = (KerberosCredentials) o;

        return !(kerberosTicket != null ? !getTicketAsString(kerberosTicket).equals(getTicketAsString(that.kerberosTicket))
            : that.kerberosTicket != null);
    
<methods>public non-sealed void <init>() ,public boolean isForAuthentication() <variables>protected org.pac4j.core.logout.LogoutType logoutType,private static final long serialVersionUID,protected java.lang.String source,private org.pac4j.core.profile.UserProfile userProfile