 
               param.apply(_this, args)
 
+              if isLast
+                jasmine.GWT.runHook('After', _this)
+
           args = []
 
           if param?
             if typeof param == "function"
-              runCode(param, isLast)
+              runCode(param, index)
               continue
             else
               args = [ param ]

              )

              jasmine.getEnv().currentSpec.addMatcherResult(fakeResult)

        jasmine.GWT.runHook('After', _this)

  allStatements: =>
    allStatements = []

      describe scenarioName, ->
        _this.spies_ = []

        for index in [ 0..._statements.length ]
          [ type, name, param ] = _statements[index]

          _this._type = type
          _this._name = name

          runCode = (param, index, args = []) ->
            isLast = (index + 1) == _statements.length
            isFirst = (index == 0)

            it "#{type} #{name}", ->
              if isFirst
                jasmine.GWT.runHook('Before', _this)

              this.spyOn = (args...) ->
                this.spies_ = _this.spies_
                jasmine.Spec.prototype.spyOn.apply(this, args)
