estimate= estimate.restrictedTo(computeInitialTypeEstimate(contributing[index]));
estimate= estimate.restrictedTo(computeTypeEstimate(contributing[index]));
	private void computeTypeEstimates(final Collection variables) {		ConstraintVariable2 variable= null;		for (final Iterator iterator= variables.iterator(); iterator.hasNext();) {			variable= (ConstraintVariable2) iterator.next();			TypeEquivalenceSet set= variable.getTypeEquivalenceSet();			if (set == null) {				set= new TypeEquivalenceSet(variable);				set.setTypeEstimate(computeInitialTypeEstimate(variable));				variable.setTypeEquivalenceSet(set);			} else {				ITypeSet estimate= variable.getTypeEstimate();				if (estimate == null) {					final ConstraintVariable2[] contributing= set.getContributingVariables();					estimate= SuperTypeSet.getUniverse();					for (int index= 0; index < contributing.length; index++)						estimate= estimate.restrictedTo(computeInitialTypeEstimate(contributing[index]));					set.setTypeEstimate(estimate);				}			}		}	}