Perform MIB variable ID conversion and notification objects expansion.

        Parameters
        ----------
        mibViewController : :py:class:`~pysnmp.smi.view.MibViewController`
            class instance representing MIB browsing functionality.

        Returns
        -------
        : :py:class:`~pysnmp.smi.rfc1902.NotificationType`
            reference to itself

        Raises
        ------
        SmiError
           In case of fatal MIB hanling errora

        Notes
        -----
        Calling this method might cause the following sequence of
        events (exact details depends on many factors):

        * :py:meth:`pysnmp.smi.rfc1902.ObjectIdentity.resolveWithMib` is called
        * MIB variables names are read from NOTIFICATION-TYPE->OBJECTS clause,
          :py:class:`~pysnmp.smi.rfc1902.ObjectType` instances are created
          from MIB variable OID and `indexInstance` suffix.
        * `objects` dictionary is queried for each MIB variable OID,
          acquired values are added to corresponding MIB variable

        Examples
        --------
        >>> notificationType = NotificationType(ObjectIdentity('IF-MIB', 'linkDown'))
        >>> notificationType.resolveWithMib(mibViewController)
        NotificationType(ObjectIdentity('IF-MIB', 'linkDown'), (), {})
        >>>

def resolveWithMib(self, mibViewController):
        """Perform MIB variable ID conversion and notification objects expansion.

        Parameters
        ----------
        mibViewController : :py:class:`~pysnmp.smi.view.MibViewController`
            class instance representing MIB browsing functionality.

        Returns
        -------
        : :py:class:`~pysnmp.smi.rfc1902.NotificationType`
            reference to itself

        Raises
        ------
        SmiError
           In case of fatal MIB hanling errora

        Notes
        -----
        Calling this method might cause the following sequence of
        events (exact details depends on many factors):

        * :py:meth:`pysnmp.smi.rfc1902.ObjectIdentity.resolveWithMib` is called
        * MIB variables names are read from NOTIFICATION-TYPE->OBJECTS clause,
          :py:class:`~pysnmp.smi.rfc1902.ObjectType` instances are created
          from MIB variable OID and `indexInstance` suffix.
        * `objects` dictionary is queried for each MIB variable OID,
          acquired values are added to corresponding MIB variable

        Examples
        --------
        >>> notificationType = NotificationType(ObjectIdentity('IF-MIB', 'linkDown'))
        >>> notificationType.resolveWithMib(mibViewController)
        NotificationType(ObjectIdentity('IF-MIB', 'linkDown'), (), {})
        >>>
        """
        if self._state & self.ST_CLEAN:
            return self

        self._objectIdentity.resolveWithMib(mibViewController)

        self._varBinds.append(
            ObjectType(ObjectIdentity(v2c.apiTrapPDU.snmpTrapOID),
                       self._objectIdentity).resolveWithMib(mibViewController))

        SmiNotificationType, = mibViewController.mibBuilder.importSymbols(
            'SNMPv2-SMI', 'NotificationType')

        mibNode = self._objectIdentity.getMibNode()

        varBindsLocation = {}

        if isinstance(mibNode, SmiNotificationType):

            for notificationObject in mibNode.getObjects():
                objectIdentity = ObjectIdentity(
                    *notificationObject + self._instanceIndex)

                objectIdentity.resolveWithMib(mibViewController)

                objectType = ObjectType(
                    objectIdentity, self._objects.get(
                        notificationObject, rfc1905.unSpecified))

                objectType.resolveWithMib(mibViewController)

                self._varBinds.append(objectType)

                varBindsLocation[objectIdentity] = len(self._varBinds) - 1

        else:
            debug.logger & debug.FLAG_MIB and debug.logger(
                'WARNING: MIB object %r is not NOTIFICATION-TYPE (MIB not '
                'loaded?)' % (self._objectIdentity,))

        for varBinds in self._additionalVarBinds:
            if not isinstance(varBinds, ObjectType):
                varBinds = ObjectType(ObjectIdentity(varBinds[0]), varBinds[1])

            varBinds.resolveWithMib(mibViewController)

            if varBinds[0] in varBindsLocation:
                self._varBinds[varBindsLocation[varBinds[0]]] = varBinds

            else:
                self._varBinds.append(varBinds)

        self._additionalVarBinds = []

        self._state |= self.ST_CLEAN

        debug.logger & debug.FLAG_MIB and debug.logger(
            'resolved %r into %r' % (self._objectIdentity, self._varBinds))

        return self