def join(separator = '')
      @tokens = @tokens.inject([]) do |a,b|
        if a[-1].is_a?(::String) && b.is_a?(::String)
          a[-1] = [a[-1], b].join(separator)
        else
          a << b
        end
        a
      end
      self
    end
def join(separator = '')
      @tokens = @tokens.inject([]) do |a,b|
        if a[-1].is_a?(::String) && b.is_a?(::String)
          a[-1] = [a[-1], b].join(separator)
        else
          a << b
        end
        a
      end
      self
    end
call-seq:
   Value.new('foo', 'bar').join #=> <'foobar'>
   Value.new(:foo, 'bar').join  #=> <:foo, 'bar'>

 @param {String} separator

 @return {Value} the instance with all consecutive String tokens joined