func MessageWithDiff(actual, message, expected string) string {
	if TruncatedDiff && len(actual) >= truncateThreshold && len(expected) >= truncateThreshold {
		diffPoint := findFirstMismatch(actual, expected)
		formattedActual := truncateAndFormat(actual, diffPoint)
		formattedExpected := truncateAndFormat(expected, diffPoint)
		spacesBeforeFormattedMismatch := findFirstMismatch(formattedActual, formattedExpected)
		tabLength := 4
		spaceFromMessageToActual := tabLength + len("<string>: ") - len(message)
		padding := strings.Repeat(" ", spaceFromMessageToActual+spacesBeforeFormattedMismatch) + "|"
		return Message(formattedActual, message+padding, formattedExpected)
	}
	return Message(actual, message, expected)
}
/*

Generates a nicely formatted matcher success / failure message

Much like Message(...), but it attempts to pretty print diffs in strings

Expected
<string>: "...aaaaabaaaaa..."
to equal               |
<string>: "...aaaaazaaaaa..."
package format
import (
	"fmt"
	"reflect"
	"strconv"
	"strings"
	"time"
)
var MaxDepth = uint(10)
var UseStringerRepresentation = false
var PrintContextObjects = false
var TruncatedDiff = true
type Ctx interface {
	Deadline() (deadline time.Time, ok bool)
	Done() <-chan struct{}
	Err() error
	Value(key interface{}) interface{}
}
var contextType = reflect.TypeOf((*Ctx)(nil)).Elem()
var timeType = reflect.TypeOf(time.Time{})
var Indent = "    "
var longFormThreshold = 20
func Message(actual interface{}, message string, expected ...interface{}) string {
	if len(expected) == 0 {
		return fmt.Sprintf("Expected\n%s\n%s", Object(actual, 1), message)
	}
	return fmt.Sprintf("Expected\n%s\n%s\n%s", Object(actual, 1), message, Object(expected[0], 1))
}