// Code generated by "stringer -type=SnapshotMetaRel"; DO NOT EDIT.

package statemgr

import "strconv"

func _() {
	// An "invalid array index" compiler error signifies that the constant values have changed.
	// Re-run the stringer command to generate them again.
	var x [1]struct{}
	_ = x[SnapshotOlder-60]
	_ = x[SnapshotNewer-62]
	_ = x[SnapshotEqual-61]
	_ = x[SnapshotUnrelated-33]
	_ = x[SnapshotLegacy-63]
}

const (
	_SnapshotMetaRel_name_0 = "SnapshotUnrelated"
	_SnapshotMetaRel_name_1 = "SnapshotOlderSnapshotEqualSnapshotNewerSnapshotLegacy"
)

var (
	_SnapshotMetaRel_index_1 = [...]uint8{0, 13, 26, 39, 53}
)

func (i SnapshotMetaRel) String() string {
	switch {
	case i == 33:
		return _SnapshotMetaRel_name_0
	case 60 <= i && i <= 63:
		i -= 60
		return _SnapshotMetaRel_name_1[_SnapshotMetaRel_index_1[i]:_SnapshotMetaRel_index_1[i+1]]
	default:
		return "SnapshotMetaRel(" + strconv.FormatInt(int64(i), 10) + ")"
	}
}
