code: func Equals(a interface{}, b interface{}) BoolPredicate {
  	return func() bool {
  		switch aval := a.(type) {
  		case string:
  			bval, ok := b.(string)
  			return ok && aval == bval
  		case []string:
  			bval, ok := b.([]string)
  			if !ok {
  				return false
  			}
  			if len(aval) != len(bval) {
  				return false
  			}
  			for i := range aval {
  				if aval[i] != bval[i] {
  					return false
  				}
  			}
  			return true
  		default:
  			return false
  		}
  	}
  }
docs: // Equals can compare complex objects, e.g. arrays of strings
  // and strings together