       convertSubExpression: (parts) ->
         exp = @expression_builder.build()
         for x in parts
-          exp = exp.append(@process(x))
+          converted_part = @process(x)
+          exp = exp.append(converted_part)
         exp
 
       convertObject: (object)->

          power: power
        )

      convertImplicitSubexp: (subexp_raw)->
        if typeof subexp_raw == "number"
          @expression_builder.build(expression: [@process(subexp_raw)])
        else if subexp_raw == null
          @expression_builder.build(expression: [])
        else
          @process(subexp_raw)



    class_mixer BuildExpressionFromJavascriptObject

    BuildExpressionFromJavascriptObject.buildExpression = ->
      builder = BuildExpressionFromJavascriptObject.build()
      arguments_as_array = Array.prototype.slice.call(arguments, 0)
      builder.process(arguments_as_array)

    return BuildExpressionFromJavascriptObject

                  @numberFromString(obj)
                else throw "STRING NOT IMPLEMENTED"
            when "object" then @convertObject(object_to_convert)
      process: logger().instrument(name: "Process", fn: proc_method)


      matchesNumberRegexp: (str)->
        str.search(/\d+/) != -1
