def do_create_subject(self, subject_context):
        """
        By the time this method is invoked, all possible
        ``SubjectContext`` data (session, identifiers, et. al.) has been made
        accessible using all known heuristics.

        :returns: a Subject instance reflecting the data in the specified
                  SubjectContext data map
        """
        security_manager = subject_context.resolve_security_manager()
        session = subject_context.resolve_session()
        session_creation_enabled = subject_context.session_creation_enabled

        # passing the session arg is new to yosai, eliminating redunant
        # get_session calls:
        identifiers = subject_context.resolve_identifiers(session)
        remembered = getattr(subject_context, 'remembered', False)
        authenticated = subject_context.resolve_authenticated(session)
        host = subject_context.resolve_host(session)

        return DelegatingSubject(identifiers=identifiers,
                                 remembered=remembered,
                                 authenticated=authenticated,
                                 host=host,
                                 session=session,
                                 session_creation_enabled=session_creation_enabled,
                                 security_manager=security_manager)