if (fType.canAssignTo(tuple.fSuperType))
final TType rightErasure= tuple.fSuperType.getErasure(); if (leftErasure.isGenericType() || rightErasure.isGenericType()) { if (rightErasure.equals(leftErasure) || ((HierarchyType) leftErasure).isSubType((HierarchyType) rightErasure)) return this; } if (leftErasure.canAssignTo(rightErasure))
		public final ITypeSet restrictedTo(final ITypeSet set) {			if (set instanceof SuperTypeUniverse) {				return this;			} else if (set instanceof SuperTypeSingletonSet) {				if (this == set)					return this;				final SuperTypeSingletonSet singleton= (SuperTypeSingletonSet) set;				if (fType.canAssignTo(singleton.fType))					return this;				return SuperTypeSet.getEmpty();			} else if (set instanceof SuperTypeTuple) {				final SuperTypeTuple tuple= (SuperTypeTuple) set;				if (fType.canAssignTo(tuple.fSuperType))					return this;				return SuperTypeSet.createTypeSet(tuple.fSubType);			} else if (set instanceof SuperTypeEmptySet) {				return set;			} else				Assert.isTrue(false);			return null;		}