def remember_order(self):
        """Verify that subsequent :func:`fudge.Fake.expects` are called in the right order.

        For example::

            >>> import fudge
            >>> db = fudge.Fake('db').remember_order().expects('insert').expects('update')
            >>> db.update()
            Traceback (most recent call last):
            ...
            AssertionError: Call #1 was fake:db.update(); Expected: #1 fake:db.insert(), #2 fake:db.update(), end
            >>> fudge.clear_expectations()

        When declaring multiple calls using :func:`fudge.Fake.next_call`, each subsequent call will be added
        to the expected order of calls ::

            >>> import fudge
            >>> sess = fudge.Fake("session").remember_order().expects("get_id").returns(1)
            >>> sess = sess.expects("set_id").with_args(5)
            >>> sess = sess.next_call(for_method="get_id").returns(5)

        Multiple calls to ``get_id()`` are now expected ::

            >>> sess.get_id()
            1
            >>> sess.set_id(5)
            >>> sess.get_id()
            5
            >>> fudge.verify()
            >>> fudge.clear_expectations()

        """
        if self._callable:
            raise FakeDeclarationError(
                    "remember_order() cannot be used for Fake(callable=True) or Fake(expect_call=True)")
        self._expected_call_order = ExpectedCallOrder(self)
        registry.remember_expected_call_order(self._expected_call_order)
        return self