def strip
      meta_vars, meta_values, var = @index.strip
      vars1, values1, term1 = @value.subst( @index => var ).strip
      if @initial
        vars2, values2, term2 = @initial.strip
      else
        vars2, values2 = [], [], nil
      end
      vars3, values3, term3 = @block.strip
      return vars1 + vars2 + vars3 + meta_vars,
        values1 + values2 + values3 + meta_values,
        self.class.new( term1, var, term2, term3, @var1, @var2 )
    end
def strip
      meta_vars, meta_values, var = @index.strip
      vars1, values1, term1 = @value.subst( @index => var ).strip
      if @initial
        vars2, values2, term2 = @initial.strip
      else
        vars2, values2 = [], [], nil
      end
      vars3, values3, term3 = @block.strip
      return vars1 + vars2 + vars3 + meta_vars,
        values1 + values2 + values3 + meta_values,
        self.class.new( term1, var, term2, term3, @var1, @var2 )
    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