func (a *Args) similar(r *Args, similar Similarity) bool {
	if a.Elided != r.Elided || len(a.Values) != len(r.Values) {
		return false
	}
	if similar == AnyValue {
		return true
	}
	for i, l := range a.Values {
		switch similar {
		case ExactFlags, ExactLines:
			if l != r.Values[i] {
				return false
			}
		default:
			if l.IsPtr() != r.Values[i].IsPtr() || (!l.IsPtr() && l != r.Values[i]) {
				return false
			}
		}
	}
	return true
}
func (a *Args) similar(r *Args, similar Similarity) bool {
	if a.Elided != r.Elided || len(a.Values) != len(r.Values) {
		return false
	}
	if similar == AnyValue {
		return true
	}
	for i, l := range a.Values {
		switch similar {
		case ExactFlags, ExactLines:
			if l != r.Values[i] {
				return false
			}
		default:
			if l.IsPtr() != r.Values[i].IsPtr() || (!l.IsPtr() && l != r.Values[i]) {
				return false
			}
		}
	}
	return true
}
func ( a * Args ) similar ( r * Args , similar Similarity ) bool { if a . Elided != r . Elided || len ( a . Values ) != len ( r . Values ) { return false } if similar == AnyValue { return true } for i , l := range a . Values { switch similar { case ExactFlags , ExactLines : if l != r . Values [ i ] { return false } default : if l . IsPtr ( ) != r . Values [ i ] . IsPtr ( ) || ( ! l . IsPtr ( ) && l != r . Values [ i ] ) { return false } } } return true }
// similar returns true if the two Args are equal or almost but not quite
// equal.
similar returns true if the two Args are equal or almost but not quite equal .