code: func ObjectReflectDiff(a, b interface{}) string {
  	if a == nil && b == nil {
  		return "<no diffs>"
  	}
  	if a == nil {
  		return fmt.Sprintf("a is nil and b is not-nil")
  	}
  	if b == nil {
  		return fmt.Sprintf("a is not-nil and b is nil")
  	}
  	vA, vB := reflect.ValueOf(a), reflect.ValueOf(b)
  	if vA.Type() != vB.Type() {
  		return fmt.Sprintf("type A %T and type B %T do not match", a, b)
  	}
  	diffs := objectReflectDiff(field.NewPath("object"), vA, vB)
  	if len(diffs) == 0 {
  		return "<no diffs>"
  	}
  	out := []string{""}
  	for _, d := range diffs {
  		elidedA, elidedB := limit(d.a, d.b, 80)
  		out = append(out,
  			fmt.Sprintf("%s:", d.path),
  			fmt.Sprintf("  a: %s", elidedA),
  			fmt.Sprintf("  b: %s", elidedB),
  		)
  	}
  	return strings.Join(out, "\n")
  }
docs: // ObjectReflectDiff returns a multi-line formatted diff between two objects
  // of equal type. If an object with private fields is passed you will
  // only see string comparison for those fields. Otherwise this presents the
  // most human friendly diff of two structs of equal type in this package.