func (matcher *PgMatcher) Match(c byte) bool {
	binMatched := matcher.binaryMatcher.Match(c)
	return binMatched
}
Match returns true if pgMatcher or binaryMatcher has ZONE_ID block inside c bytes
package zone
var (
	ZoneTagSymbol     byte = 'D'
	ZoneIDBegin            = []byte{ZoneTagSymbol, ZoneTagSymbol, ZoneTagSymbol, ZoneTagSymbol, ZoneTagSymbol, ZoneTagSymbol, ZoneTagSymbol, ZoneTagSymbol}
	ZoneTagLength          = len(ZoneIDBegin)
	ZoneIDLength           = 16
	ZoneIDBlockLength      = int(ZoneTagLength + ZoneIDLength)
)
type DbByteReader interface {
	ReadByte(c byte) (bool, byte, error)
	GetBuffered() []byte
	Reset()
}
type MatcherFactory interface {
	createMatcher() matcher
}
type PgMatcherFactory struct{}
func NewPgMatcherFactory() MatcherFactory {
	return &PgMatcherFactory{}
}
func (*PgMatcherFactory) createMatcher() matcher {
	return newPgMatcher(NewBinaryByteReader())
}
type matcher interface {
	Match(byte) bool
	Reset()
	GetZoneID() []byte
	IsMatched() bool
	HasAnyMatch() bool
}
type PgMatcher struct {
	binaryMatcher matcher
}
func newPgMatcher(dbReader DbByteReader) matcher {
	return &PgMatcher{
		binaryMatcher: newBaseMatcher(NewBinaryByteReader()),
	}
}