 
         result_exp = _ExpressionManipulator.build(expression_position.expression()).clone().
           withComponent(expression_position, (component)=>
-
             _ImplicitMultiplication.build(@comps).invokeD(component)
             component.appendD(@comps.build_exponentiation(base: base, power: power))
           ).value()


    class _OverrideIfOperatorOrAppend
      initialize: (@comps, @expression)->
      with: (operator)->
        last = @expression.last()
        if last && last.isOperator()
          if last instanceof @comps.classes.exponentiation
            if last.power().isBlank()
              @expression.replaceLast(operator)
            else
              @expression.append(operator)
          else
            @expression.replaceLast(operator)
        else
          @expression.append(operator)
    class_mixer(_OverrideIfOperatorOrAppend)



        @position = @pos.build(new_exp.last().id())
        new_exp

      perform: (expression_position)->
        expr = expression_position.expression()
        return expression_position if expr.isEmpty()

        result_exp = _ExpressionManipulator.build(expr).clone().
          withComponent(expression_position, (component)=>
            _OverrideIfOperatorOrAppend.build(@comps, component).withD(
              @comps.build_multiplication()
            )
          ).value()

        expression_position.clone(expression: result_exp)

    class_mixer(AppendMultiplication)

