default Principal resolve(final Credential credential) throws Throwable {
        return resolve(credential, Optional.empty(), Optional.empty(), Optional.empty());
    }
Resolves a principal from the given credential using an arbitrary strategy.
Assumes no principal is already resolved by the authentication subsystem, etc.

@param credential Source credential.
@return the principal
@throws Throwable the throwable
api/cas-server-core-api-authentication/src/main/java/org/apereo/cas/authentication/principal/PrincipalResolver.java