func HasStructCycles(t *Type) bool {
	return hasStructCycles(t, nil)
}
HasStructCycles determines if the type contains any struct cycles.
package types
import (
	"github.com/attic-labs/noms/go/hash"
)
type Type struct {
	Desc TypeDesc
}
func newType(desc TypeDesc) *Type {
	return &Type{desc}
}
func (t *Type) Describe() (out string) {
	return EncodedValue(t)
}
func (t *Type) TargetKind() NomsKind {
	return t.Desc.Kind()
}
func (t *Type) Value() Value {
	return t
}
func (t *Type) Equals(other Value) (res bool) {
	if t == other {
		return true
	}
	if otherType, ok := other.(*Type); ok {
		return t.TargetKind() == otherType.TargetKind() && t.Hash() == other.Hash()
	}
	return false
}
func (t *Type) Less(other Value) (res bool) {
	return valueLess(t, other)
}
func (t *Type) Hash() hash.Hash {
	return getHash(t)
}
func (t *Type) writeTo(w nomsWriter) {
	TypeKind.writeTo(w)
	t.writeToAsType(w, map[string]*Type{})
}
func (t *Type) writeToAsType(w nomsWriter, seensStructs map[string]*Type) {
	t.Desc.writeTo(w, t, seensStructs)
}
func (t *Type) WalkValues(cb ValueCallback) {
	t.Desc.walkValues(cb)
}
func (t *Type) WalkRefs(cb RefCallback) {
	return
}
func (t *Type) typeOf() *Type {
	return TypeType
}
func (t *Type) Kind() NomsKind {
	return TypeKind
}
func (t *Type) valueReadWriter() ValueReadWriter {
	return nil
}
func TypeOf(v Value) *Type {
	return simplifyType(v.typeOf(), false)
}