 it_inserts_component_into_the_last_nested_open_expression = (specifics)->
   it "adds #{specifics.name} to the deepest final open expression", ->
     @exp = @exp_builder(open_expression: {open_expression: []})
-    exp = specifics.manipulator(@).invoke(@exp)
+    exp = specifics.manipulator.call(@).invoke(@exp)
     expected = specifics.should_equal_after(@exp_builder)
     expect(exp).toBeAnEqualExpressionTo expected
 


  describe "appending multiplication", ->
    it_plays_manipulation_role (test)->
      test.manip.append_multiplication.build()

    it "adds multiplication to the end of the expression", ->
      exp = @exp_builder(1)


    it_inserts_component_into_the_last_nested_open_expression(
      name: 'addition'
      manipulator: -> @manip.append_addition.build()
      should_equal_after: (builder)-> builder(open_expression: {open_expression: ['+']}))



  describe "appending subtraction", ->
    it_plays_manipulation_role (test)->
      @manip.append_subtraction.build()

    it "adds subtraction to the end of the expression", ->
      exp = @exp_builder(1)
      new_exp = @manip.append_subtraction.build().invoke(exp)
      expect(new_exp.last() instanceof @math.components.subtraction).toEqual true

    it_inserts_component_into_the_last_nested_open_expression(
      name: 'subtraction'
      manipulator: -> @manip.append_subtraction.build()
      should_equal_after: (builder)-> builder(open_expression: {open_expression: ['-']}))

  describe "appending a decimal", ->
    it_plays_manipulation_role ->
      @manip.append_decimal.build(value: 5)

    it "correctly adds a decimal to the value", ->
      exp = @math.expression.build()
      exp = @manip.append_number.build(value: 1).invoke(exp)
      exp = @manip.append_decimal.build().invoke(exp)
      exp = @manip.append_number.build(value: 1).invoke(exp)
      @expect_value(exp, '1.1')

    it_inserts_component_into_the_last_nested_open_expression(
      name: 'decimal'
      manipulator: -> @manip.append_decimal.build()
      should_equal_after: (builder)-> builder(open_expression: {open_expression: ['0.']}))


  describe "square expression", ->
