if ((obj != null) && obj instanceof User) { originalUser = (User) obj;
if ((obj != null) && obj instanceof UserDetails) { originalUser = (UserDetails) obj;
    protected Authentication attemptExitUser(HttpServletRequest request)        throws AuthenticationCredentialsNotFoundException {        // need to check to see if the current user has a SwitchUserGrantedAuthority        Authentication current = SecurityContextHolder.getContext()                                                      .getAuthentication();        if (null == current) {            throw new AuthenticationCredentialsNotFoundException(                "No current user associated with this request!");        }        // check to see if the current user did actual switch to another user        // if so, get the original source user so we can switch back        Authentication original = getSourceAuthentication(current);        if (original == null) {            logger.error("Could not find original user Authentication object!");            throw new AuthenticationCredentialsNotFoundException(                "Could not find original Authentication object!");        }        // get the source user details        UserDetails originalUser = null;        Object obj = original.getPrincipal();        if ((obj != null) && obj instanceof User) {            originalUser = (User) obj;        }        // publish event        if (this.context != null) {            context.publishEvent(new AuthenticationSwitchUserEvent(current,                    originalUser));        }        return original;    }