type term … func (x *term) String() string { … } // equal reports whether x and y represent the same type set. func (x *term) equal(y *term) bool { … } // union returns the union x ∪ y: zero, one, or two non-nil terms. func (x *term) union(y *term) (_, _ *term) { … } // intersect returns the intersection x ∩ y. func (x *term) intersect(y *term) *term { … } // includes reports whether t ∈ x. func (x *term) includes(t types.Type) bool { … } // subsetOf reports whether x ⊆ y. func (x *term) subsetOf(y *term) bool { … } // disjoint reports whether x ∩ y == ∅. // x.typ and y.typ must not be nil. func (x *term) disjoint(y *term) bool { … }