           expect(Example::foo).toBeUndefined() # wasn't mixed in!
           expect(mix_opts.premixing_hook).toHaveBeenCalledWith(['arg1', 'arg2'])
 
+      it 'should invoke a mixin pre-mixing hook before mixing in', ->
+
+      it 'should invoke an options pre-mixing hook before a mixin pre-mixing hook', ->
+
     describe 'post-mixing hooks', ->
 
       beforeEach ->
         @mixin = MIXINS.default_mixin()
 
-      it 'should invoke a post-mixing hook with the prototype context', ->
+      it 'should invoke an options post-mixing hook with the prototype context', ->
         mix_opts = {postmixing_hook: ->}
         spyOn(mix_opts, 'postmixing_hook').and.callThrough()
 

        finally
          expect(threw).toBe true
          expect(Example::bar).toBe 1 # was mixed in!

  describe 'protomixing options', ->


        expect(object).toBe(Example::)
        expect(args...).toEqual(['arg1', 'arg2'])

      it 'should invoke a mixin post-mixing hook with the prototype context', ->

      it 'should invoke an options post-mixing hook after mixing in', ->
        mix_opts = {postmixing_hook: ->}
        error = new Error
        threw = false
