func (p *Predicate) String() string {
	if p.anchor == nil {
		return fmt.Sprintf("%q@[]", p.id)
	}
	return fmt.Sprintf("%q@[%s]", p.id, p.anchor.Format(time.RFC3339Nano))
}
String returns the pretty printed version of the predicate.
package predicate
import (
	"bytes"
	"encoding/binary"
	"fmt"
	"strconv"
	"strings"
	"time"
	"github.com/pborman/uuid"
)
type Type uint8
const (
	Immutable Type = iota
	Temporal
)
func (t Type) String() string {
	switch t {
	case Immutable:
		return "IMMUTABLE"
	case Temporal:
		return "TEMPORAL"
	default:
		return "UNKNOWN"
	}
}
type ID string
func (i *ID) String() string {
	return string(*i)
}
type Predicate struct {
	id     ID
	anchor *time.Time
}