func errorf(c ErrCode, fmtStr string, args ...interface{}) error {
	return &hashTreeError{
		code: c,
		s:    fmt.Sprintf(fmtStr, args...),
	}
}
func errorf(c ErrCode, fmtStr string, args ...interface{}) error {
	return &hashTreeError{
		code: c,
		s:    fmt.Sprintf(fmtStr, args...),
	}
}
func errorf ( c ErrCode , fmtStr string , args ... interface { } ) error { return & hashTreeError { code : c , s : fmt . Sprintf ( fmtStr , args ... ) , } }
// errorf is analogous to fmt.Errorf, but generates hashTreeErrors instead of
// errorStrings.
errorf is analogous to fmt . Errorf but generates hashTreeErrors instead of errorStrings .