public void setType(Type otherType) {
		Type newType = otherType.intersection(type);
		if (type.equals(newType))
			return;
		if (newType == Type.tError && otherType != Type.tError) {
			GlobalOptions.err.println("setType: Type error in " + this
					+ ": merging " + type + " and " + otherType);
			if (parent != null)
				GlobalOptions.err.println("\tparent is " + parent);
			if ((GlobalOptions.debuggingFlags & GlobalOptions.DEBUG_TYPES) != 0)
				Thread.dumpStack();
		}
		type = newType;
		if (type != Type.tError)
			updateSubTypes();
	}