code: func howSimilar(a, b interface{}) int {
  	// TODO(bep) object equality fast path, but remember that
  	// we can get anytning in here.
  
  	as, ok1 := a.(string)
  	bs, ok2 := b.(string)
  
  	if ok1 && ok2 {
  		return howSimilarStrings(as, bs)
  	}
  
  	if ok1 != ok2 {
  		return 0
  	}
  
  	e1, ok1 := a.(compare.Eqer)
  	e2, ok2 := b.(compare.Eqer)
  	if ok1 && ok2 && e1.Eq(e2) {
  		return 100
  	}
  
  	pe1, pok1 := a.(compare.ProbablyEqer)
  	pe2, pok2 := b.(compare.ProbablyEqer)
  	if pok1 && pok2 && pe1.ProbablyEq(pe2) {
  		return 90
  	}
  
  	return 0
  }
docs: // howSimilar is a naive diff implementation that returns
  // a number between 0-100 indicating how similar a and b are.