func (m *MockMatcher) Add(fn MatchFunc) {
	m.Matchers = append(m.Matchers, fn)
}
Add adds a new function matcher.
package gock
import "net/http"
var MatchersHeader = []MatchFunc{
	MatchMethod,
	MatchScheme,
	MatchHost,
	MatchPath,
	MatchHeaders,
	MatchQueryParams,
	MatchPathParams,
}
var MatchersBody = []MatchFunc{
	MatchBody,
}
var Matchers = append(MatchersHeader, MatchersBody...)
var DefaultMatcher = NewMatcher()
type MatchFunc func(*http.Request, *Request) (bool, error)
type Matcher interface {
	Get() []MatchFunc
	Add(MatchFunc)
	Set([]MatchFunc)
	Flush()
	Match(*http.Request, *Request) (bool, error)
}
type MockMatcher struct {
	Matchers []MatchFunc
}
func NewMatcher() *MockMatcher {
	m := NewEmptyMatcher()
	for _, matchFn := range Matchers {
		m.Add(matchFn)
	}
	return m
}
func NewBasicMatcher() *MockMatcher {
	m := NewEmptyMatcher()
	for _, matchFn := range MatchersHeader {
		m.Add(matchFn)
	}
	return m
}
func NewEmptyMatcher() *MockMatcher {
	return &MockMatcher{Matchers: []MatchFunc{}}
}
func (m *MockMatcher) Get() []MatchFunc {
	mutex.Lock()
	defer mutex.Unlock()
	return m.Matchers
}