       when 'string'
         if desc.indexOf('.') is 0
           @noSpaceBeforeDescription = true
-          subject = @subject?[desc.replace '.', '']
           @ownSubjectBlock = => subject
+          owner = @subject
+          subject = owner?[desc.replace '.', '']
+          subject = subject.bind(owner) if typeof subject is 'function'
         else if desc.indexOf('::') is 0
           @noSpaceBeforeDescription = true
           subject = @subjectBlock?()::[desc[1..-1]]

  notInsideIt 'itsReturn'
  parentSubjectBlock = currentExampleGroup.subjectBlock
  spectacular.context 'returned value', ->
    spectacular.subject 'returnedValue', -> parentSubjectBlock?()()

    spectacular.it block



spectacular.withParameters = (args...) ->
  notInsideIt 'withParameters'

  spectacular.given 'parameters', -> args


spectacular.should = (matcher, neg=false) ->
  notOutsideIt 'should'
