public T resume(String identifier) {
        if (identifier != null) {

            T session = sessions.get(identifier);

            // Mark the session as pending. NOTE: Unless explicitly removed
            // from pending status via a call to reactivateSession(),
            // the next attempt to resume this session will fail
            if (pendingSessions.putIfAbsent(identifier, true) != null) {

                // If the session was already marked as pending, invalidate it
                invalidateSession(identifier);
                return null;

            }

            if (session != null && session.isValid())
                return session;
        }

        return null;

    }
Resumes the Guacamole side of the authentication process that was
previously deferred through a call to defer(). Once invoked, the
provided value ceases to be valid for future calls to resume().

@param identifier
    The unique string returned by the call to defer(). For convenience,
    this value may safely be null.

@return
    The {@link AuthenticationSession} originally provided when defer()
    was invoked, or null if the session is no longer valid or no such
    value was returned by defer().
guacamole-ext/src/main/java/org/apache/guacamole/net/auth/AuthenticationSessionManager.java