# File lib/uri_template/rfc6570/expression.rb, line 81
    def expand_partial( vars )
      result = []
      follow_up = self.class::FOLLOW_UP
      var_specs = []
      @variable_specs.each do | var, expand , max_length |
        if vars.key? var
          unless var_specs.none?
            result.push( follow_up.new( var_specs ) )
            var_specs = []
          end
          unless result.none?
            result.push( Literal.new(self.class::SEPARATOR) )
          end
          one = Array(expand_one(var, vars[var], expand, max_length))
          result.push( Literal.new(one.join(self.class::SEPARATOR)))
        end
        var_specs << [var,expand,max_length]
      end
      if result.none?
        # no literal was emitted so far
        return [ self ]
      end
      unless self.class::PREFIX.empty? || empty_literals?( result )
        result.unshift( Literal.new(self.class::PREFIX) )
      end
      if var_specs.size != 0
        result.push( follow_up.new( var_specs ) )
      end
      return result
    end