public PrimIntegerSpec combine(PrimIntegerSpec other) {
		if (this == other) {
			return this;
		}
		if (myBitCount == UNLIMITED_BITS) {
			return this;
		}
		if (other.bitCount() == UNLIMITED_BITS) {
			return other;
		}
		if (myBitCount < other.bitCount()) {
			return other;
		}
		if (myBitCount > other.bitCount()) {
			return this;
		}
		if (amSigned == other.isSigned()) {
			return this;
		}
		/* here we get ad hoc since we need to expand to the next larger size */
		if (myBitCount == 8) {
			return PrimSpec.int16();
		}
		if (myBitCount == 16) {
			return PrimSpec.int32();
		}
		if (myBitCount == 32) {
			return PrimSpec.int64();
		}
		return PrimSpec.integerVar();
		/*
		udanax-top.st:34468:PrimIntegerSpec methodsFor: 'accessing'!
		{PrimIntegerSpec} combine: other {PrimIntegerSpec}
			"A spec whose range of values contains both ranges"
			
			self == other ifTrue: [^self].
			myBitCount == Int32Zero ifTrue: [^self].
			other bitCount == Int32Zero ifTrue: [^other].
			myBitCount < other bitCount ifTrue: [^other].
			myBitCount > other bitCount ifTrue: [^self].
			amSigned == other isSigned ifTrue: [^self].
			"here we get ad hoc since we need to expand to the next larger size"
			myBitCount == 8 ifTrue: [^PrimSpec int32].
			^PrimSpec integerVar!
		*/
	}