We need to know: - Will we always produce a BigInt32 (this could happen even when the inputs are HeapBigInt) - We will always produce a HeapBigInt (this could happen even when the inputs are always BigInt32) - When we produce both For example, we'll want some kind of Add on binaryUseKind(BigInt32) that speculates the result doesn't overflow, so it can say it results in BigInt32 definitively etc.