def strip
      stripped = @values.collect { |value| value.strip }
      return stripped.inject([]) { |vars,elem| vars + elem[0] },
           stripped.inject([]) { |values,elem| values + elem[1] },
           self.class.new(*stripped.collect { |elem| elem[2] })
    end
def strip
      stripped = @values.collect { |value| value.strip }
      return stripped.inject([]) { |vars,elem| vars + elem[0] },
           stripped.inject([]) { |values,elem| values + elem[1] },
           self.class.new(*stripped.collect { |elem| elem[2] })
    end
Strip of all values

 Split up into variables, values, and a term where all values have been
 replaced with variables.

 @return [Array<Array,Node>] Returns an array of variables, an array of
 values, and the term based on variables.

 @private