Переглянути джерело

Remove SemIR dump from `AssertSameType` int tests (#6705)

Dropping the SemIR dump significantly decreases the size of these test
files. This is a good tradeoff since the interesting signal from these
tests is provided by `AssertSameType` not causing an error.

```
...n/check/testdata/interop/cpp/builtins.llp64.carbon | 3152 ----------------------
...in/check/testdata/interop/cpp/builtins.lp64.carbon | 3328 ------------------------
2 files changed, 0 insertions(+), 6480 deletions(-)
```
Nicholas Bishop 2 місяців тому
батько
коміт
a465018fec

+ 0 - 3152
toolchain/check/testdata/interop/cpp/builtins.llp64.carbon

@@ -274,7 +274,6 @@ fn AssertSameType[T:! type](a: T, b: T) {}
 
 fn ArithmeticHeterogeneousLongLeftSide() {
   let b: i32 = 1;
-  //@dump-sem-ir-begin
   let x: Cpp.long = 1;
 
   AssertSameType(x + b, x);
@@ -295,7 +294,6 @@ fn ArithmeticHeterogeneousLongLeftSide() {
   AssertSameType(x * y, x);
   AssertSameType(x / y, x);
   AssertSameType(x % y, x);
-  //@dump-sem-ir-end
 }
 
 // --- arithmetic_heterogeneous_long_right_side.carbon
@@ -308,7 +306,6 @@ fn AssertSameType[T:! type](a: T, b: T) {}
 
 fn ArithmeticHeterogeneousLongRightSide() {
   let b: i32 = 1;
-  //@dump-sem-ir-begin
   let x: Cpp.long = 1;
   AssertSameType(b + x, x);
   AssertSameType(b - x, x);
@@ -328,7 +325,6 @@ fn ArithmeticHeterogeneousLongRightSide() {
   AssertSameType(y * x, x);
   AssertSameType(y / x, x);
   AssertSameType(y % x, x);
-  //@dump-sem-ir-end
 }
 
 // --- arithmetic_heterogeneous_long_and_i64.carbon
@@ -340,12 +336,10 @@ import Cpp;
 fn AssertSameType[T:! type](a: T, b: T) {}
 
 fn ArithmeticHeterogeneousLongAndI64() {
-  //@dump-sem-ir-begin
   let x: Cpp.long = 1;
   let y: i64 = 1;
   AssertSameType(x + y, y);
   AssertSameType(y + x, y);
-  //@dump-sem-ir-end
 }
 
 // --- fail_todo_arithmetic_heterogeneous_long_and_i16.carbon
@@ -405,7 +399,6 @@ import Cpp;
 fn AssertSameType[T:! type](a: T, b: T) {}
 
 fn BitWiseHomogeneousLong() {
-  //@dump-sem-ir-begin
   let a: Cpp.long = 1;
   let b: Cpp.long = 1;
   let c: Cpp.long = 1;
@@ -416,7 +409,6 @@ fn BitWiseHomogeneousLong() {
   AssertSameType(a ^ b, c);
   AssertSameType(a << b, c);
   AssertSameType(a >> b, c);
-  //@dump-sem-ir-end
 }
 
 // --- bitwise_heterogeneous_long_left_side.carbon
@@ -429,7 +421,6 @@ fn AssertSameType[T:! type](a: T, b: T) {}
 
 fn BitWiseHeterogeneousLongLeftSide() {
   let b: i32 = 1;
-  //@dump-sem-ir-begin
   let a: Cpp.long = 1;
 
   AssertSameType(a & b, a);
@@ -449,7 +440,6 @@ fn BitWiseHeterogeneousLongLeftSide() {
   AssertSameType(a ^ b, a);
   AssertSameType(a << b, a);
   AssertSameType(a >> b, a);
-  //@dump-sem-ir-end
 }
 
 // --- bitwise_heterogeneous_long_right_side.carbon
@@ -462,7 +452,6 @@ fn AssertSameType[T:! type](a: T, b: T) {}
 
 fn BitWiseHeterogeneousLongRightSide() {
   let b: i32 = 1;
-  //@dump-sem-ir-begin
   let a: Cpp.long = 1;
 
   AssertSameType(b & a, a);
@@ -482,7 +471,6 @@ fn BitWiseHeterogeneousLongRightSide() {
   AssertSameType(b ^ a, a);
   AssertSameType(b << a, a);
   AssertSameType(b >> a, a);
-  //@dump-sem-ir-end
 }
 
 // --- bitwise_heterogeneous_long_and_i64.carbon
@@ -494,13 +482,11 @@ import Cpp;
 fn AssertSameType[T:! type](a: T, b: T) {}
 
 fn BitWiseHeterogeneousLongAndI64() {
-  //@dump-sem-ir-begin
   let a: Cpp.long = 1;
   let b: i64 = 1;
 
   AssertSameType(a & b, b);
   AssertSameType(b & a, b);
-  //@dump-sem-ir-end
 }
 
 // --- fail_todo_bitwise_heterogeneous_long_and_i16.carbon
@@ -2964,3144 +2950,6 @@ fn CopyUnsignedLong() {
 // CHECK:STDOUT:   <elided>
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
-// CHECK:STDOUT: --- arithmetic_heterogeneous_long_left_side.carbon
-// CHECK:STDOUT:
-// CHECK:STDOUT: constants {
-// CHECK:STDOUT:   %AssertSameType.type: type = fn_type @AssertSameType [concrete]
-// CHECK:STDOUT:   %empty_tuple.type: type = tuple_type () [concrete]
-// CHECK:STDOUT:   %AssertSameType: %AssertSameType.type = struct_value () [concrete]
-// CHECK:STDOUT:   %int_32: Core.IntLiteral = int_value 32 [concrete]
-// CHECK:STDOUT:   %i32: type = class_type @Int, @Int(%int_32) [concrete]
-// CHECK:STDOUT:   %pattern_type.7ce: type = pattern_type %i32 [concrete]
-// CHECK:STDOUT:   %int_1.5b8: Core.IntLiteral = int_value 1 [concrete]
-// CHECK:STDOUT:   %ImplicitAs.type.e8c: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete]
-// CHECK:STDOUT:   %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete]
-// CHECK:STDOUT:   %To: Core.IntLiteral = symbolic_binding To, 0 [symbolic]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.4e6: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.1, @Core.IntLiteral.as.ImplicitAs.impl.b2d(%To) [symbolic]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.3c2: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.4e6 = struct_value () [symbolic]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness.6bc: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.74f, @Core.IntLiteral.as.ImplicitAs.impl.b2d(%int_32) [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e0d: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.1, @Core.IntLiteral.as.ImplicitAs.impl.b2d(%int_32) [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.0b5: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e0d = struct_value () [concrete]
-// CHECK:STDOUT:   %ImplicitAs.facet.b94: %ImplicitAs.type.e8c = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.6bc) [concrete]
-// CHECK:STDOUT:   %.863: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet.b94 [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.215: <bound method> = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.0b5 [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: <specific function> = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.0b5, @Core.IntLiteral.as.ImplicitAs.impl.Convert.1(%int_32) [concrete]
-// CHECK:STDOUT:   %bound_method: <bound method> = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete]
-// CHECK:STDOUT:   %int_1.5d2: %i32 = int_value 1 [concrete]
-// CHECK:STDOUT:   %Cpp.long: type = class_type @Long32 [concrete]
-// CHECK:STDOUT:   %pattern_type.68c: type = pattern_type %Cpp.long [concrete]
-// CHECK:STDOUT:   %ImplicitAs.type.819: type = facet_type <@ImplicitAs, @ImplicitAs(%Cpp.long)> [concrete]
-// CHECK:STDOUT:   %ImplicitAs.Convert.type.4c2: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Cpp.long) [concrete]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness.2ce: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.903 [concrete]
-// CHECK:STDOUT:   %ImplicitAs.facet.eed: %ImplicitAs.type.819 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.2ce) [concrete]
-// CHECK:STDOUT:   %.dad: type = fn_type_with_self_type %ImplicitAs.Convert.type.4c2, %ImplicitAs.facet.eed [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.b38: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.2 [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.b38 = struct_value () [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8: <bound method> = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a [concrete]
-// CHECK:STDOUT:   %int_1.5a4: %Cpp.long = int_value 1 [concrete]
-// CHECK:STDOUT:   %AddWith.type.452: type = facet_type <@AddWith, @AddWith(%i32)> [concrete]
-// CHECK:STDOUT:   %AddWith.Op.type.5eb: type = fn_type @AddWith.Op, @AddWith(%i32) [concrete]
-// CHECK:STDOUT:   %T.57d: %ImplicitAs.type.819 = symbolic_binding T, 0 [symbolic]
-// CHECK:STDOUT:   %Cpp.long.as.AddWith.impl.Op.type.b730f9.1: type = fn_type @Cpp.long.as.AddWith.impl.Op.1, @Cpp.long.as.AddWith.impl.c72(%T.57d) [symbolic]
-// CHECK:STDOUT:   %Cpp.long.as.AddWith.impl.Op.7ff34c.1: %Cpp.long.as.AddWith.impl.Op.type.b730f9.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %Cpp.long.as.AddWith.impl.Op.type.b730f9.2: type = fn_type @Cpp.long.as.AddWith.impl.Op.2, @Cpp.long.as.AddWith.impl.c72(%T.57d) [symbolic]
-// CHECK:STDOUT:   %Cpp.long.as.AddWith.impl.Op.7ff34c.2: %Cpp.long.as.AddWith.impl.Op.type.b730f9.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %AddWith.type.4c0: type = facet_type <@AddWith, @AddWith(Core.IntLiteral)> [concrete]
-// CHECK:STDOUT:   %AddWith.Op.type.0ee: type = fn_type @AddWith.Op, @AddWith(Core.IntLiteral) [concrete]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness.0fc: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.5ad [concrete]
-// CHECK:STDOUT:   %ImplicitAs.facet.174: %ImplicitAs.type.819 = facet_value %i32, (%ImplicitAs.impl_witness.0fc) [concrete]
-// CHECK:STDOUT:   %AddWith.impl_witness.403: <witness> = impl_witness imports.%AddWith.impl_witness_table.34e, @Cpp.long.as.AddWith.impl.c72(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.AddWith.impl.Op.type.3dbf51.1: type = fn_type @Cpp.long.as.AddWith.impl.Op.2, @Cpp.long.as.AddWith.impl.c72(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.AddWith.impl.Op.7beae3.1: %Cpp.long.as.AddWith.impl.Op.type.3dbf51.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.AddWith.impl.Op.type.3dbf51.2: type = fn_type @Cpp.long.as.AddWith.impl.Op.1, @Cpp.long.as.AddWith.impl.c72(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.AddWith.impl.Op.7beae3.2: %Cpp.long.as.AddWith.impl.Op.type.3dbf51.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %AddWith.facet.0df: %AddWith.type.452 = facet_value %Cpp.long, (%AddWith.impl_witness.403) [concrete]
-// CHECK:STDOUT:   %.ef1: type = fn_type_with_self_type %AddWith.Op.type.5eb, %AddWith.facet.0df [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.AddWith.impl.Op.specific_fn.88f499.1: <specific function> = specific_function %Cpp.long.as.AddWith.impl.Op.7beae3.2, @Cpp.long.as.AddWith.impl.Op.1(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %.c45: type = fn_type_with_self_type %ImplicitAs.Convert.type.4c2, %ImplicitAs.facet.174 [concrete]
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.type: type = fn_type @i32.as.ImplicitAs.impl.Convert [concrete]
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert: %i32.as.ImplicitAs.impl.Convert.type = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.AddWith.impl.Op.specific_fn.88f499.2: <specific function> = specific_function %Cpp.long.as.AddWith.impl.Op.7beae3.1, @Cpp.long.as.AddWith.impl.Op.2(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %AssertSameType.specific_fn: <specific function> = specific_function %AssertSameType, @AssertSameType(%Cpp.long) [concrete]
-// CHECK:STDOUT:   %SubWith.type.46f: type = facet_type <@SubWith, @SubWith(%i32)> [concrete]
-// CHECK:STDOUT:   %SubWith.Op.type.5b4: type = fn_type @SubWith.Op, @SubWith(%i32) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.SubWith.impl.Op.type.432302.1: type = fn_type @Cpp.long.as.SubWith.impl.Op.1, @Cpp.long.as.SubWith.impl.b84(%T.57d) [symbolic]
-// CHECK:STDOUT:   %Cpp.long.as.SubWith.impl.Op.42d8b9.1: %Cpp.long.as.SubWith.impl.Op.type.432302.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %Cpp.long.as.SubWith.impl.Op.type.432302.2: type = fn_type @Cpp.long.as.SubWith.impl.Op.2, @Cpp.long.as.SubWith.impl.b84(%T.57d) [symbolic]
-// CHECK:STDOUT:   %Cpp.long.as.SubWith.impl.Op.42d8b9.2: %Cpp.long.as.SubWith.impl.Op.type.432302.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %SubWith.type.a89: type = facet_type <@SubWith, @SubWith(Core.IntLiteral)> [concrete]
-// CHECK:STDOUT:   %SubWith.Op.type.95d: type = fn_type @SubWith.Op, @SubWith(Core.IntLiteral) [concrete]
-// CHECK:STDOUT:   %SubWith.impl_witness.bee: <witness> = impl_witness imports.%SubWith.impl_witness_table.694, @Cpp.long.as.SubWith.impl.b84(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.SubWith.impl.Op.type.5b2a81.1: type = fn_type @Cpp.long.as.SubWith.impl.Op.2, @Cpp.long.as.SubWith.impl.b84(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.SubWith.impl.Op.65b61c.1: %Cpp.long.as.SubWith.impl.Op.type.5b2a81.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.SubWith.impl.Op.type.5b2a81.2: type = fn_type @Cpp.long.as.SubWith.impl.Op.1, @Cpp.long.as.SubWith.impl.b84(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.SubWith.impl.Op.65b61c.2: %Cpp.long.as.SubWith.impl.Op.type.5b2a81.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %SubWith.facet.9b8: %SubWith.type.46f = facet_value %Cpp.long, (%SubWith.impl_witness.bee) [concrete]
-// CHECK:STDOUT:   %.494: type = fn_type_with_self_type %SubWith.Op.type.5b4, %SubWith.facet.9b8 [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.SubWith.impl.Op.specific_fn.8caeaa.1: <specific function> = specific_function %Cpp.long.as.SubWith.impl.Op.65b61c.2, @Cpp.long.as.SubWith.impl.Op.1(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.SubWith.impl.Op.specific_fn.8caeaa.2: <specific function> = specific_function %Cpp.long.as.SubWith.impl.Op.65b61c.1, @Cpp.long.as.SubWith.impl.Op.2(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %MulWith.type.5e7: type = facet_type <@MulWith, @MulWith(%i32)> [concrete]
-// CHECK:STDOUT:   %MulWith.Op.type.e00: type = fn_type @MulWith.Op, @MulWith(%i32) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.MulWith.impl.Op.type.4f6939.1: type = fn_type @Cpp.long.as.MulWith.impl.Op.1, @Cpp.long.as.MulWith.impl.c90(%T.57d) [symbolic]
-// CHECK:STDOUT:   %Cpp.long.as.MulWith.impl.Op.b232c0.1: %Cpp.long.as.MulWith.impl.Op.type.4f6939.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %Cpp.long.as.MulWith.impl.Op.type.4f6939.2: type = fn_type @Cpp.long.as.MulWith.impl.Op.2, @Cpp.long.as.MulWith.impl.c90(%T.57d) [symbolic]
-// CHECK:STDOUT:   %Cpp.long.as.MulWith.impl.Op.b232c0.2: %Cpp.long.as.MulWith.impl.Op.type.4f6939.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %MulWith.type.4ce: type = facet_type <@MulWith, @MulWith(Core.IntLiteral)> [concrete]
-// CHECK:STDOUT:   %MulWith.Op.type.ff6: type = fn_type @MulWith.Op, @MulWith(Core.IntLiteral) [concrete]
-// CHECK:STDOUT:   %MulWith.impl_witness.ba5: <witness> = impl_witness imports.%MulWith.impl_witness_table.6e7, @Cpp.long.as.MulWith.impl.c90(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.MulWith.impl.Op.type.ea5ff6.1: type = fn_type @Cpp.long.as.MulWith.impl.Op.2, @Cpp.long.as.MulWith.impl.c90(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.MulWith.impl.Op.f095b7.1: %Cpp.long.as.MulWith.impl.Op.type.ea5ff6.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.MulWith.impl.Op.type.ea5ff6.2: type = fn_type @Cpp.long.as.MulWith.impl.Op.1, @Cpp.long.as.MulWith.impl.c90(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.MulWith.impl.Op.f095b7.2: %Cpp.long.as.MulWith.impl.Op.type.ea5ff6.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %MulWith.facet.79b: %MulWith.type.5e7 = facet_value %Cpp.long, (%MulWith.impl_witness.ba5) [concrete]
-// CHECK:STDOUT:   %.057: type = fn_type_with_self_type %MulWith.Op.type.e00, %MulWith.facet.79b [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.MulWith.impl.Op.specific_fn.3be598.1: <specific function> = specific_function %Cpp.long.as.MulWith.impl.Op.f095b7.2, @Cpp.long.as.MulWith.impl.Op.1(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.MulWith.impl.Op.specific_fn.3be598.2: <specific function> = specific_function %Cpp.long.as.MulWith.impl.Op.f095b7.1, @Cpp.long.as.MulWith.impl.Op.2(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %DivWith.type.469: type = facet_type <@DivWith, @DivWith(%i32)> [concrete]
-// CHECK:STDOUT:   %DivWith.Op.type.c8e: type = fn_type @DivWith.Op, @DivWith(%i32) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.DivWith.impl.Op.type.9ce9b6.1: type = fn_type @Cpp.long.as.DivWith.impl.Op.1, @Cpp.long.as.DivWith.impl.0e5(%T.57d) [symbolic]
-// CHECK:STDOUT:   %Cpp.long.as.DivWith.impl.Op.e35fb3.1: %Cpp.long.as.DivWith.impl.Op.type.9ce9b6.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %Cpp.long.as.DivWith.impl.Op.type.9ce9b6.2: type = fn_type @Cpp.long.as.DivWith.impl.Op.2, @Cpp.long.as.DivWith.impl.0e5(%T.57d) [symbolic]
-// CHECK:STDOUT:   %Cpp.long.as.DivWith.impl.Op.e35fb3.2: %Cpp.long.as.DivWith.impl.Op.type.9ce9b6.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %DivWith.type.234: type = facet_type <@DivWith, @DivWith(Core.IntLiteral)> [concrete]
-// CHECK:STDOUT:   %DivWith.Op.type.c64: type = fn_type @DivWith.Op, @DivWith(Core.IntLiteral) [concrete]
-// CHECK:STDOUT:   %DivWith.impl_witness.30d: <witness> = impl_witness imports.%DivWith.impl_witness_table.bcf, @Cpp.long.as.DivWith.impl.0e5(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.DivWith.impl.Op.type.9156f2.1: type = fn_type @Cpp.long.as.DivWith.impl.Op.2, @Cpp.long.as.DivWith.impl.0e5(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.DivWith.impl.Op.d06e88.1: %Cpp.long.as.DivWith.impl.Op.type.9156f2.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.DivWith.impl.Op.type.9156f2.2: type = fn_type @Cpp.long.as.DivWith.impl.Op.1, @Cpp.long.as.DivWith.impl.0e5(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.DivWith.impl.Op.d06e88.2: %Cpp.long.as.DivWith.impl.Op.type.9156f2.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %DivWith.facet.4c5: %DivWith.type.469 = facet_value %Cpp.long, (%DivWith.impl_witness.30d) [concrete]
-// CHECK:STDOUT:   %.eec: type = fn_type_with_self_type %DivWith.Op.type.c8e, %DivWith.facet.4c5 [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.DivWith.impl.Op.specific_fn.6489e2.1: <specific function> = specific_function %Cpp.long.as.DivWith.impl.Op.d06e88.2, @Cpp.long.as.DivWith.impl.Op.1(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.DivWith.impl.Op.specific_fn.6489e2.2: <specific function> = specific_function %Cpp.long.as.DivWith.impl.Op.d06e88.1, @Cpp.long.as.DivWith.impl.Op.2(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %ModWith.type.8ca: type = facet_type <@ModWith, @ModWith(%i32)> [concrete]
-// CHECK:STDOUT:   %ModWith.Op.type.aee: type = fn_type @ModWith.Op, @ModWith(%i32) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.ModWith.impl.Op.type.4bf837.1: type = fn_type @Cpp.long.as.ModWith.impl.Op.1, @Cpp.long.as.ModWith.impl.0a5(%T.57d) [symbolic]
-// CHECK:STDOUT:   %Cpp.long.as.ModWith.impl.Op.0707cb.1: %Cpp.long.as.ModWith.impl.Op.type.4bf837.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %Cpp.long.as.ModWith.impl.Op.type.4bf837.2: type = fn_type @Cpp.long.as.ModWith.impl.Op.2, @Cpp.long.as.ModWith.impl.0a5(%T.57d) [symbolic]
-// CHECK:STDOUT:   %Cpp.long.as.ModWith.impl.Op.0707cb.2: %Cpp.long.as.ModWith.impl.Op.type.4bf837.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %ModWith.type.920: type = facet_type <@ModWith, @ModWith(Core.IntLiteral)> [concrete]
-// CHECK:STDOUT:   %ModWith.Op.type.295: type = fn_type @ModWith.Op, @ModWith(Core.IntLiteral) [concrete]
-// CHECK:STDOUT:   %ModWith.impl_witness.bd3: <witness> = impl_witness imports.%ModWith.impl_witness_table.9cf, @Cpp.long.as.ModWith.impl.0a5(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.ModWith.impl.Op.type.f6cdb5.1: type = fn_type @Cpp.long.as.ModWith.impl.Op.2, @Cpp.long.as.ModWith.impl.0a5(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.ModWith.impl.Op.6c7fa7.1: %Cpp.long.as.ModWith.impl.Op.type.f6cdb5.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.ModWith.impl.Op.type.f6cdb5.2: type = fn_type @Cpp.long.as.ModWith.impl.Op.1, @Cpp.long.as.ModWith.impl.0a5(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.ModWith.impl.Op.6c7fa7.2: %Cpp.long.as.ModWith.impl.Op.type.f6cdb5.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %ModWith.facet.e8e: %ModWith.type.8ca = facet_value %Cpp.long, (%ModWith.impl_witness.bd3) [concrete]
-// CHECK:STDOUT:   %.289: type = fn_type_with_self_type %ModWith.Op.type.aee, %ModWith.facet.e8e [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.ModWith.impl.Op.specific_fn.127c5b.1: <specific function> = specific_function %Cpp.long.as.ModWith.impl.Op.6c7fa7.2, @Cpp.long.as.ModWith.impl.Op.1(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.ModWith.impl.Op.specific_fn.127c5b.2: <specific function> = specific_function %Cpp.long.as.ModWith.impl.Op.6c7fa7.1, @Cpp.long.as.ModWith.impl.Op.2(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %AddWith.impl_witness.e6c: <witness> = impl_witness imports.%AddWith.impl_witness_table.34e, @Cpp.long.as.AddWith.impl.c72(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.AddWith.impl.Op.type.1ece0d.1: type = fn_type @Cpp.long.as.AddWith.impl.Op.2, @Cpp.long.as.AddWith.impl.c72(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.AddWith.impl.Op.0f2d31.1: %Cpp.long.as.AddWith.impl.Op.type.1ece0d.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.AddWith.impl.Op.type.1ece0d.2: type = fn_type @Cpp.long.as.AddWith.impl.Op.1, @Cpp.long.as.AddWith.impl.c72(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.AddWith.impl.Op.0f2d31.2: %Cpp.long.as.AddWith.impl.Op.type.1ece0d.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %AddWith.facet.993: %AddWith.type.4c0 = facet_value %Cpp.long, (%AddWith.impl_witness.e6c) [concrete]
-// CHECK:STDOUT:   %.784: type = fn_type_with_self_type %AddWith.Op.type.0ee, %AddWith.facet.993 [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.AddWith.impl.Op.specific_fn.063c7e.1: <specific function> = specific_function %Cpp.long.as.AddWith.impl.Op.0f2d31.2, @Cpp.long.as.AddWith.impl.Op.1(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.AddWith.impl.Op.specific_fn.063c7e.2: <specific function> = specific_function %Cpp.long.as.AddWith.impl.Op.0f2d31.1, @Cpp.long.as.AddWith.impl.Op.2(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %SubWith.impl_witness.dd6: <witness> = impl_witness imports.%SubWith.impl_witness_table.694, @Cpp.long.as.SubWith.impl.b84(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.SubWith.impl.Op.type.ef5597.1: type = fn_type @Cpp.long.as.SubWith.impl.Op.2, @Cpp.long.as.SubWith.impl.b84(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.SubWith.impl.Op.8a648c.1: %Cpp.long.as.SubWith.impl.Op.type.ef5597.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.SubWith.impl.Op.type.ef5597.2: type = fn_type @Cpp.long.as.SubWith.impl.Op.1, @Cpp.long.as.SubWith.impl.b84(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.SubWith.impl.Op.8a648c.2: %Cpp.long.as.SubWith.impl.Op.type.ef5597.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %SubWith.facet.eb2: %SubWith.type.a89 = facet_value %Cpp.long, (%SubWith.impl_witness.dd6) [concrete]
-// CHECK:STDOUT:   %.d5f: type = fn_type_with_self_type %SubWith.Op.type.95d, %SubWith.facet.eb2 [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.SubWith.impl.Op.specific_fn.0d5da2.1: <specific function> = specific_function %Cpp.long.as.SubWith.impl.Op.8a648c.2, @Cpp.long.as.SubWith.impl.Op.1(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.SubWith.impl.Op.specific_fn.0d5da2.2: <specific function> = specific_function %Cpp.long.as.SubWith.impl.Op.8a648c.1, @Cpp.long.as.SubWith.impl.Op.2(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %MulWith.impl_witness.135: <witness> = impl_witness imports.%MulWith.impl_witness_table.6e7, @Cpp.long.as.MulWith.impl.c90(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.MulWith.impl.Op.type.8651ed.1: type = fn_type @Cpp.long.as.MulWith.impl.Op.2, @Cpp.long.as.MulWith.impl.c90(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.MulWith.impl.Op.17c39d.1: %Cpp.long.as.MulWith.impl.Op.type.8651ed.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.MulWith.impl.Op.type.8651ed.2: type = fn_type @Cpp.long.as.MulWith.impl.Op.1, @Cpp.long.as.MulWith.impl.c90(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.MulWith.impl.Op.17c39d.2: %Cpp.long.as.MulWith.impl.Op.type.8651ed.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %MulWith.facet.cdc: %MulWith.type.4ce = facet_value %Cpp.long, (%MulWith.impl_witness.135) [concrete]
-// CHECK:STDOUT:   %.40a: type = fn_type_with_self_type %MulWith.Op.type.ff6, %MulWith.facet.cdc [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.MulWith.impl.Op.specific_fn.fcc384.1: <specific function> = specific_function %Cpp.long.as.MulWith.impl.Op.17c39d.2, @Cpp.long.as.MulWith.impl.Op.1(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.MulWith.impl.Op.specific_fn.fcc384.2: <specific function> = specific_function %Cpp.long.as.MulWith.impl.Op.17c39d.1, @Cpp.long.as.MulWith.impl.Op.2(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %DivWith.impl_witness.92c: <witness> = impl_witness imports.%DivWith.impl_witness_table.bcf, @Cpp.long.as.DivWith.impl.0e5(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.DivWith.impl.Op.type.625951.1: type = fn_type @Cpp.long.as.DivWith.impl.Op.2, @Cpp.long.as.DivWith.impl.0e5(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.DivWith.impl.Op.3687cc.1: %Cpp.long.as.DivWith.impl.Op.type.625951.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.DivWith.impl.Op.type.625951.2: type = fn_type @Cpp.long.as.DivWith.impl.Op.1, @Cpp.long.as.DivWith.impl.0e5(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.DivWith.impl.Op.3687cc.2: %Cpp.long.as.DivWith.impl.Op.type.625951.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %DivWith.facet.7f1: %DivWith.type.234 = facet_value %Cpp.long, (%DivWith.impl_witness.92c) [concrete]
-// CHECK:STDOUT:   %.b93: type = fn_type_with_self_type %DivWith.Op.type.c64, %DivWith.facet.7f1 [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.DivWith.impl.Op.specific_fn.ecf90c.1: <specific function> = specific_function %Cpp.long.as.DivWith.impl.Op.3687cc.2, @Cpp.long.as.DivWith.impl.Op.1(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.DivWith.impl.Op.specific_fn.ecf90c.2: <specific function> = specific_function %Cpp.long.as.DivWith.impl.Op.3687cc.1, @Cpp.long.as.DivWith.impl.Op.2(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %ModWith.impl_witness.334: <witness> = impl_witness imports.%ModWith.impl_witness_table.9cf, @Cpp.long.as.ModWith.impl.0a5(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.ModWith.impl.Op.type.3cf811.1: type = fn_type @Cpp.long.as.ModWith.impl.Op.2, @Cpp.long.as.ModWith.impl.0a5(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.ModWith.impl.Op.28b8b4.1: %Cpp.long.as.ModWith.impl.Op.type.3cf811.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.ModWith.impl.Op.type.3cf811.2: type = fn_type @Cpp.long.as.ModWith.impl.Op.1, @Cpp.long.as.ModWith.impl.0a5(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.ModWith.impl.Op.28b8b4.2: %Cpp.long.as.ModWith.impl.Op.type.3cf811.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %ModWith.facet.52c: %ModWith.type.920 = facet_value %Cpp.long, (%ModWith.impl_witness.334) [concrete]
-// CHECK:STDOUT:   %.e41: type = fn_type_with_self_type %ModWith.Op.type.295, %ModWith.facet.52c [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.ModWith.impl.Op.specific_fn.175599.1: <specific function> = specific_function %Cpp.long.as.ModWith.impl.Op.28b8b4.2, @Cpp.long.as.ModWith.impl.Op.1(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.ModWith.impl.Op.specific_fn.175599.2: <specific function> = specific_function %Cpp.long.as.ModWith.impl.Op.28b8b4.1, @Cpp.long.as.ModWith.impl.Op.2(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %Cpp: <namespace> = namespace file.%Cpp.import_cpp, [concrete] {
-// CHECK:STDOUT:     .long = constants.%Cpp.long
-// CHECK:STDOUT:     import Cpp//...
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %Core.import_ref.42d: @Core.IntLiteral.as.ImplicitAs.impl.b2d.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.4e6) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.b2d.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3c2)]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness_table.74f = impl_witness_table (%Core.import_ref.42d), @Core.IntLiteral.as.ImplicitAs.impl.b2d [concrete]
-// CHECK:STDOUT:   %Core.import_ref.b8a: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.b38 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness_table.903 = impl_witness_table (%Core.import_ref.b8a), @Core.IntLiteral.as.ImplicitAs.impl.052 [concrete]
-// CHECK:STDOUT:   %Core.import_ref.cb912f.1 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.3a8: @Cpp.long.as.AddWith.impl.c72.%Cpp.long.as.AddWith.impl.Op.type.2 (%Cpp.long.as.AddWith.impl.Op.type.b730f9.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long.as.AddWith.impl.c72.%Cpp.long.as.AddWith.impl.Op.2 (constants.%Cpp.long.as.AddWith.impl.Op.7ff34c.1)]
-// CHECK:STDOUT:   %AddWith.impl_witness_table.34e = impl_witness_table (%Core.import_ref.cb912f.1, %Core.import_ref.3a8), @Cpp.long.as.AddWith.impl.c72 [concrete]
-// CHECK:STDOUT:   %Core.Op.e41f: @Cpp.long.as.AddWith.impl.c72.%Cpp.long.as.AddWith.impl.Op.type.1 (%Cpp.long.as.AddWith.impl.Op.type.b730f9.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @Cpp.long.as.AddWith.impl.c72.%Cpp.long.as.AddWith.impl.Op.1 (constants.%Cpp.long.as.AddWith.impl.Op.7ff34c.2)]
-// CHECK:STDOUT:   %Core.import_ref.4fa: %i32.as.ImplicitAs.impl.Convert.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness_table.5ad = impl_witness_table (%Core.import_ref.4fa), @i32.as.ImplicitAs.impl [concrete]
-// CHECK:STDOUT:   %Core.import_ref.cb912f.3 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.399: @Cpp.long.as.SubWith.impl.b84.%Cpp.long.as.SubWith.impl.Op.type.2 (%Cpp.long.as.SubWith.impl.Op.type.432302.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long.as.SubWith.impl.b84.%Cpp.long.as.SubWith.impl.Op.2 (constants.%Cpp.long.as.SubWith.impl.Op.42d8b9.1)]
-// CHECK:STDOUT:   %SubWith.impl_witness_table.694 = impl_witness_table (%Core.import_ref.cb912f.3, %Core.import_ref.399), @Cpp.long.as.SubWith.impl.b84 [concrete]
-// CHECK:STDOUT:   %Core.Op.fce: @Cpp.long.as.SubWith.impl.b84.%Cpp.long.as.SubWith.impl.Op.type.1 (%Cpp.long.as.SubWith.impl.Op.type.432302.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @Cpp.long.as.SubWith.impl.b84.%Cpp.long.as.SubWith.impl.Op.1 (constants.%Cpp.long.as.SubWith.impl.Op.42d8b9.2)]
-// CHECK:STDOUT:   %Core.import_ref.cb912f.5 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.674: @Cpp.long.as.MulWith.impl.c90.%Cpp.long.as.MulWith.impl.Op.type.2 (%Cpp.long.as.MulWith.impl.Op.type.4f6939.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long.as.MulWith.impl.c90.%Cpp.long.as.MulWith.impl.Op.2 (constants.%Cpp.long.as.MulWith.impl.Op.b232c0.1)]
-// CHECK:STDOUT:   %MulWith.impl_witness_table.6e7 = impl_witness_table (%Core.import_ref.cb912f.5, %Core.import_ref.674), @Cpp.long.as.MulWith.impl.c90 [concrete]
-// CHECK:STDOUT:   %Core.Op.b1f: @Cpp.long.as.MulWith.impl.c90.%Cpp.long.as.MulWith.impl.Op.type.1 (%Cpp.long.as.MulWith.impl.Op.type.4f6939.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @Cpp.long.as.MulWith.impl.c90.%Cpp.long.as.MulWith.impl.Op.1 (constants.%Cpp.long.as.MulWith.impl.Op.b232c0.2)]
-// CHECK:STDOUT:   %Core.import_ref.cb912f.7 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.228: @Cpp.long.as.DivWith.impl.0e5.%Cpp.long.as.DivWith.impl.Op.type.2 (%Cpp.long.as.DivWith.impl.Op.type.9ce9b6.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long.as.DivWith.impl.0e5.%Cpp.long.as.DivWith.impl.Op.2 (constants.%Cpp.long.as.DivWith.impl.Op.e35fb3.1)]
-// CHECK:STDOUT:   %DivWith.impl_witness_table.bcf = impl_witness_table (%Core.import_ref.cb912f.7, %Core.import_ref.228), @Cpp.long.as.DivWith.impl.0e5 [concrete]
-// CHECK:STDOUT:   %Core.Op.d43: @Cpp.long.as.DivWith.impl.0e5.%Cpp.long.as.DivWith.impl.Op.type.1 (%Cpp.long.as.DivWith.impl.Op.type.9ce9b6.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @Cpp.long.as.DivWith.impl.0e5.%Cpp.long.as.DivWith.impl.Op.1 (constants.%Cpp.long.as.DivWith.impl.Op.e35fb3.2)]
-// CHECK:STDOUT:   %Core.import_ref.cb912f.9 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.bd8: @Cpp.long.as.ModWith.impl.0a5.%Cpp.long.as.ModWith.impl.Op.type.2 (%Cpp.long.as.ModWith.impl.Op.type.4bf837.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long.as.ModWith.impl.0a5.%Cpp.long.as.ModWith.impl.Op.2 (constants.%Cpp.long.as.ModWith.impl.Op.0707cb.1)]
-// CHECK:STDOUT:   %ModWith.impl_witness_table.9cf = impl_witness_table (%Core.import_ref.cb912f.9, %Core.import_ref.bd8), @Cpp.long.as.ModWith.impl.0a5 [concrete]
-// CHECK:STDOUT:   %Core.Op.4be: @Cpp.long.as.ModWith.impl.0a5.%Cpp.long.as.ModWith.impl.Op.type.1 (%Cpp.long.as.ModWith.impl.Op.type.4bf837.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @Cpp.long.as.ModWith.impl.0a5.%Cpp.long.as.ModWith.impl.Op.1 (constants.%Cpp.long.as.ModWith.impl.Op.0707cb.2)]
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: fn @ArithmeticHeterogeneousLongLeftSide() {
-// CHECK:STDOUT: !entry:
-// CHECK:STDOUT:   <elided>
-// CHECK:STDOUT:   name_binding_decl {
-// CHECK:STDOUT:     %x.patt: %pattern_type.68c = value_binding_pattern x [concrete]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %int_1.loc11: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %.loc11_13: type = splice_block %long.ref [concrete = constants.%Cpp.long] {
-// CHECK:STDOUT:     %Cpp.ref: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
-// CHECK:STDOUT:     %long.ref: type = name_ref long, constants.%Cpp.long [concrete = constants.%Cpp.long]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %impl.elem0.loc11: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %bound_method.loc11: <bound method> = bound_method %int_1.loc11, %impl.elem0.loc11 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc11: init %Cpp.long = call %bound_method.loc11(%int_1.loc11) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc11_21.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc11 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc11_21.2: %Cpp.long = converted %int_1.loc11, %.loc11_21.1 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %x: %Cpp.long = value_binding x, %.loc11_21.2
-// CHECK:STDOUT:   %AssertSameType.ref.loc13: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc13_18: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %b.ref.loc13: %i32 = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc13: %.ef1 = impl_witness_access constants.%AddWith.impl_witness.403, element1 [concrete = constants.%Cpp.long.as.AddWith.impl.Op.7beae3.2]
-// CHECK:STDOUT:   %bound_method.loc13_20.1: <bound method> = bound_method %x.ref.loc13_18, %impl.elem1.loc13
-// CHECK:STDOUT:   %ImplicitAs.facet.loc13_20.1: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc13_20.1: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc13_20.1 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc13_20.2: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc13_20.2: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc13_20.2 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %specific_fn.loc13: <specific function> = specific_function %impl.elem1.loc13, @Cpp.long.as.AddWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.AddWith.impl.Op.specific_fn.88f499.1]
-// CHECK:STDOUT:   %bound_method.loc13_20.2: <bound method> = bound_method %x.ref.loc13_18, %specific_fn.loc13
-// CHECK:STDOUT:   %.loc13_20.3: %Cpp.long.as.AddWith.impl.Op.type.3dbf51.1 = specific_constant imports.%Core.Op.e41f, @Cpp.long.as.AddWith.impl.c72(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.AddWith.impl.Op.7beae3.1]
-// CHECK:STDOUT:   %Op.ref.loc13: %Cpp.long.as.AddWith.impl.Op.type.3dbf51.1 = name_ref Op, %.loc13_20.3 [concrete = constants.%Cpp.long.as.AddWith.impl.Op.7beae3.1]
-// CHECK:STDOUT:   %Cpp.long.as.AddWith.impl.Op.bound.loc13: <bound method> = bound_method %x.ref.loc13_18, %Op.ref.loc13
-// CHECK:STDOUT:   %impl.elem0.loc13_20: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc13_20.3: <bound method> = bound_method %b.ref.loc13, %impl.elem0.loc13_20
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc13_20: init %Cpp.long = call %bound_method.loc13_20.3(%b.ref.loc13)
-// CHECK:STDOUT:   %.loc13_20.4: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc13_20
-// CHECK:STDOUT:   %.loc13_20.5: %Cpp.long = converted %b.ref.loc13, %.loc13_20.4
-// CHECK:STDOUT:   %Cpp.long.as.AddWith.impl.Op.specific_fn.loc13: <specific function> = specific_function %Op.ref.loc13, @Cpp.long.as.AddWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.AddWith.impl.Op.specific_fn.88f499.2]
-// CHECK:STDOUT:   %bound_method.loc13_20.4: <bound method> = bound_method %x.ref.loc13_18, %Cpp.long.as.AddWith.impl.Op.specific_fn.loc13
-// CHECK:STDOUT:   %impl.elem0.loc13_22: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc13_22: <bound method> = bound_method %b.ref.loc13, %impl.elem0.loc13_22
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc13_22: init %Cpp.long = call %bound_method.loc13_22(%b.ref.loc13)
-// CHECK:STDOUT:   %.loc13_22.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc13_22
-// CHECK:STDOUT:   %.loc13_22.2: %Cpp.long = converted %b.ref.loc13, %.loc13_22.1
-// CHECK:STDOUT:   %Cpp.long.as.AddWith.impl.Op.call.loc13: init %Cpp.long = call %bound_method.loc13_20.4(%x.ref.loc13_18, %.loc13_22.2)
-// CHECK:STDOUT:   %x.ref.loc13_25: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc13: <specific function> = specific_function %AssertSameType.ref.loc13, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc13_20.6: %Cpp.long = value_of_initializer %Cpp.long.as.AddWith.impl.Op.call.loc13
-// CHECK:STDOUT:   %.loc13_20.7: %Cpp.long = converted %Cpp.long.as.AddWith.impl.Op.call.loc13, %.loc13_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc13: init %empty_tuple.type = call %AssertSameType.specific_fn.loc13(%.loc13_20.7, %x.ref.loc13_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc14: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc14_18: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %b.ref.loc14: %i32 = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc14: %.494 = impl_witness_access constants.%SubWith.impl_witness.bee, element1 [concrete = constants.%Cpp.long.as.SubWith.impl.Op.65b61c.2]
-// CHECK:STDOUT:   %bound_method.loc14_20.1: <bound method> = bound_method %x.ref.loc14_18, %impl.elem1.loc14
-// CHECK:STDOUT:   %ImplicitAs.facet.loc14_20.1: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc14_20.1: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc14_20.1 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc14_20.2: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc14_20.2: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc14_20.2 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %specific_fn.loc14: <specific function> = specific_function %impl.elem1.loc14, @Cpp.long.as.SubWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.SubWith.impl.Op.specific_fn.8caeaa.1]
-// CHECK:STDOUT:   %bound_method.loc14_20.2: <bound method> = bound_method %x.ref.loc14_18, %specific_fn.loc14
-// CHECK:STDOUT:   %.loc14_20.3: %Cpp.long.as.SubWith.impl.Op.type.5b2a81.1 = specific_constant imports.%Core.Op.fce, @Cpp.long.as.SubWith.impl.b84(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.SubWith.impl.Op.65b61c.1]
-// CHECK:STDOUT:   %Op.ref.loc14: %Cpp.long.as.SubWith.impl.Op.type.5b2a81.1 = name_ref Op, %.loc14_20.3 [concrete = constants.%Cpp.long.as.SubWith.impl.Op.65b61c.1]
-// CHECK:STDOUT:   %Cpp.long.as.SubWith.impl.Op.bound.loc14: <bound method> = bound_method %x.ref.loc14_18, %Op.ref.loc14
-// CHECK:STDOUT:   %impl.elem0.loc14_20: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc14_20.3: <bound method> = bound_method %b.ref.loc14, %impl.elem0.loc14_20
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc14_20: init %Cpp.long = call %bound_method.loc14_20.3(%b.ref.loc14)
-// CHECK:STDOUT:   %.loc14_20.4: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc14_20
-// CHECK:STDOUT:   %.loc14_20.5: %Cpp.long = converted %b.ref.loc14, %.loc14_20.4
-// CHECK:STDOUT:   %Cpp.long.as.SubWith.impl.Op.specific_fn.loc14: <specific function> = specific_function %Op.ref.loc14, @Cpp.long.as.SubWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.SubWith.impl.Op.specific_fn.8caeaa.2]
-// CHECK:STDOUT:   %bound_method.loc14_20.4: <bound method> = bound_method %x.ref.loc14_18, %Cpp.long.as.SubWith.impl.Op.specific_fn.loc14
-// CHECK:STDOUT:   %impl.elem0.loc14_22: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc14_22: <bound method> = bound_method %b.ref.loc14, %impl.elem0.loc14_22
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc14_22: init %Cpp.long = call %bound_method.loc14_22(%b.ref.loc14)
-// CHECK:STDOUT:   %.loc14_22.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc14_22
-// CHECK:STDOUT:   %.loc14_22.2: %Cpp.long = converted %b.ref.loc14, %.loc14_22.1
-// CHECK:STDOUT:   %Cpp.long.as.SubWith.impl.Op.call.loc14: init %Cpp.long = call %bound_method.loc14_20.4(%x.ref.loc14_18, %.loc14_22.2)
-// CHECK:STDOUT:   %x.ref.loc14_25: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc14: <specific function> = specific_function %AssertSameType.ref.loc14, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc14_20.6: %Cpp.long = value_of_initializer %Cpp.long.as.SubWith.impl.Op.call.loc14
-// CHECK:STDOUT:   %.loc14_20.7: %Cpp.long = converted %Cpp.long.as.SubWith.impl.Op.call.loc14, %.loc14_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc14: init %empty_tuple.type = call %AssertSameType.specific_fn.loc14(%.loc14_20.7, %x.ref.loc14_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc15: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc15_18: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %b.ref.loc15: %i32 = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc15: %.057 = impl_witness_access constants.%MulWith.impl_witness.ba5, element1 [concrete = constants.%Cpp.long.as.MulWith.impl.Op.f095b7.2]
-// CHECK:STDOUT:   %bound_method.loc15_20.1: <bound method> = bound_method %x.ref.loc15_18, %impl.elem1.loc15
-// CHECK:STDOUT:   %ImplicitAs.facet.loc15_20.1: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc15_20.1: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc15_20.1 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc15_20.2: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc15_20.2: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc15_20.2 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %specific_fn.loc15: <specific function> = specific_function %impl.elem1.loc15, @Cpp.long.as.MulWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.MulWith.impl.Op.specific_fn.3be598.1]
-// CHECK:STDOUT:   %bound_method.loc15_20.2: <bound method> = bound_method %x.ref.loc15_18, %specific_fn.loc15
-// CHECK:STDOUT:   %.loc15_20.3: %Cpp.long.as.MulWith.impl.Op.type.ea5ff6.1 = specific_constant imports.%Core.Op.b1f, @Cpp.long.as.MulWith.impl.c90(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.MulWith.impl.Op.f095b7.1]
-// CHECK:STDOUT:   %Op.ref.loc15: %Cpp.long.as.MulWith.impl.Op.type.ea5ff6.1 = name_ref Op, %.loc15_20.3 [concrete = constants.%Cpp.long.as.MulWith.impl.Op.f095b7.1]
-// CHECK:STDOUT:   %Cpp.long.as.MulWith.impl.Op.bound.loc15: <bound method> = bound_method %x.ref.loc15_18, %Op.ref.loc15
-// CHECK:STDOUT:   %impl.elem0.loc15_20: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc15_20.3: <bound method> = bound_method %b.ref.loc15, %impl.elem0.loc15_20
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc15_20: init %Cpp.long = call %bound_method.loc15_20.3(%b.ref.loc15)
-// CHECK:STDOUT:   %.loc15_20.4: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc15_20
-// CHECK:STDOUT:   %.loc15_20.5: %Cpp.long = converted %b.ref.loc15, %.loc15_20.4
-// CHECK:STDOUT:   %Cpp.long.as.MulWith.impl.Op.specific_fn.loc15: <specific function> = specific_function %Op.ref.loc15, @Cpp.long.as.MulWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.MulWith.impl.Op.specific_fn.3be598.2]
-// CHECK:STDOUT:   %bound_method.loc15_20.4: <bound method> = bound_method %x.ref.loc15_18, %Cpp.long.as.MulWith.impl.Op.specific_fn.loc15
-// CHECK:STDOUT:   %impl.elem0.loc15_22: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc15_22: <bound method> = bound_method %b.ref.loc15, %impl.elem0.loc15_22
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc15_22: init %Cpp.long = call %bound_method.loc15_22(%b.ref.loc15)
-// CHECK:STDOUT:   %.loc15_22.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc15_22
-// CHECK:STDOUT:   %.loc15_22.2: %Cpp.long = converted %b.ref.loc15, %.loc15_22.1
-// CHECK:STDOUT:   %Cpp.long.as.MulWith.impl.Op.call.loc15: init %Cpp.long = call %bound_method.loc15_20.4(%x.ref.loc15_18, %.loc15_22.2)
-// CHECK:STDOUT:   %x.ref.loc15_25: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc15: <specific function> = specific_function %AssertSameType.ref.loc15, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc15_20.6: %Cpp.long = value_of_initializer %Cpp.long.as.MulWith.impl.Op.call.loc15
-// CHECK:STDOUT:   %.loc15_20.7: %Cpp.long = converted %Cpp.long.as.MulWith.impl.Op.call.loc15, %.loc15_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc15: init %empty_tuple.type = call %AssertSameType.specific_fn.loc15(%.loc15_20.7, %x.ref.loc15_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc16: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc16_18: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %b.ref.loc16: %i32 = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc16: %.eec = impl_witness_access constants.%DivWith.impl_witness.30d, element1 [concrete = constants.%Cpp.long.as.DivWith.impl.Op.d06e88.2]
-// CHECK:STDOUT:   %bound_method.loc16_20.1: <bound method> = bound_method %x.ref.loc16_18, %impl.elem1.loc16
-// CHECK:STDOUT:   %ImplicitAs.facet.loc16_20.1: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc16_20.1: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc16_20.1 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc16_20.2: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc16_20.2: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc16_20.2 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %specific_fn.loc16: <specific function> = specific_function %impl.elem1.loc16, @Cpp.long.as.DivWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.DivWith.impl.Op.specific_fn.6489e2.1]
-// CHECK:STDOUT:   %bound_method.loc16_20.2: <bound method> = bound_method %x.ref.loc16_18, %specific_fn.loc16
-// CHECK:STDOUT:   %.loc16_20.3: %Cpp.long.as.DivWith.impl.Op.type.9156f2.1 = specific_constant imports.%Core.Op.d43, @Cpp.long.as.DivWith.impl.0e5(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.DivWith.impl.Op.d06e88.1]
-// CHECK:STDOUT:   %Op.ref.loc16: %Cpp.long.as.DivWith.impl.Op.type.9156f2.1 = name_ref Op, %.loc16_20.3 [concrete = constants.%Cpp.long.as.DivWith.impl.Op.d06e88.1]
-// CHECK:STDOUT:   %Cpp.long.as.DivWith.impl.Op.bound.loc16: <bound method> = bound_method %x.ref.loc16_18, %Op.ref.loc16
-// CHECK:STDOUT:   %impl.elem0.loc16_20: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc16_20.3: <bound method> = bound_method %b.ref.loc16, %impl.elem0.loc16_20
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc16_20: init %Cpp.long = call %bound_method.loc16_20.3(%b.ref.loc16)
-// CHECK:STDOUT:   %.loc16_20.4: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc16_20
-// CHECK:STDOUT:   %.loc16_20.5: %Cpp.long = converted %b.ref.loc16, %.loc16_20.4
-// CHECK:STDOUT:   %Cpp.long.as.DivWith.impl.Op.specific_fn.loc16: <specific function> = specific_function %Op.ref.loc16, @Cpp.long.as.DivWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.DivWith.impl.Op.specific_fn.6489e2.2]
-// CHECK:STDOUT:   %bound_method.loc16_20.4: <bound method> = bound_method %x.ref.loc16_18, %Cpp.long.as.DivWith.impl.Op.specific_fn.loc16
-// CHECK:STDOUT:   %impl.elem0.loc16_22: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc16_22: <bound method> = bound_method %b.ref.loc16, %impl.elem0.loc16_22
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc16_22: init %Cpp.long = call %bound_method.loc16_22(%b.ref.loc16)
-// CHECK:STDOUT:   %.loc16_22.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc16_22
-// CHECK:STDOUT:   %.loc16_22.2: %Cpp.long = converted %b.ref.loc16, %.loc16_22.1
-// CHECK:STDOUT:   %Cpp.long.as.DivWith.impl.Op.call.loc16: init %Cpp.long = call %bound_method.loc16_20.4(%x.ref.loc16_18, %.loc16_22.2)
-// CHECK:STDOUT:   %x.ref.loc16_25: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc16: <specific function> = specific_function %AssertSameType.ref.loc16, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc16_20.6: %Cpp.long = value_of_initializer %Cpp.long.as.DivWith.impl.Op.call.loc16
-// CHECK:STDOUT:   %.loc16_20.7: %Cpp.long = converted %Cpp.long.as.DivWith.impl.Op.call.loc16, %.loc16_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc16: init %empty_tuple.type = call %AssertSameType.specific_fn.loc16(%.loc16_20.7, %x.ref.loc16_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc17: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc17_18: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %b.ref.loc17: %i32 = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc17: %.289 = impl_witness_access constants.%ModWith.impl_witness.bd3, element1 [concrete = constants.%Cpp.long.as.ModWith.impl.Op.6c7fa7.2]
-// CHECK:STDOUT:   %bound_method.loc17_20.1: <bound method> = bound_method %x.ref.loc17_18, %impl.elem1.loc17
-// CHECK:STDOUT:   %ImplicitAs.facet.loc17_20.1: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc17_20.1: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc17_20.1 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc17_20.2: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc17_20.2: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc17_20.2 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %specific_fn.loc17: <specific function> = specific_function %impl.elem1.loc17, @Cpp.long.as.ModWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.ModWith.impl.Op.specific_fn.127c5b.1]
-// CHECK:STDOUT:   %bound_method.loc17_20.2: <bound method> = bound_method %x.ref.loc17_18, %specific_fn.loc17
-// CHECK:STDOUT:   %.loc17_20.3: %Cpp.long.as.ModWith.impl.Op.type.f6cdb5.1 = specific_constant imports.%Core.Op.4be, @Cpp.long.as.ModWith.impl.0a5(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.ModWith.impl.Op.6c7fa7.1]
-// CHECK:STDOUT:   %Op.ref.loc17: %Cpp.long.as.ModWith.impl.Op.type.f6cdb5.1 = name_ref Op, %.loc17_20.3 [concrete = constants.%Cpp.long.as.ModWith.impl.Op.6c7fa7.1]
-// CHECK:STDOUT:   %Cpp.long.as.ModWith.impl.Op.bound.loc17: <bound method> = bound_method %x.ref.loc17_18, %Op.ref.loc17
-// CHECK:STDOUT:   %impl.elem0.loc17_20: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc17_20.3: <bound method> = bound_method %b.ref.loc17, %impl.elem0.loc17_20
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc17_20: init %Cpp.long = call %bound_method.loc17_20.3(%b.ref.loc17)
-// CHECK:STDOUT:   %.loc17_20.4: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc17_20
-// CHECK:STDOUT:   %.loc17_20.5: %Cpp.long = converted %b.ref.loc17, %.loc17_20.4
-// CHECK:STDOUT:   %Cpp.long.as.ModWith.impl.Op.specific_fn.loc17: <specific function> = specific_function %Op.ref.loc17, @Cpp.long.as.ModWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.ModWith.impl.Op.specific_fn.127c5b.2]
-// CHECK:STDOUT:   %bound_method.loc17_20.4: <bound method> = bound_method %x.ref.loc17_18, %Cpp.long.as.ModWith.impl.Op.specific_fn.loc17
-// CHECK:STDOUT:   %impl.elem0.loc17_22: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc17_22: <bound method> = bound_method %b.ref.loc17, %impl.elem0.loc17_22
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc17_22: init %Cpp.long = call %bound_method.loc17_22(%b.ref.loc17)
-// CHECK:STDOUT:   %.loc17_22.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc17_22
-// CHECK:STDOUT:   %.loc17_22.2: %Cpp.long = converted %b.ref.loc17, %.loc17_22.1
-// CHECK:STDOUT:   %Cpp.long.as.ModWith.impl.Op.call.loc17: init %Cpp.long = call %bound_method.loc17_20.4(%x.ref.loc17_18, %.loc17_22.2)
-// CHECK:STDOUT:   %x.ref.loc17_25: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc17: <specific function> = specific_function %AssertSameType.ref.loc17, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc17_20.6: %Cpp.long = value_of_initializer %Cpp.long.as.ModWith.impl.Op.call.loc17
-// CHECK:STDOUT:   %.loc17_20.7: %Cpp.long = converted %Cpp.long.as.ModWith.impl.Op.call.loc17, %.loc17_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc17: init %empty_tuple.type = call %AssertSameType.specific_fn.loc17(%.loc17_20.7, %x.ref.loc17_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc19: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc19_18: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %int_1.loc19: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %impl.elem1.loc19: %.784 = impl_witness_access constants.%AddWith.impl_witness.e6c, element1 [concrete = constants.%Cpp.long.as.AddWith.impl.Op.0f2d31.2]
-// CHECK:STDOUT:   %bound_method.loc19_20.1: <bound method> = bound_method %x.ref.loc19_18, %impl.elem1.loc19
-// CHECK:STDOUT:   %ImplicitAs.facet.loc19_20.1: %ImplicitAs.type.819 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.2ce) [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %.loc19_20.1: %ImplicitAs.type.819 = converted Core.IntLiteral, %ImplicitAs.facet.loc19_20.1 [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc19_20.2: %ImplicitAs.type.819 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.2ce) [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %.loc19_20.2: %ImplicitAs.type.819 = converted Core.IntLiteral, %ImplicitAs.facet.loc19_20.2 [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %specific_fn.loc19: <specific function> = specific_function %impl.elem1.loc19, @Cpp.long.as.AddWith.impl.Op.1(constants.%ImplicitAs.facet.eed) [concrete = constants.%Cpp.long.as.AddWith.impl.Op.specific_fn.063c7e.1]
-// CHECK:STDOUT:   %bound_method.loc19_20.2: <bound method> = bound_method %x.ref.loc19_18, %specific_fn.loc19
-// CHECK:STDOUT:   %.loc19_20.3: %Cpp.long.as.AddWith.impl.Op.type.1ece0d.1 = specific_constant imports.%Core.Op.e41f, @Cpp.long.as.AddWith.impl.c72(constants.%ImplicitAs.facet.eed) [concrete = constants.%Cpp.long.as.AddWith.impl.Op.0f2d31.1]
-// CHECK:STDOUT:   %Op.ref.loc19: %Cpp.long.as.AddWith.impl.Op.type.1ece0d.1 = name_ref Op, %.loc19_20.3 [concrete = constants.%Cpp.long.as.AddWith.impl.Op.0f2d31.1]
-// CHECK:STDOUT:   %Cpp.long.as.AddWith.impl.Op.bound.loc19: <bound method> = bound_method %x.ref.loc19_18, %Op.ref.loc19
-// CHECK:STDOUT:   %impl.elem0.loc19_20: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %bound_method.loc19_20.3: <bound method> = bound_method %int_1.loc19, %impl.elem0.loc19_20 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19_20: init %Cpp.long = call %bound_method.loc19_20.3(%int_1.loc19) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc19_20.4: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19_20 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc19_20.5: %Cpp.long = converted %int_1.loc19, %.loc19_20.4 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %Cpp.long.as.AddWith.impl.Op.specific_fn.loc19: <specific function> = specific_function %Op.ref.loc19, @Cpp.long.as.AddWith.impl.Op.2(constants.%ImplicitAs.facet.eed) [concrete = constants.%Cpp.long.as.AddWith.impl.Op.specific_fn.063c7e.2]
-// CHECK:STDOUT:   %bound_method.loc19_20.4: <bound method> = bound_method %x.ref.loc19_18, %Cpp.long.as.AddWith.impl.Op.specific_fn.loc19
-// CHECK:STDOUT:   %impl.elem0.loc19_22: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %bound_method.loc19_22: <bound method> = bound_method %int_1.loc19, %impl.elem0.loc19_22 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19_22: init %Cpp.long = call %bound_method.loc19_22(%int_1.loc19) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc19_22.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19_22 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc19_22.2: %Cpp.long = converted %int_1.loc19, %.loc19_22.1 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %Cpp.long.as.AddWith.impl.Op.call.loc19: init %Cpp.long = call %bound_method.loc19_20.4(%x.ref.loc19_18, %.loc19_22.2)
-// CHECK:STDOUT:   %x.ref.loc19_25: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc19: <specific function> = specific_function %AssertSameType.ref.loc19, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc19_20.6: %Cpp.long = value_of_initializer %Cpp.long.as.AddWith.impl.Op.call.loc19
-// CHECK:STDOUT:   %.loc19_20.7: %Cpp.long = converted %Cpp.long.as.AddWith.impl.Op.call.loc19, %.loc19_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc19: init %empty_tuple.type = call %AssertSameType.specific_fn.loc19(%.loc19_20.7, %x.ref.loc19_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc20: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc20_18: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %int_1.loc20: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %impl.elem1.loc20: %.d5f = impl_witness_access constants.%SubWith.impl_witness.dd6, element1 [concrete = constants.%Cpp.long.as.SubWith.impl.Op.8a648c.2]
-// CHECK:STDOUT:   %bound_method.loc20_20.1: <bound method> = bound_method %x.ref.loc20_18, %impl.elem1.loc20
-// CHECK:STDOUT:   %ImplicitAs.facet.loc20_20.1: %ImplicitAs.type.819 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.2ce) [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %.loc20_20.1: %ImplicitAs.type.819 = converted Core.IntLiteral, %ImplicitAs.facet.loc20_20.1 [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc20_20.2: %ImplicitAs.type.819 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.2ce) [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %.loc20_20.2: %ImplicitAs.type.819 = converted Core.IntLiteral, %ImplicitAs.facet.loc20_20.2 [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %specific_fn.loc20: <specific function> = specific_function %impl.elem1.loc20, @Cpp.long.as.SubWith.impl.Op.1(constants.%ImplicitAs.facet.eed) [concrete = constants.%Cpp.long.as.SubWith.impl.Op.specific_fn.0d5da2.1]
-// CHECK:STDOUT:   %bound_method.loc20_20.2: <bound method> = bound_method %x.ref.loc20_18, %specific_fn.loc20
-// CHECK:STDOUT:   %.loc20_20.3: %Cpp.long.as.SubWith.impl.Op.type.ef5597.1 = specific_constant imports.%Core.Op.fce, @Cpp.long.as.SubWith.impl.b84(constants.%ImplicitAs.facet.eed) [concrete = constants.%Cpp.long.as.SubWith.impl.Op.8a648c.1]
-// CHECK:STDOUT:   %Op.ref.loc20: %Cpp.long.as.SubWith.impl.Op.type.ef5597.1 = name_ref Op, %.loc20_20.3 [concrete = constants.%Cpp.long.as.SubWith.impl.Op.8a648c.1]
-// CHECK:STDOUT:   %Cpp.long.as.SubWith.impl.Op.bound.loc20: <bound method> = bound_method %x.ref.loc20_18, %Op.ref.loc20
-// CHECK:STDOUT:   %impl.elem0.loc20_20: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %bound_method.loc20_20.3: <bound method> = bound_method %int_1.loc20, %impl.elem0.loc20_20 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20_20: init %Cpp.long = call %bound_method.loc20_20.3(%int_1.loc20) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc20_20.4: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20_20 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc20_20.5: %Cpp.long = converted %int_1.loc20, %.loc20_20.4 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %Cpp.long.as.SubWith.impl.Op.specific_fn.loc20: <specific function> = specific_function %Op.ref.loc20, @Cpp.long.as.SubWith.impl.Op.2(constants.%ImplicitAs.facet.eed) [concrete = constants.%Cpp.long.as.SubWith.impl.Op.specific_fn.0d5da2.2]
-// CHECK:STDOUT:   %bound_method.loc20_20.4: <bound method> = bound_method %x.ref.loc20_18, %Cpp.long.as.SubWith.impl.Op.specific_fn.loc20
-// CHECK:STDOUT:   %impl.elem0.loc20_22: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %bound_method.loc20_22: <bound method> = bound_method %int_1.loc20, %impl.elem0.loc20_22 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20_22: init %Cpp.long = call %bound_method.loc20_22(%int_1.loc20) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc20_22.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20_22 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc20_22.2: %Cpp.long = converted %int_1.loc20, %.loc20_22.1 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %Cpp.long.as.SubWith.impl.Op.call.loc20: init %Cpp.long = call %bound_method.loc20_20.4(%x.ref.loc20_18, %.loc20_22.2)
-// CHECK:STDOUT:   %x.ref.loc20_25: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc20: <specific function> = specific_function %AssertSameType.ref.loc20, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc20_20.6: %Cpp.long = value_of_initializer %Cpp.long.as.SubWith.impl.Op.call.loc20
-// CHECK:STDOUT:   %.loc20_20.7: %Cpp.long = converted %Cpp.long.as.SubWith.impl.Op.call.loc20, %.loc20_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc20: init %empty_tuple.type = call %AssertSameType.specific_fn.loc20(%.loc20_20.7, %x.ref.loc20_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc21: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc21_18: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %int_1.loc21: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %impl.elem1.loc21: %.40a = impl_witness_access constants.%MulWith.impl_witness.135, element1 [concrete = constants.%Cpp.long.as.MulWith.impl.Op.17c39d.2]
-// CHECK:STDOUT:   %bound_method.loc21_20.1: <bound method> = bound_method %x.ref.loc21_18, %impl.elem1.loc21
-// CHECK:STDOUT:   %ImplicitAs.facet.loc21_20.1: %ImplicitAs.type.819 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.2ce) [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %.loc21_20.1: %ImplicitAs.type.819 = converted Core.IntLiteral, %ImplicitAs.facet.loc21_20.1 [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc21_20.2: %ImplicitAs.type.819 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.2ce) [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %.loc21_20.2: %ImplicitAs.type.819 = converted Core.IntLiteral, %ImplicitAs.facet.loc21_20.2 [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %specific_fn.loc21: <specific function> = specific_function %impl.elem1.loc21, @Cpp.long.as.MulWith.impl.Op.1(constants.%ImplicitAs.facet.eed) [concrete = constants.%Cpp.long.as.MulWith.impl.Op.specific_fn.fcc384.1]
-// CHECK:STDOUT:   %bound_method.loc21_20.2: <bound method> = bound_method %x.ref.loc21_18, %specific_fn.loc21
-// CHECK:STDOUT:   %.loc21_20.3: %Cpp.long.as.MulWith.impl.Op.type.8651ed.1 = specific_constant imports.%Core.Op.b1f, @Cpp.long.as.MulWith.impl.c90(constants.%ImplicitAs.facet.eed) [concrete = constants.%Cpp.long.as.MulWith.impl.Op.17c39d.1]
-// CHECK:STDOUT:   %Op.ref.loc21: %Cpp.long.as.MulWith.impl.Op.type.8651ed.1 = name_ref Op, %.loc21_20.3 [concrete = constants.%Cpp.long.as.MulWith.impl.Op.17c39d.1]
-// CHECK:STDOUT:   %Cpp.long.as.MulWith.impl.Op.bound.loc21: <bound method> = bound_method %x.ref.loc21_18, %Op.ref.loc21
-// CHECK:STDOUT:   %impl.elem0.loc21_20: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %bound_method.loc21_20.3: <bound method> = bound_method %int_1.loc21, %impl.elem0.loc21_20 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21_20: init %Cpp.long = call %bound_method.loc21_20.3(%int_1.loc21) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc21_20.4: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21_20 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc21_20.5: %Cpp.long = converted %int_1.loc21, %.loc21_20.4 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %Cpp.long.as.MulWith.impl.Op.specific_fn.loc21: <specific function> = specific_function %Op.ref.loc21, @Cpp.long.as.MulWith.impl.Op.2(constants.%ImplicitAs.facet.eed) [concrete = constants.%Cpp.long.as.MulWith.impl.Op.specific_fn.fcc384.2]
-// CHECK:STDOUT:   %bound_method.loc21_20.4: <bound method> = bound_method %x.ref.loc21_18, %Cpp.long.as.MulWith.impl.Op.specific_fn.loc21
-// CHECK:STDOUT:   %impl.elem0.loc21_22: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %bound_method.loc21_22: <bound method> = bound_method %int_1.loc21, %impl.elem0.loc21_22 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21_22: init %Cpp.long = call %bound_method.loc21_22(%int_1.loc21) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc21_22.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21_22 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc21_22.2: %Cpp.long = converted %int_1.loc21, %.loc21_22.1 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %Cpp.long.as.MulWith.impl.Op.call.loc21: init %Cpp.long = call %bound_method.loc21_20.4(%x.ref.loc21_18, %.loc21_22.2)
-// CHECK:STDOUT:   %x.ref.loc21_25: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc21: <specific function> = specific_function %AssertSameType.ref.loc21, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc21_20.6: %Cpp.long = value_of_initializer %Cpp.long.as.MulWith.impl.Op.call.loc21
-// CHECK:STDOUT:   %.loc21_20.7: %Cpp.long = converted %Cpp.long.as.MulWith.impl.Op.call.loc21, %.loc21_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc21: init %empty_tuple.type = call %AssertSameType.specific_fn.loc21(%.loc21_20.7, %x.ref.loc21_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc22: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc22_18: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %int_1.loc22: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %impl.elem1.loc22: %.b93 = impl_witness_access constants.%DivWith.impl_witness.92c, element1 [concrete = constants.%Cpp.long.as.DivWith.impl.Op.3687cc.2]
-// CHECK:STDOUT:   %bound_method.loc22_20.1: <bound method> = bound_method %x.ref.loc22_18, %impl.elem1.loc22
-// CHECK:STDOUT:   %ImplicitAs.facet.loc22_20.1: %ImplicitAs.type.819 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.2ce) [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %.loc22_20.1: %ImplicitAs.type.819 = converted Core.IntLiteral, %ImplicitAs.facet.loc22_20.1 [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc22_20.2: %ImplicitAs.type.819 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.2ce) [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %.loc22_20.2: %ImplicitAs.type.819 = converted Core.IntLiteral, %ImplicitAs.facet.loc22_20.2 [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %specific_fn.loc22: <specific function> = specific_function %impl.elem1.loc22, @Cpp.long.as.DivWith.impl.Op.1(constants.%ImplicitAs.facet.eed) [concrete = constants.%Cpp.long.as.DivWith.impl.Op.specific_fn.ecf90c.1]
-// CHECK:STDOUT:   %bound_method.loc22_20.2: <bound method> = bound_method %x.ref.loc22_18, %specific_fn.loc22
-// CHECK:STDOUT:   %.loc22_20.3: %Cpp.long.as.DivWith.impl.Op.type.625951.1 = specific_constant imports.%Core.Op.d43, @Cpp.long.as.DivWith.impl.0e5(constants.%ImplicitAs.facet.eed) [concrete = constants.%Cpp.long.as.DivWith.impl.Op.3687cc.1]
-// CHECK:STDOUT:   %Op.ref.loc22: %Cpp.long.as.DivWith.impl.Op.type.625951.1 = name_ref Op, %.loc22_20.3 [concrete = constants.%Cpp.long.as.DivWith.impl.Op.3687cc.1]
-// CHECK:STDOUT:   %Cpp.long.as.DivWith.impl.Op.bound.loc22: <bound method> = bound_method %x.ref.loc22_18, %Op.ref.loc22
-// CHECK:STDOUT:   %impl.elem0.loc22_20: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %bound_method.loc22_20.3: <bound method> = bound_method %int_1.loc22, %impl.elem0.loc22_20 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22_20: init %Cpp.long = call %bound_method.loc22_20.3(%int_1.loc22) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc22_20.4: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22_20 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc22_20.5: %Cpp.long = converted %int_1.loc22, %.loc22_20.4 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %Cpp.long.as.DivWith.impl.Op.specific_fn.loc22: <specific function> = specific_function %Op.ref.loc22, @Cpp.long.as.DivWith.impl.Op.2(constants.%ImplicitAs.facet.eed) [concrete = constants.%Cpp.long.as.DivWith.impl.Op.specific_fn.ecf90c.2]
-// CHECK:STDOUT:   %bound_method.loc22_20.4: <bound method> = bound_method %x.ref.loc22_18, %Cpp.long.as.DivWith.impl.Op.specific_fn.loc22
-// CHECK:STDOUT:   %impl.elem0.loc22_22: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %bound_method.loc22_22: <bound method> = bound_method %int_1.loc22, %impl.elem0.loc22_22 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22_22: init %Cpp.long = call %bound_method.loc22_22(%int_1.loc22) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc22_22.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22_22 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc22_22.2: %Cpp.long = converted %int_1.loc22, %.loc22_22.1 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %Cpp.long.as.DivWith.impl.Op.call.loc22: init %Cpp.long = call %bound_method.loc22_20.4(%x.ref.loc22_18, %.loc22_22.2)
-// CHECK:STDOUT:   %x.ref.loc22_25: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc22: <specific function> = specific_function %AssertSameType.ref.loc22, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc22_20.6: %Cpp.long = value_of_initializer %Cpp.long.as.DivWith.impl.Op.call.loc22
-// CHECK:STDOUT:   %.loc22_20.7: %Cpp.long = converted %Cpp.long.as.DivWith.impl.Op.call.loc22, %.loc22_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc22: init %empty_tuple.type = call %AssertSameType.specific_fn.loc22(%.loc22_20.7, %x.ref.loc22_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc23: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc23_18: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %int_1.loc23: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %impl.elem1.loc23: %.e41 = impl_witness_access constants.%ModWith.impl_witness.334, element1 [concrete = constants.%Cpp.long.as.ModWith.impl.Op.28b8b4.2]
-// CHECK:STDOUT:   %bound_method.loc23_20.1: <bound method> = bound_method %x.ref.loc23_18, %impl.elem1.loc23
-// CHECK:STDOUT:   %ImplicitAs.facet.loc23_20.1: %ImplicitAs.type.819 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.2ce) [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %.loc23_20.1: %ImplicitAs.type.819 = converted Core.IntLiteral, %ImplicitAs.facet.loc23_20.1 [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc23_20.2: %ImplicitAs.type.819 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.2ce) [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %.loc23_20.2: %ImplicitAs.type.819 = converted Core.IntLiteral, %ImplicitAs.facet.loc23_20.2 [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %specific_fn.loc23: <specific function> = specific_function %impl.elem1.loc23, @Cpp.long.as.ModWith.impl.Op.1(constants.%ImplicitAs.facet.eed) [concrete = constants.%Cpp.long.as.ModWith.impl.Op.specific_fn.175599.1]
-// CHECK:STDOUT:   %bound_method.loc23_20.2: <bound method> = bound_method %x.ref.loc23_18, %specific_fn.loc23
-// CHECK:STDOUT:   %.loc23_20.3: %Cpp.long.as.ModWith.impl.Op.type.3cf811.1 = specific_constant imports.%Core.Op.4be, @Cpp.long.as.ModWith.impl.0a5(constants.%ImplicitAs.facet.eed) [concrete = constants.%Cpp.long.as.ModWith.impl.Op.28b8b4.1]
-// CHECK:STDOUT:   %Op.ref.loc23: %Cpp.long.as.ModWith.impl.Op.type.3cf811.1 = name_ref Op, %.loc23_20.3 [concrete = constants.%Cpp.long.as.ModWith.impl.Op.28b8b4.1]
-// CHECK:STDOUT:   %Cpp.long.as.ModWith.impl.Op.bound.loc23: <bound method> = bound_method %x.ref.loc23_18, %Op.ref.loc23
-// CHECK:STDOUT:   %impl.elem0.loc23_20: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %bound_method.loc23_20.3: <bound method> = bound_method %int_1.loc23, %impl.elem0.loc23_20 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc23_20: init %Cpp.long = call %bound_method.loc23_20.3(%int_1.loc23) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc23_20.4: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc23_20 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc23_20.5: %Cpp.long = converted %int_1.loc23, %.loc23_20.4 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %Cpp.long.as.ModWith.impl.Op.specific_fn.loc23: <specific function> = specific_function %Op.ref.loc23, @Cpp.long.as.ModWith.impl.Op.2(constants.%ImplicitAs.facet.eed) [concrete = constants.%Cpp.long.as.ModWith.impl.Op.specific_fn.175599.2]
-// CHECK:STDOUT:   %bound_method.loc23_20.4: <bound method> = bound_method %x.ref.loc23_18, %Cpp.long.as.ModWith.impl.Op.specific_fn.loc23
-// CHECK:STDOUT:   %impl.elem0.loc23_22: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %bound_method.loc23_22: <bound method> = bound_method %int_1.loc23, %impl.elem0.loc23_22 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc23_22: init %Cpp.long = call %bound_method.loc23_22(%int_1.loc23) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc23_22.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc23_22 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc23_22.2: %Cpp.long = converted %int_1.loc23, %.loc23_22.1 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %Cpp.long.as.ModWith.impl.Op.call.loc23: init %Cpp.long = call %bound_method.loc23_20.4(%x.ref.loc23_18, %.loc23_22.2)
-// CHECK:STDOUT:   %x.ref.loc23_25: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc23: <specific function> = specific_function %AssertSameType.ref.loc23, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc23_20.6: %Cpp.long = value_of_initializer %Cpp.long.as.ModWith.impl.Op.call.loc23
-// CHECK:STDOUT:   %.loc23_20.7: %Cpp.long = converted %Cpp.long.as.ModWith.impl.Op.call.loc23, %.loc23_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc23: init %empty_tuple.type = call %AssertSameType.specific_fn.loc23(%.loc23_20.7, %x.ref.loc23_25)
-// CHECK:STDOUT:   name_binding_decl {
-// CHECK:STDOUT:     %y.patt: %pattern_type.7ce = value_binding_pattern y [concrete]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %int_1.loc25: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %.loc25_10: type = splice_block %i32.loc25 [concrete = constants.%i32] {
-// CHECK:STDOUT:     %int_32.loc25: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
-// CHECK:STDOUT:     %i32.loc25: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %impl.elem0.loc25: %.863 = impl_witness_access constants.%ImplicitAs.impl_witness.6bc, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.0b5]
-// CHECK:STDOUT:   %bound_method.loc25_16.1: <bound method> = bound_method %int_1.loc25, %impl.elem0.loc25 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.215]
-// CHECK:STDOUT:   %specific_fn.loc25: <specific function> = specific_function %impl.elem0.loc25, @Core.IntLiteral.as.ImplicitAs.impl.Convert.1(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn]
-// CHECK:STDOUT:   %bound_method.loc25_16.2: <bound method> = bound_method %int_1.loc25, %specific_fn.loc25 [concrete = constants.%bound_method]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc25: init %i32 = call %bound_method.loc25_16.2(%int_1.loc25) [concrete = constants.%int_1.5d2]
-// CHECK:STDOUT:   %.loc25_16.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc25 [concrete = constants.%int_1.5d2]
-// CHECK:STDOUT:   %.loc25_16.2: %i32 = converted %int_1.loc25, %.loc25_16.1 [concrete = constants.%int_1.5d2]
-// CHECK:STDOUT:   %y: %i32 = value_binding y, %.loc25_16.2
-// CHECK:STDOUT:   %AssertSameType.ref.loc26: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc26_18: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %y.ref.loc26: %i32 = name_ref y, %y
-// CHECK:STDOUT:   %impl.elem1.loc26: %.ef1 = impl_witness_access constants.%AddWith.impl_witness.403, element1 [concrete = constants.%Cpp.long.as.AddWith.impl.Op.7beae3.2]
-// CHECK:STDOUT:   %bound_method.loc26_20.1: <bound method> = bound_method %x.ref.loc26_18, %impl.elem1.loc26
-// CHECK:STDOUT:   %ImplicitAs.facet.loc26_20.1: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc26_20.1: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc26_20.1 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc26_20.2: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc26_20.2: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc26_20.2 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %specific_fn.loc26: <specific function> = specific_function %impl.elem1.loc26, @Cpp.long.as.AddWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.AddWith.impl.Op.specific_fn.88f499.1]
-// CHECK:STDOUT:   %bound_method.loc26_20.2: <bound method> = bound_method %x.ref.loc26_18, %specific_fn.loc26
-// CHECK:STDOUT:   %.loc26_20.3: %Cpp.long.as.AddWith.impl.Op.type.3dbf51.1 = specific_constant imports.%Core.Op.e41f, @Cpp.long.as.AddWith.impl.c72(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.AddWith.impl.Op.7beae3.1]
-// CHECK:STDOUT:   %Op.ref.loc26: %Cpp.long.as.AddWith.impl.Op.type.3dbf51.1 = name_ref Op, %.loc26_20.3 [concrete = constants.%Cpp.long.as.AddWith.impl.Op.7beae3.1]
-// CHECK:STDOUT:   %Cpp.long.as.AddWith.impl.Op.bound.loc26: <bound method> = bound_method %x.ref.loc26_18, %Op.ref.loc26
-// CHECK:STDOUT:   %impl.elem0.loc26_20: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc26_20.3: <bound method> = bound_method %y.ref.loc26, %impl.elem0.loc26_20
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc26_20: init %Cpp.long = call %bound_method.loc26_20.3(%y.ref.loc26)
-// CHECK:STDOUT:   %.loc26_20.4: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc26_20
-// CHECK:STDOUT:   %.loc26_20.5: %Cpp.long = converted %y.ref.loc26, %.loc26_20.4
-// CHECK:STDOUT:   %Cpp.long.as.AddWith.impl.Op.specific_fn.loc26: <specific function> = specific_function %Op.ref.loc26, @Cpp.long.as.AddWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.AddWith.impl.Op.specific_fn.88f499.2]
-// CHECK:STDOUT:   %bound_method.loc26_20.4: <bound method> = bound_method %x.ref.loc26_18, %Cpp.long.as.AddWith.impl.Op.specific_fn.loc26
-// CHECK:STDOUT:   %impl.elem0.loc26_22: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc26_22: <bound method> = bound_method %y.ref.loc26, %impl.elem0.loc26_22
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc26_22: init %Cpp.long = call %bound_method.loc26_22(%y.ref.loc26)
-// CHECK:STDOUT:   %.loc26_22.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc26_22
-// CHECK:STDOUT:   %.loc26_22.2: %Cpp.long = converted %y.ref.loc26, %.loc26_22.1
-// CHECK:STDOUT:   %Cpp.long.as.AddWith.impl.Op.call.loc26: init %Cpp.long = call %bound_method.loc26_20.4(%x.ref.loc26_18, %.loc26_22.2)
-// CHECK:STDOUT:   %x.ref.loc26_25: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc26: <specific function> = specific_function %AssertSameType.ref.loc26, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc26_20.6: %Cpp.long = value_of_initializer %Cpp.long.as.AddWith.impl.Op.call.loc26
-// CHECK:STDOUT:   %.loc26_20.7: %Cpp.long = converted %Cpp.long.as.AddWith.impl.Op.call.loc26, %.loc26_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc26: init %empty_tuple.type = call %AssertSameType.specific_fn.loc26(%.loc26_20.7, %x.ref.loc26_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc27: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc27_18: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %y.ref.loc27: %i32 = name_ref y, %y
-// CHECK:STDOUT:   %impl.elem1.loc27: %.494 = impl_witness_access constants.%SubWith.impl_witness.bee, element1 [concrete = constants.%Cpp.long.as.SubWith.impl.Op.65b61c.2]
-// CHECK:STDOUT:   %bound_method.loc27_20.1: <bound method> = bound_method %x.ref.loc27_18, %impl.elem1.loc27
-// CHECK:STDOUT:   %ImplicitAs.facet.loc27_20.1: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc27_20.1: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc27_20.1 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc27_20.2: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc27_20.2: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc27_20.2 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %specific_fn.loc27: <specific function> = specific_function %impl.elem1.loc27, @Cpp.long.as.SubWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.SubWith.impl.Op.specific_fn.8caeaa.1]
-// CHECK:STDOUT:   %bound_method.loc27_20.2: <bound method> = bound_method %x.ref.loc27_18, %specific_fn.loc27
-// CHECK:STDOUT:   %.loc27_20.3: %Cpp.long.as.SubWith.impl.Op.type.5b2a81.1 = specific_constant imports.%Core.Op.fce, @Cpp.long.as.SubWith.impl.b84(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.SubWith.impl.Op.65b61c.1]
-// CHECK:STDOUT:   %Op.ref.loc27: %Cpp.long.as.SubWith.impl.Op.type.5b2a81.1 = name_ref Op, %.loc27_20.3 [concrete = constants.%Cpp.long.as.SubWith.impl.Op.65b61c.1]
-// CHECK:STDOUT:   %Cpp.long.as.SubWith.impl.Op.bound.loc27: <bound method> = bound_method %x.ref.loc27_18, %Op.ref.loc27
-// CHECK:STDOUT:   %impl.elem0.loc27_20: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc27_20.3: <bound method> = bound_method %y.ref.loc27, %impl.elem0.loc27_20
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc27_20: init %Cpp.long = call %bound_method.loc27_20.3(%y.ref.loc27)
-// CHECK:STDOUT:   %.loc27_20.4: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc27_20
-// CHECK:STDOUT:   %.loc27_20.5: %Cpp.long = converted %y.ref.loc27, %.loc27_20.4
-// CHECK:STDOUT:   %Cpp.long.as.SubWith.impl.Op.specific_fn.loc27: <specific function> = specific_function %Op.ref.loc27, @Cpp.long.as.SubWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.SubWith.impl.Op.specific_fn.8caeaa.2]
-// CHECK:STDOUT:   %bound_method.loc27_20.4: <bound method> = bound_method %x.ref.loc27_18, %Cpp.long.as.SubWith.impl.Op.specific_fn.loc27
-// CHECK:STDOUT:   %impl.elem0.loc27_22: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc27_22: <bound method> = bound_method %y.ref.loc27, %impl.elem0.loc27_22
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc27_22: init %Cpp.long = call %bound_method.loc27_22(%y.ref.loc27)
-// CHECK:STDOUT:   %.loc27_22.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc27_22
-// CHECK:STDOUT:   %.loc27_22.2: %Cpp.long = converted %y.ref.loc27, %.loc27_22.1
-// CHECK:STDOUT:   %Cpp.long.as.SubWith.impl.Op.call.loc27: init %Cpp.long = call %bound_method.loc27_20.4(%x.ref.loc27_18, %.loc27_22.2)
-// CHECK:STDOUT:   %x.ref.loc27_25: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc27: <specific function> = specific_function %AssertSameType.ref.loc27, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc27_20.6: %Cpp.long = value_of_initializer %Cpp.long.as.SubWith.impl.Op.call.loc27
-// CHECK:STDOUT:   %.loc27_20.7: %Cpp.long = converted %Cpp.long.as.SubWith.impl.Op.call.loc27, %.loc27_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc27: init %empty_tuple.type = call %AssertSameType.specific_fn.loc27(%.loc27_20.7, %x.ref.loc27_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc28: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc28_18: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %y.ref.loc28: %i32 = name_ref y, %y
-// CHECK:STDOUT:   %impl.elem1.loc28: %.057 = impl_witness_access constants.%MulWith.impl_witness.ba5, element1 [concrete = constants.%Cpp.long.as.MulWith.impl.Op.f095b7.2]
-// CHECK:STDOUT:   %bound_method.loc28_20.1: <bound method> = bound_method %x.ref.loc28_18, %impl.elem1.loc28
-// CHECK:STDOUT:   %ImplicitAs.facet.loc28_20.1: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc28_20.1: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc28_20.1 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc28_20.2: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc28_20.2: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc28_20.2 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %specific_fn.loc28: <specific function> = specific_function %impl.elem1.loc28, @Cpp.long.as.MulWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.MulWith.impl.Op.specific_fn.3be598.1]
-// CHECK:STDOUT:   %bound_method.loc28_20.2: <bound method> = bound_method %x.ref.loc28_18, %specific_fn.loc28
-// CHECK:STDOUT:   %.loc28_20.3: %Cpp.long.as.MulWith.impl.Op.type.ea5ff6.1 = specific_constant imports.%Core.Op.b1f, @Cpp.long.as.MulWith.impl.c90(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.MulWith.impl.Op.f095b7.1]
-// CHECK:STDOUT:   %Op.ref.loc28: %Cpp.long.as.MulWith.impl.Op.type.ea5ff6.1 = name_ref Op, %.loc28_20.3 [concrete = constants.%Cpp.long.as.MulWith.impl.Op.f095b7.1]
-// CHECK:STDOUT:   %Cpp.long.as.MulWith.impl.Op.bound.loc28: <bound method> = bound_method %x.ref.loc28_18, %Op.ref.loc28
-// CHECK:STDOUT:   %impl.elem0.loc28_20: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc28_20.3: <bound method> = bound_method %y.ref.loc28, %impl.elem0.loc28_20
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc28_20: init %Cpp.long = call %bound_method.loc28_20.3(%y.ref.loc28)
-// CHECK:STDOUT:   %.loc28_20.4: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc28_20
-// CHECK:STDOUT:   %.loc28_20.5: %Cpp.long = converted %y.ref.loc28, %.loc28_20.4
-// CHECK:STDOUT:   %Cpp.long.as.MulWith.impl.Op.specific_fn.loc28: <specific function> = specific_function %Op.ref.loc28, @Cpp.long.as.MulWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.MulWith.impl.Op.specific_fn.3be598.2]
-// CHECK:STDOUT:   %bound_method.loc28_20.4: <bound method> = bound_method %x.ref.loc28_18, %Cpp.long.as.MulWith.impl.Op.specific_fn.loc28
-// CHECK:STDOUT:   %impl.elem0.loc28_22: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc28_22: <bound method> = bound_method %y.ref.loc28, %impl.elem0.loc28_22
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc28_22: init %Cpp.long = call %bound_method.loc28_22(%y.ref.loc28)
-// CHECK:STDOUT:   %.loc28_22.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc28_22
-// CHECK:STDOUT:   %.loc28_22.2: %Cpp.long = converted %y.ref.loc28, %.loc28_22.1
-// CHECK:STDOUT:   %Cpp.long.as.MulWith.impl.Op.call.loc28: init %Cpp.long = call %bound_method.loc28_20.4(%x.ref.loc28_18, %.loc28_22.2)
-// CHECK:STDOUT:   %x.ref.loc28_25: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc28: <specific function> = specific_function %AssertSameType.ref.loc28, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc28_20.6: %Cpp.long = value_of_initializer %Cpp.long.as.MulWith.impl.Op.call.loc28
-// CHECK:STDOUT:   %.loc28_20.7: %Cpp.long = converted %Cpp.long.as.MulWith.impl.Op.call.loc28, %.loc28_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc28: init %empty_tuple.type = call %AssertSameType.specific_fn.loc28(%.loc28_20.7, %x.ref.loc28_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc29: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc29_18: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %y.ref.loc29: %i32 = name_ref y, %y
-// CHECK:STDOUT:   %impl.elem1.loc29: %.eec = impl_witness_access constants.%DivWith.impl_witness.30d, element1 [concrete = constants.%Cpp.long.as.DivWith.impl.Op.d06e88.2]
-// CHECK:STDOUT:   %bound_method.loc29_20.1: <bound method> = bound_method %x.ref.loc29_18, %impl.elem1.loc29
-// CHECK:STDOUT:   %ImplicitAs.facet.loc29_20.1: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc29_20.1: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc29_20.1 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc29_20.2: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc29_20.2: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc29_20.2 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %specific_fn.loc29: <specific function> = specific_function %impl.elem1.loc29, @Cpp.long.as.DivWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.DivWith.impl.Op.specific_fn.6489e2.1]
-// CHECK:STDOUT:   %bound_method.loc29_20.2: <bound method> = bound_method %x.ref.loc29_18, %specific_fn.loc29
-// CHECK:STDOUT:   %.loc29_20.3: %Cpp.long.as.DivWith.impl.Op.type.9156f2.1 = specific_constant imports.%Core.Op.d43, @Cpp.long.as.DivWith.impl.0e5(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.DivWith.impl.Op.d06e88.1]
-// CHECK:STDOUT:   %Op.ref.loc29: %Cpp.long.as.DivWith.impl.Op.type.9156f2.1 = name_ref Op, %.loc29_20.3 [concrete = constants.%Cpp.long.as.DivWith.impl.Op.d06e88.1]
-// CHECK:STDOUT:   %Cpp.long.as.DivWith.impl.Op.bound.loc29: <bound method> = bound_method %x.ref.loc29_18, %Op.ref.loc29
-// CHECK:STDOUT:   %impl.elem0.loc29_20: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc29_20.3: <bound method> = bound_method %y.ref.loc29, %impl.elem0.loc29_20
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc29_20: init %Cpp.long = call %bound_method.loc29_20.3(%y.ref.loc29)
-// CHECK:STDOUT:   %.loc29_20.4: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc29_20
-// CHECK:STDOUT:   %.loc29_20.5: %Cpp.long = converted %y.ref.loc29, %.loc29_20.4
-// CHECK:STDOUT:   %Cpp.long.as.DivWith.impl.Op.specific_fn.loc29: <specific function> = specific_function %Op.ref.loc29, @Cpp.long.as.DivWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.DivWith.impl.Op.specific_fn.6489e2.2]
-// CHECK:STDOUT:   %bound_method.loc29_20.4: <bound method> = bound_method %x.ref.loc29_18, %Cpp.long.as.DivWith.impl.Op.specific_fn.loc29
-// CHECK:STDOUT:   %impl.elem0.loc29_22: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc29_22: <bound method> = bound_method %y.ref.loc29, %impl.elem0.loc29_22
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc29_22: init %Cpp.long = call %bound_method.loc29_22(%y.ref.loc29)
-// CHECK:STDOUT:   %.loc29_22.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc29_22
-// CHECK:STDOUT:   %.loc29_22.2: %Cpp.long = converted %y.ref.loc29, %.loc29_22.1
-// CHECK:STDOUT:   %Cpp.long.as.DivWith.impl.Op.call.loc29: init %Cpp.long = call %bound_method.loc29_20.4(%x.ref.loc29_18, %.loc29_22.2)
-// CHECK:STDOUT:   %x.ref.loc29_25: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc29: <specific function> = specific_function %AssertSameType.ref.loc29, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc29_20.6: %Cpp.long = value_of_initializer %Cpp.long.as.DivWith.impl.Op.call.loc29
-// CHECK:STDOUT:   %.loc29_20.7: %Cpp.long = converted %Cpp.long.as.DivWith.impl.Op.call.loc29, %.loc29_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc29: init %empty_tuple.type = call %AssertSameType.specific_fn.loc29(%.loc29_20.7, %x.ref.loc29_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc30: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc30_18: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %y.ref.loc30: %i32 = name_ref y, %y
-// CHECK:STDOUT:   %impl.elem1.loc30: %.289 = impl_witness_access constants.%ModWith.impl_witness.bd3, element1 [concrete = constants.%Cpp.long.as.ModWith.impl.Op.6c7fa7.2]
-// CHECK:STDOUT:   %bound_method.loc30_20.1: <bound method> = bound_method %x.ref.loc30_18, %impl.elem1.loc30
-// CHECK:STDOUT:   %ImplicitAs.facet.loc30_20.1: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc30_20.1: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc30_20.1 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc30_20.2: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc30_20.2: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc30_20.2 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %specific_fn.loc30: <specific function> = specific_function %impl.elem1.loc30, @Cpp.long.as.ModWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.ModWith.impl.Op.specific_fn.127c5b.1]
-// CHECK:STDOUT:   %bound_method.loc30_20.2: <bound method> = bound_method %x.ref.loc30_18, %specific_fn.loc30
-// CHECK:STDOUT:   %.loc30_20.3: %Cpp.long.as.ModWith.impl.Op.type.f6cdb5.1 = specific_constant imports.%Core.Op.4be, @Cpp.long.as.ModWith.impl.0a5(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.ModWith.impl.Op.6c7fa7.1]
-// CHECK:STDOUT:   %Op.ref.loc30: %Cpp.long.as.ModWith.impl.Op.type.f6cdb5.1 = name_ref Op, %.loc30_20.3 [concrete = constants.%Cpp.long.as.ModWith.impl.Op.6c7fa7.1]
-// CHECK:STDOUT:   %Cpp.long.as.ModWith.impl.Op.bound.loc30: <bound method> = bound_method %x.ref.loc30_18, %Op.ref.loc30
-// CHECK:STDOUT:   %impl.elem0.loc30_20: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc30_20.3: <bound method> = bound_method %y.ref.loc30, %impl.elem0.loc30_20
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc30_20: init %Cpp.long = call %bound_method.loc30_20.3(%y.ref.loc30)
-// CHECK:STDOUT:   %.loc30_20.4: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc30_20
-// CHECK:STDOUT:   %.loc30_20.5: %Cpp.long = converted %y.ref.loc30, %.loc30_20.4
-// CHECK:STDOUT:   %Cpp.long.as.ModWith.impl.Op.specific_fn.loc30: <specific function> = specific_function %Op.ref.loc30, @Cpp.long.as.ModWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.ModWith.impl.Op.specific_fn.127c5b.2]
-// CHECK:STDOUT:   %bound_method.loc30_20.4: <bound method> = bound_method %x.ref.loc30_18, %Cpp.long.as.ModWith.impl.Op.specific_fn.loc30
-// CHECK:STDOUT:   %impl.elem0.loc30_22: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc30_22: <bound method> = bound_method %y.ref.loc30, %impl.elem0.loc30_22
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc30_22: init %Cpp.long = call %bound_method.loc30_22(%y.ref.loc30)
-// CHECK:STDOUT:   %.loc30_22.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc30_22
-// CHECK:STDOUT:   %.loc30_22.2: %Cpp.long = converted %y.ref.loc30, %.loc30_22.1
-// CHECK:STDOUT:   %Cpp.long.as.ModWith.impl.Op.call.loc30: init %Cpp.long = call %bound_method.loc30_20.4(%x.ref.loc30_18, %.loc30_22.2)
-// CHECK:STDOUT:   %x.ref.loc30_25: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc30: <specific function> = specific_function %AssertSameType.ref.loc30, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc30_20.6: %Cpp.long = value_of_initializer %Cpp.long.as.ModWith.impl.Op.call.loc30
-// CHECK:STDOUT:   %.loc30_20.7: %Cpp.long = converted %Cpp.long.as.ModWith.impl.Op.call.loc30, %.loc30_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc30: init %empty_tuple.type = call %AssertSameType.specific_fn.loc30(%.loc30_20.7, %x.ref.loc30_25)
-// CHECK:STDOUT:   <elided>
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: --- arithmetic_heterogeneous_long_right_side.carbon
-// CHECK:STDOUT:
-// CHECK:STDOUT: constants {
-// CHECK:STDOUT:   %AssertSameType.type: type = fn_type @AssertSameType [concrete]
-// CHECK:STDOUT:   %empty_tuple.type: type = tuple_type () [concrete]
-// CHECK:STDOUT:   %AssertSameType: %AssertSameType.type = struct_value () [concrete]
-// CHECK:STDOUT:   %int_32: Core.IntLiteral = int_value 32 [concrete]
-// CHECK:STDOUT:   %i32: type = class_type @Int, @Int(%int_32) [concrete]
-// CHECK:STDOUT:   %pattern_type.7ce: type = pattern_type %i32 [concrete]
-// CHECK:STDOUT:   %int_1.5b8: Core.IntLiteral = int_value 1 [concrete]
-// CHECK:STDOUT:   %ImplicitAs.type.e8c: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete]
-// CHECK:STDOUT:   %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete]
-// CHECK:STDOUT:   %To: Core.IntLiteral = symbolic_binding To, 0 [symbolic]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.4e6: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.1, @Core.IntLiteral.as.ImplicitAs.impl.b2d(%To) [symbolic]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.3c2: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.4e6 = struct_value () [symbolic]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness.6bc: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.74f, @Core.IntLiteral.as.ImplicitAs.impl.b2d(%int_32) [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e0d: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.1, @Core.IntLiteral.as.ImplicitAs.impl.b2d(%int_32) [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.0b5: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e0d = struct_value () [concrete]
-// CHECK:STDOUT:   %ImplicitAs.facet.b94: %ImplicitAs.type.e8c = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.6bc) [concrete]
-// CHECK:STDOUT:   %.863: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet.b94 [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.215: <bound method> = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.0b5 [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: <specific function> = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.0b5, @Core.IntLiteral.as.ImplicitAs.impl.Convert.1(%int_32) [concrete]
-// CHECK:STDOUT:   %bound_method.38b: <bound method> = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete]
-// CHECK:STDOUT:   %int_1.5d2: %i32 = int_value 1 [concrete]
-// CHECK:STDOUT:   %Cpp.long: type = class_type @Long32 [concrete]
-// CHECK:STDOUT:   %pattern_type.68c: type = pattern_type %Cpp.long [concrete]
-// CHECK:STDOUT:   %ImplicitAs.type.819: type = facet_type <@ImplicitAs, @ImplicitAs(%Cpp.long)> [concrete]
-// CHECK:STDOUT:   %ImplicitAs.Convert.type.4c2: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Cpp.long) [concrete]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness.2ce: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.903 [concrete]
-// CHECK:STDOUT:   %ImplicitAs.facet.eed: %ImplicitAs.type.819 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.2ce) [concrete]
-// CHECK:STDOUT:   %.dad: type = fn_type_with_self_type %ImplicitAs.Convert.type.4c2, %ImplicitAs.facet.eed [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.b38: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.2 [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.b38 = struct_value () [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8: <bound method> = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a [concrete]
-// CHECK:STDOUT:   %int_1.5a4: %Cpp.long = int_value 1 [concrete]
-// CHECK:STDOUT:   %AddWith.type.9c2: type = facet_type <@AddWith, @AddWith(%Cpp.long)> [concrete]
-// CHECK:STDOUT:   %AddWith.Op.type.9a6: type = fn_type @AddWith.Op, @AddWith(%Cpp.long) [concrete]
-// CHECK:STDOUT:   %T.57d: %ImplicitAs.type.819 = symbolic_binding T, 0 [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.type.704168.1: type = fn_type @T.binding.as_type.as.AddWith.impl.Op.1, @T.binding.as_type.as.AddWith.impl.f1a(%T.57d) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.399102.1: %T.binding.as_type.as.AddWith.impl.Op.type.704168.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.type.704168.2: type = fn_type @T.binding.as_type.as.AddWith.impl.Op.2, @T.binding.as_type.as.AddWith.impl.f1a(%T.57d) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.399102.2: %T.binding.as_type.as.AddWith.impl.Op.type.704168.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness.0fc: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.5ad [concrete]
-// CHECK:STDOUT:   %ImplicitAs.facet.174: %ImplicitAs.type.819 = facet_value %i32, (%ImplicitAs.impl_witness.0fc) [concrete]
-// CHECK:STDOUT:   %AddWith.impl_witness.a1d: <witness> = impl_witness imports.%AddWith.impl_witness_table.0dc, @T.binding.as_type.as.AddWith.impl.f1a(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.type.5105fb.1: type = fn_type @T.binding.as_type.as.AddWith.impl.Op.2, @T.binding.as_type.as.AddWith.impl.f1a(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.3fccd2.1: %T.binding.as_type.as.AddWith.impl.Op.type.5105fb.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.type.5105fb.2: type = fn_type @T.binding.as_type.as.AddWith.impl.Op.1, @T.binding.as_type.as.AddWith.impl.f1a(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.3fccd2.2: %T.binding.as_type.as.AddWith.impl.Op.type.5105fb.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %AddWith.facet.704: %AddWith.type.9c2 = facet_value %i32, (%AddWith.impl_witness.a1d) [concrete]
-// CHECK:STDOUT:   %.285: type = fn_type_with_self_type %AddWith.Op.type.9a6, %AddWith.facet.704 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.specific_fn.09578f.1: <specific function> = specific_function %T.binding.as_type.as.AddWith.impl.Op.3fccd2.2, @T.binding.as_type.as.AddWith.impl.Op.1(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.specific_fn.09578f.2: <specific function> = specific_function %T.binding.as_type.as.AddWith.impl.Op.3fccd2.1, @T.binding.as_type.as.AddWith.impl.Op.2(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %.c45: type = fn_type_with_self_type %ImplicitAs.Convert.type.4c2, %ImplicitAs.facet.174 [concrete]
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.type: type = fn_type @i32.as.ImplicitAs.impl.Convert [concrete]
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert: %i32.as.ImplicitAs.impl.Convert.type = struct_value () [concrete]
-// CHECK:STDOUT:   %AssertSameType.specific_fn: <specific function> = specific_function %AssertSameType, @AssertSameType(%Cpp.long) [concrete]
-// CHECK:STDOUT:   %SubWith.type.e8e: type = facet_type <@SubWith, @SubWith(%Cpp.long)> [concrete]
-// CHECK:STDOUT:   %SubWith.Op.type.533: type = fn_type @SubWith.Op, @SubWith(%Cpp.long) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.type.d77f83.1: type = fn_type @T.binding.as_type.as.SubWith.impl.Op.1, @T.binding.as_type.as.SubWith.impl.e1e(%T.57d) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.600de1.1: %T.binding.as_type.as.SubWith.impl.Op.type.d77f83.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.type.d77f83.2: type = fn_type @T.binding.as_type.as.SubWith.impl.Op.2, @T.binding.as_type.as.SubWith.impl.e1e(%T.57d) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.600de1.2: %T.binding.as_type.as.SubWith.impl.Op.type.d77f83.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %SubWith.impl_witness.702: <witness> = impl_witness imports.%SubWith.impl_witness_table.125, @T.binding.as_type.as.SubWith.impl.e1e(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.type.caca02.1: type = fn_type @T.binding.as_type.as.SubWith.impl.Op.2, @T.binding.as_type.as.SubWith.impl.e1e(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.f9b5c3.1: %T.binding.as_type.as.SubWith.impl.Op.type.caca02.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.type.caca02.2: type = fn_type @T.binding.as_type.as.SubWith.impl.Op.1, @T.binding.as_type.as.SubWith.impl.e1e(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.f9b5c3.2: %T.binding.as_type.as.SubWith.impl.Op.type.caca02.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %SubWith.facet.6af: %SubWith.type.e8e = facet_value %i32, (%SubWith.impl_witness.702) [concrete]
-// CHECK:STDOUT:   %.040: type = fn_type_with_self_type %SubWith.Op.type.533, %SubWith.facet.6af [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.specific_fn.b0f48e.1: <specific function> = specific_function %T.binding.as_type.as.SubWith.impl.Op.f9b5c3.2, @T.binding.as_type.as.SubWith.impl.Op.1(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.specific_fn.b0f48e.2: <specific function> = specific_function %T.binding.as_type.as.SubWith.impl.Op.f9b5c3.1, @T.binding.as_type.as.SubWith.impl.Op.2(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %MulWith.type.a32: type = facet_type <@MulWith, @MulWith(%Cpp.long)> [concrete]
-// CHECK:STDOUT:   %MulWith.Op.type.44b: type = fn_type @MulWith.Op, @MulWith(%Cpp.long) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.type.20586f.1: type = fn_type @T.binding.as_type.as.MulWith.impl.Op.1, @T.binding.as_type.as.MulWith.impl.6d9(%T.57d) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.036dac.1: %T.binding.as_type.as.MulWith.impl.Op.type.20586f.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.type.20586f.2: type = fn_type @T.binding.as_type.as.MulWith.impl.Op.2, @T.binding.as_type.as.MulWith.impl.6d9(%T.57d) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.036dac.2: %T.binding.as_type.as.MulWith.impl.Op.type.20586f.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %MulWith.impl_witness.f85: <witness> = impl_witness imports.%MulWith.impl_witness_table.ef7, @T.binding.as_type.as.MulWith.impl.6d9(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.type.1189b3.1: type = fn_type @T.binding.as_type.as.MulWith.impl.Op.2, @T.binding.as_type.as.MulWith.impl.6d9(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.461492.1: %T.binding.as_type.as.MulWith.impl.Op.type.1189b3.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.type.1189b3.2: type = fn_type @T.binding.as_type.as.MulWith.impl.Op.1, @T.binding.as_type.as.MulWith.impl.6d9(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.461492.2: %T.binding.as_type.as.MulWith.impl.Op.type.1189b3.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %MulWith.facet.b19: %MulWith.type.a32 = facet_value %i32, (%MulWith.impl_witness.f85) [concrete]
-// CHECK:STDOUT:   %.1b4: type = fn_type_with_self_type %MulWith.Op.type.44b, %MulWith.facet.b19 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.specific_fn.475813.1: <specific function> = specific_function %T.binding.as_type.as.MulWith.impl.Op.461492.2, @T.binding.as_type.as.MulWith.impl.Op.1(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.specific_fn.475813.2: <specific function> = specific_function %T.binding.as_type.as.MulWith.impl.Op.461492.1, @T.binding.as_type.as.MulWith.impl.Op.2(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %DivWith.type.0c0: type = facet_type <@DivWith, @DivWith(%Cpp.long)> [concrete]
-// CHECK:STDOUT:   %DivWith.Op.type.494: type = fn_type @DivWith.Op, @DivWith(%Cpp.long) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.type.c7967e.1: type = fn_type @T.binding.as_type.as.DivWith.impl.Op.1, @T.binding.as_type.as.DivWith.impl.67f(%T.57d) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.f3fb3f.1: %T.binding.as_type.as.DivWith.impl.Op.type.c7967e.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.type.c7967e.2: type = fn_type @T.binding.as_type.as.DivWith.impl.Op.2, @T.binding.as_type.as.DivWith.impl.67f(%T.57d) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.f3fb3f.2: %T.binding.as_type.as.DivWith.impl.Op.type.c7967e.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %DivWith.impl_witness.996: <witness> = impl_witness imports.%DivWith.impl_witness_table.4bd, @T.binding.as_type.as.DivWith.impl.67f(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.type.bc0f3d.1: type = fn_type @T.binding.as_type.as.DivWith.impl.Op.2, @T.binding.as_type.as.DivWith.impl.67f(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.e5dcee.1: %T.binding.as_type.as.DivWith.impl.Op.type.bc0f3d.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.type.bc0f3d.2: type = fn_type @T.binding.as_type.as.DivWith.impl.Op.1, @T.binding.as_type.as.DivWith.impl.67f(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.e5dcee.2: %T.binding.as_type.as.DivWith.impl.Op.type.bc0f3d.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %DivWith.facet.fbd: %DivWith.type.0c0 = facet_value %i32, (%DivWith.impl_witness.996) [concrete]
-// CHECK:STDOUT:   %.0f3: type = fn_type_with_self_type %DivWith.Op.type.494, %DivWith.facet.fbd [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.specific_fn.8f9bff.1: <specific function> = specific_function %T.binding.as_type.as.DivWith.impl.Op.e5dcee.2, @T.binding.as_type.as.DivWith.impl.Op.1(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.specific_fn.8f9bff.2: <specific function> = specific_function %T.binding.as_type.as.DivWith.impl.Op.e5dcee.1, @T.binding.as_type.as.DivWith.impl.Op.2(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %ModWith.type.2fc: type = facet_type <@ModWith, @ModWith(%Cpp.long)> [concrete]
-// CHECK:STDOUT:   %ModWith.Op.type.c13: type = fn_type @ModWith.Op, @ModWith(%Cpp.long) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.type.302b2e.1: type = fn_type @T.binding.as_type.as.ModWith.impl.Op.1, @T.binding.as_type.as.ModWith.impl.5ca(%T.57d) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.02226a.1: %T.binding.as_type.as.ModWith.impl.Op.type.302b2e.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.type.302b2e.2: type = fn_type @T.binding.as_type.as.ModWith.impl.Op.2, @T.binding.as_type.as.ModWith.impl.5ca(%T.57d) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.02226a.2: %T.binding.as_type.as.ModWith.impl.Op.type.302b2e.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %ModWith.impl_witness.e1d: <witness> = impl_witness imports.%ModWith.impl_witness_table.644, @T.binding.as_type.as.ModWith.impl.5ca(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.type.9786fd.1: type = fn_type @T.binding.as_type.as.ModWith.impl.Op.2, @T.binding.as_type.as.ModWith.impl.5ca(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.c5465f.1: %T.binding.as_type.as.ModWith.impl.Op.type.9786fd.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.type.9786fd.2: type = fn_type @T.binding.as_type.as.ModWith.impl.Op.1, @T.binding.as_type.as.ModWith.impl.5ca(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.c5465f.2: %T.binding.as_type.as.ModWith.impl.Op.type.9786fd.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %ModWith.facet.cf9: %ModWith.type.2fc = facet_value %i32, (%ModWith.impl_witness.e1d) [concrete]
-// CHECK:STDOUT:   %.e68: type = fn_type_with_self_type %ModWith.Op.type.c13, %ModWith.facet.cf9 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.specific_fn.ee32ad.1: <specific function> = specific_function %T.binding.as_type.as.ModWith.impl.Op.c5465f.2, @T.binding.as_type.as.ModWith.impl.Op.1(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.specific_fn.ee32ad.2: <specific function> = specific_function %T.binding.as_type.as.ModWith.impl.Op.c5465f.1, @T.binding.as_type.as.ModWith.impl.Op.2(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %AddWith.impl_witness.740: <witness> = impl_witness imports.%AddWith.impl_witness_table.0dc, @T.binding.as_type.as.AddWith.impl.f1a(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.type.75226a.1: type = fn_type @T.binding.as_type.as.AddWith.impl.Op.2, @T.binding.as_type.as.AddWith.impl.f1a(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.b037a1.1: %T.binding.as_type.as.AddWith.impl.Op.type.75226a.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.type.75226a.2: type = fn_type @T.binding.as_type.as.AddWith.impl.Op.1, @T.binding.as_type.as.AddWith.impl.f1a(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.b037a1.2: %T.binding.as_type.as.AddWith.impl.Op.type.75226a.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %AddWith.facet.07d: %AddWith.type.9c2 = facet_value Core.IntLiteral, (%AddWith.impl_witness.740) [concrete]
-// CHECK:STDOUT:   %.26f: type = fn_type_with_self_type %AddWith.Op.type.9a6, %AddWith.facet.07d [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.bound.083bd2.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.AddWith.impl.Op.b037a1.2 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.specific_fn.6a47c4.1: <specific function> = specific_function %T.binding.as_type.as.AddWith.impl.Op.b037a1.2, @T.binding.as_type.as.AddWith.impl.Op.1(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %bound_method.76c7cf.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.AddWith.impl.Op.specific_fn.6a47c4.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.bound.083bd2.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.AddWith.impl.Op.b037a1.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.specific_fn.6a47c4.2: <specific function> = specific_function %T.binding.as_type.as.AddWith.impl.Op.b037a1.1, @T.binding.as_type.as.AddWith.impl.Op.2(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %bound_method.76c7cf.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.AddWith.impl.Op.specific_fn.6a47c4.2 [concrete]
-// CHECK:STDOUT:   %SubWith.impl_witness.980: <witness> = impl_witness imports.%SubWith.impl_witness_table.125, @T.binding.as_type.as.SubWith.impl.e1e(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.type.8ada84.1: type = fn_type @T.binding.as_type.as.SubWith.impl.Op.2, @T.binding.as_type.as.SubWith.impl.e1e(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.d20ebd.1: %T.binding.as_type.as.SubWith.impl.Op.type.8ada84.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.type.8ada84.2: type = fn_type @T.binding.as_type.as.SubWith.impl.Op.1, @T.binding.as_type.as.SubWith.impl.e1e(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.d20ebd.2: %T.binding.as_type.as.SubWith.impl.Op.type.8ada84.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %SubWith.facet.dc9: %SubWith.type.e8e = facet_value Core.IntLiteral, (%SubWith.impl_witness.980) [concrete]
-// CHECK:STDOUT:   %.4fb: type = fn_type_with_self_type %SubWith.Op.type.533, %SubWith.facet.dc9 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.bound.09e45c.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.SubWith.impl.Op.d20ebd.2 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.specific_fn.8885f5.1: <specific function> = specific_function %T.binding.as_type.as.SubWith.impl.Op.d20ebd.2, @T.binding.as_type.as.SubWith.impl.Op.1(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %bound_method.bedc54.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.SubWith.impl.Op.specific_fn.8885f5.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.bound.09e45c.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.SubWith.impl.Op.d20ebd.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.specific_fn.8885f5.2: <specific function> = specific_function %T.binding.as_type.as.SubWith.impl.Op.d20ebd.1, @T.binding.as_type.as.SubWith.impl.Op.2(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %bound_method.bedc54.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.SubWith.impl.Op.specific_fn.8885f5.2 [concrete]
-// CHECK:STDOUT:   %MulWith.impl_witness.824: <witness> = impl_witness imports.%MulWith.impl_witness_table.ef7, @T.binding.as_type.as.MulWith.impl.6d9(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.type.2affc8.1: type = fn_type @T.binding.as_type.as.MulWith.impl.Op.2, @T.binding.as_type.as.MulWith.impl.6d9(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.075f45.1: %T.binding.as_type.as.MulWith.impl.Op.type.2affc8.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.type.2affc8.2: type = fn_type @T.binding.as_type.as.MulWith.impl.Op.1, @T.binding.as_type.as.MulWith.impl.6d9(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.075f45.2: %T.binding.as_type.as.MulWith.impl.Op.type.2affc8.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %MulWith.facet.603: %MulWith.type.a32 = facet_value Core.IntLiteral, (%MulWith.impl_witness.824) [concrete]
-// CHECK:STDOUT:   %.da9: type = fn_type_with_self_type %MulWith.Op.type.44b, %MulWith.facet.603 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.bound.9ab9cd.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.MulWith.impl.Op.075f45.2 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.specific_fn.785270.1: <specific function> = specific_function %T.binding.as_type.as.MulWith.impl.Op.075f45.2, @T.binding.as_type.as.MulWith.impl.Op.1(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %bound_method.82b41e.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.MulWith.impl.Op.specific_fn.785270.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.bound.9ab9cd.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.MulWith.impl.Op.075f45.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.specific_fn.785270.2: <specific function> = specific_function %T.binding.as_type.as.MulWith.impl.Op.075f45.1, @T.binding.as_type.as.MulWith.impl.Op.2(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %bound_method.82b41e.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.MulWith.impl.Op.specific_fn.785270.2 [concrete]
-// CHECK:STDOUT:   %DivWith.impl_witness.fea: <witness> = impl_witness imports.%DivWith.impl_witness_table.4bd, @T.binding.as_type.as.DivWith.impl.67f(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.type.b86756.1: type = fn_type @T.binding.as_type.as.DivWith.impl.Op.2, @T.binding.as_type.as.DivWith.impl.67f(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.637574.1: %T.binding.as_type.as.DivWith.impl.Op.type.b86756.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.type.b86756.2: type = fn_type @T.binding.as_type.as.DivWith.impl.Op.1, @T.binding.as_type.as.DivWith.impl.67f(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.637574.2: %T.binding.as_type.as.DivWith.impl.Op.type.b86756.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %DivWith.facet.5a3: %DivWith.type.0c0 = facet_value Core.IntLiteral, (%DivWith.impl_witness.fea) [concrete]
-// CHECK:STDOUT:   %.0bb: type = fn_type_with_self_type %DivWith.Op.type.494, %DivWith.facet.5a3 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.bound.53c922.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.DivWith.impl.Op.637574.2 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.specific_fn.332c8a.1: <specific function> = specific_function %T.binding.as_type.as.DivWith.impl.Op.637574.2, @T.binding.as_type.as.DivWith.impl.Op.1(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %bound_method.7598a7.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.DivWith.impl.Op.specific_fn.332c8a.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.bound.53c922.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.DivWith.impl.Op.637574.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.specific_fn.332c8a.2: <specific function> = specific_function %T.binding.as_type.as.DivWith.impl.Op.637574.1, @T.binding.as_type.as.DivWith.impl.Op.2(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %bound_method.7598a7.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.DivWith.impl.Op.specific_fn.332c8a.2 [concrete]
-// CHECK:STDOUT:   %ModWith.impl_witness.770: <witness> = impl_witness imports.%ModWith.impl_witness_table.644, @T.binding.as_type.as.ModWith.impl.5ca(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.type.84d6b7.1: type = fn_type @T.binding.as_type.as.ModWith.impl.Op.2, @T.binding.as_type.as.ModWith.impl.5ca(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.5c95af.1: %T.binding.as_type.as.ModWith.impl.Op.type.84d6b7.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.type.84d6b7.2: type = fn_type @T.binding.as_type.as.ModWith.impl.Op.1, @T.binding.as_type.as.ModWith.impl.5ca(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.5c95af.2: %T.binding.as_type.as.ModWith.impl.Op.type.84d6b7.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %ModWith.facet.ef7: %ModWith.type.2fc = facet_value Core.IntLiteral, (%ModWith.impl_witness.770) [concrete]
-// CHECK:STDOUT:   %.930: type = fn_type_with_self_type %ModWith.Op.type.c13, %ModWith.facet.ef7 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.bound.468823.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.ModWith.impl.Op.5c95af.2 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.specific_fn.4b7f8c.1: <specific function> = specific_function %T.binding.as_type.as.ModWith.impl.Op.5c95af.2, @T.binding.as_type.as.ModWith.impl.Op.1(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %bound_method.83c96c.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.ModWith.impl.Op.specific_fn.4b7f8c.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.bound.468823.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.ModWith.impl.Op.5c95af.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.specific_fn.4b7f8c.2: <specific function> = specific_function %T.binding.as_type.as.ModWith.impl.Op.5c95af.1, @T.binding.as_type.as.ModWith.impl.Op.2(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %bound_method.83c96c.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.ModWith.impl.Op.specific_fn.4b7f8c.2 [concrete]
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %Cpp: <namespace> = namespace file.%Cpp.import_cpp, [concrete] {
-// CHECK:STDOUT:     .long = constants.%Cpp.long
-// CHECK:STDOUT:     import Cpp//...
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %Core.import_ref.42d: @Core.IntLiteral.as.ImplicitAs.impl.b2d.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.4e6) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.b2d.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3c2)]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness_table.74f = impl_witness_table (%Core.import_ref.42d), @Core.IntLiteral.as.ImplicitAs.impl.b2d [concrete]
-// CHECK:STDOUT:   %Core.import_ref.b8a: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.b38 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness_table.903 = impl_witness_table (%Core.import_ref.b8a), @Core.IntLiteral.as.ImplicitAs.impl.052 [concrete]
-// CHECK:STDOUT:   %Core.import_ref.cb912f.2 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.6ee: @T.binding.as_type.as.AddWith.impl.f1a.%T.binding.as_type.as.AddWith.impl.Op.type.2 (%T.binding.as_type.as.AddWith.impl.Op.type.704168.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @T.binding.as_type.as.AddWith.impl.f1a.%T.binding.as_type.as.AddWith.impl.Op.2 (constants.%T.binding.as_type.as.AddWith.impl.Op.399102.1)]
-// CHECK:STDOUT:   %AddWith.impl_witness_table.0dc = impl_witness_table (%Core.import_ref.cb912f.2, %Core.import_ref.6ee), @T.binding.as_type.as.AddWith.impl.f1a [concrete]
-// CHECK:STDOUT:   %Core.Op.af2: @T.binding.as_type.as.AddWith.impl.f1a.%T.binding.as_type.as.AddWith.impl.Op.type.1 (%T.binding.as_type.as.AddWith.impl.Op.type.704168.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @T.binding.as_type.as.AddWith.impl.f1a.%T.binding.as_type.as.AddWith.impl.Op.1 (constants.%T.binding.as_type.as.AddWith.impl.Op.399102.2)]
-// CHECK:STDOUT:   %Core.import_ref.4fa: %i32.as.ImplicitAs.impl.Convert.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness_table.5ad = impl_witness_table (%Core.import_ref.4fa), @i32.as.ImplicitAs.impl [concrete]
-// CHECK:STDOUT:   %Core.import_ref.cb912f.4 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.c70: @T.binding.as_type.as.SubWith.impl.e1e.%T.binding.as_type.as.SubWith.impl.Op.type.2 (%T.binding.as_type.as.SubWith.impl.Op.type.d77f83.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @T.binding.as_type.as.SubWith.impl.e1e.%T.binding.as_type.as.SubWith.impl.Op.2 (constants.%T.binding.as_type.as.SubWith.impl.Op.600de1.1)]
-// CHECK:STDOUT:   %SubWith.impl_witness_table.125 = impl_witness_table (%Core.import_ref.cb912f.4, %Core.import_ref.c70), @T.binding.as_type.as.SubWith.impl.e1e [concrete]
-// CHECK:STDOUT:   %Core.Op.fcc: @T.binding.as_type.as.SubWith.impl.e1e.%T.binding.as_type.as.SubWith.impl.Op.type.1 (%T.binding.as_type.as.SubWith.impl.Op.type.d77f83.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @T.binding.as_type.as.SubWith.impl.e1e.%T.binding.as_type.as.SubWith.impl.Op.1 (constants.%T.binding.as_type.as.SubWith.impl.Op.600de1.2)]
-// CHECK:STDOUT:   %Core.import_ref.cb912f.6 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.7df: @T.binding.as_type.as.MulWith.impl.6d9.%T.binding.as_type.as.MulWith.impl.Op.type.2 (%T.binding.as_type.as.MulWith.impl.Op.type.20586f.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @T.binding.as_type.as.MulWith.impl.6d9.%T.binding.as_type.as.MulWith.impl.Op.2 (constants.%T.binding.as_type.as.MulWith.impl.Op.036dac.1)]
-// CHECK:STDOUT:   %MulWith.impl_witness_table.ef7 = impl_witness_table (%Core.import_ref.cb912f.6, %Core.import_ref.7df), @T.binding.as_type.as.MulWith.impl.6d9 [concrete]
-// CHECK:STDOUT:   %Core.Op.6a1: @T.binding.as_type.as.MulWith.impl.6d9.%T.binding.as_type.as.MulWith.impl.Op.type.1 (%T.binding.as_type.as.MulWith.impl.Op.type.20586f.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @T.binding.as_type.as.MulWith.impl.6d9.%T.binding.as_type.as.MulWith.impl.Op.1 (constants.%T.binding.as_type.as.MulWith.impl.Op.036dac.2)]
-// CHECK:STDOUT:   %Core.import_ref.cb912f.8 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.425: @T.binding.as_type.as.DivWith.impl.67f.%T.binding.as_type.as.DivWith.impl.Op.type.2 (%T.binding.as_type.as.DivWith.impl.Op.type.c7967e.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @T.binding.as_type.as.DivWith.impl.67f.%T.binding.as_type.as.DivWith.impl.Op.2 (constants.%T.binding.as_type.as.DivWith.impl.Op.f3fb3f.1)]
-// CHECK:STDOUT:   %DivWith.impl_witness_table.4bd = impl_witness_table (%Core.import_ref.cb912f.8, %Core.import_ref.425), @T.binding.as_type.as.DivWith.impl.67f [concrete]
-// CHECK:STDOUT:   %Core.Op.ace: @T.binding.as_type.as.DivWith.impl.67f.%T.binding.as_type.as.DivWith.impl.Op.type.1 (%T.binding.as_type.as.DivWith.impl.Op.type.c7967e.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @T.binding.as_type.as.DivWith.impl.67f.%T.binding.as_type.as.DivWith.impl.Op.1 (constants.%T.binding.as_type.as.DivWith.impl.Op.f3fb3f.2)]
-// CHECK:STDOUT:   %Core.import_ref.cb912f.10 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.0d4: @T.binding.as_type.as.ModWith.impl.5ca.%T.binding.as_type.as.ModWith.impl.Op.type.2 (%T.binding.as_type.as.ModWith.impl.Op.type.302b2e.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @T.binding.as_type.as.ModWith.impl.5ca.%T.binding.as_type.as.ModWith.impl.Op.2 (constants.%T.binding.as_type.as.ModWith.impl.Op.02226a.1)]
-// CHECK:STDOUT:   %ModWith.impl_witness_table.644 = impl_witness_table (%Core.import_ref.cb912f.10, %Core.import_ref.0d4), @T.binding.as_type.as.ModWith.impl.5ca [concrete]
-// CHECK:STDOUT:   %Core.Op.c8c: @T.binding.as_type.as.ModWith.impl.5ca.%T.binding.as_type.as.ModWith.impl.Op.type.1 (%T.binding.as_type.as.ModWith.impl.Op.type.302b2e.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @T.binding.as_type.as.ModWith.impl.5ca.%T.binding.as_type.as.ModWith.impl.Op.1 (constants.%T.binding.as_type.as.ModWith.impl.Op.02226a.2)]
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: fn @ArithmeticHeterogeneousLongRightSide() {
-// CHECK:STDOUT: !entry:
-// CHECK:STDOUT:   <elided>
-// CHECK:STDOUT:   name_binding_decl {
-// CHECK:STDOUT:     %x.patt: %pattern_type.68c = value_binding_pattern x [concrete]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %int_1.loc11: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %.loc11_13: type = splice_block %long.ref [concrete = constants.%Cpp.long] {
-// CHECK:STDOUT:     %Cpp.ref: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
-// CHECK:STDOUT:     %long.ref: type = name_ref long, constants.%Cpp.long [concrete = constants.%Cpp.long]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %impl.elem0.loc11: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %bound_method.loc11: <bound method> = bound_method %int_1.loc11, %impl.elem0.loc11 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc11: init %Cpp.long = call %bound_method.loc11(%int_1.loc11) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc11_21.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc11 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc11_21.2: %Cpp.long = converted %int_1.loc11, %.loc11_21.1 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %x: %Cpp.long = value_binding x, %.loc11_21.2
-// CHECK:STDOUT:   %AssertSameType.ref.loc12: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %b.ref.loc12: %i32 = name_ref b, %b
-// CHECK:STDOUT:   %x.ref.loc12_22: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %impl.elem1.loc12: %.285 = impl_witness_access constants.%AddWith.impl_witness.a1d, element1 [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.3fccd2.2]
-// CHECK:STDOUT:   %bound_method.loc12_20.1: <bound method> = bound_method %b.ref.loc12, %impl.elem1.loc12
-// CHECK:STDOUT:   %specific_fn.loc12: <specific function> = specific_function %impl.elem1.loc12, @T.binding.as_type.as.AddWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.specific_fn.09578f.1]
-// CHECK:STDOUT:   %bound_method.loc12_20.2: <bound method> = bound_method %b.ref.loc12, %specific_fn.loc12
-// CHECK:STDOUT:   %.loc12_20.1: %T.binding.as_type.as.AddWith.impl.Op.type.5105fb.1 = specific_constant imports.%Core.Op.af2, @T.binding.as_type.as.AddWith.impl.f1a(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.3fccd2.1]
-// CHECK:STDOUT:   %Op.ref.loc12: %T.binding.as_type.as.AddWith.impl.Op.type.5105fb.1 = name_ref Op, %.loc12_20.1 [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.3fccd2.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.bound.loc12: <bound method> = bound_method %b.ref.loc12, %Op.ref.loc12
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.specific_fn.loc12: <specific function> = specific_function %Op.ref.loc12, @T.binding.as_type.as.AddWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.specific_fn.09578f.2]
-// CHECK:STDOUT:   %bound_method.loc12_20.3: <bound method> = bound_method %b.ref.loc12, %T.binding.as_type.as.AddWith.impl.Op.specific_fn.loc12
-// CHECK:STDOUT:   %impl.elem0.loc12: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc12_18: <bound method> = bound_method %b.ref.loc12, %impl.elem0.loc12
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc12: init %Cpp.long = call %bound_method.loc12_18(%b.ref.loc12)
-// CHECK:STDOUT:   %.loc12_18.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc12
-// CHECK:STDOUT:   %.loc12_18.2: %Cpp.long = converted %b.ref.loc12, %.loc12_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.call.loc12: init %Cpp.long = call %bound_method.loc12_20.3(%.loc12_18.2, %x.ref.loc12_22)
-// CHECK:STDOUT:   %x.ref.loc12_25: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc12: <specific function> = specific_function %AssertSameType.ref.loc12, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc12_20.2: %Cpp.long = value_of_initializer %T.binding.as_type.as.AddWith.impl.Op.call.loc12
-// CHECK:STDOUT:   %.loc12_20.3: %Cpp.long = converted %T.binding.as_type.as.AddWith.impl.Op.call.loc12, %.loc12_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc12: init %empty_tuple.type = call %AssertSameType.specific_fn.loc12(%.loc12_20.3, %x.ref.loc12_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc13: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %b.ref.loc13: %i32 = name_ref b, %b
-// CHECK:STDOUT:   %x.ref.loc13_22: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %impl.elem1.loc13: %.040 = impl_witness_access constants.%SubWith.impl_witness.702, element1 [concrete = constants.%T.binding.as_type.as.SubWith.impl.Op.f9b5c3.2]
-// CHECK:STDOUT:   %bound_method.loc13_20.1: <bound method> = bound_method %b.ref.loc13, %impl.elem1.loc13
-// CHECK:STDOUT:   %specific_fn.loc13: <specific function> = specific_function %impl.elem1.loc13, @T.binding.as_type.as.SubWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.SubWith.impl.Op.specific_fn.b0f48e.1]
-// CHECK:STDOUT:   %bound_method.loc13_20.2: <bound method> = bound_method %b.ref.loc13, %specific_fn.loc13
-// CHECK:STDOUT:   %.loc13_20.1: %T.binding.as_type.as.SubWith.impl.Op.type.caca02.1 = specific_constant imports.%Core.Op.fcc, @T.binding.as_type.as.SubWith.impl.e1e(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.SubWith.impl.Op.f9b5c3.1]
-// CHECK:STDOUT:   %Op.ref.loc13: %T.binding.as_type.as.SubWith.impl.Op.type.caca02.1 = name_ref Op, %.loc13_20.1 [concrete = constants.%T.binding.as_type.as.SubWith.impl.Op.f9b5c3.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.bound.loc13: <bound method> = bound_method %b.ref.loc13, %Op.ref.loc13
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.specific_fn.loc13: <specific function> = specific_function %Op.ref.loc13, @T.binding.as_type.as.SubWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.SubWith.impl.Op.specific_fn.b0f48e.2]
-// CHECK:STDOUT:   %bound_method.loc13_20.3: <bound method> = bound_method %b.ref.loc13, %T.binding.as_type.as.SubWith.impl.Op.specific_fn.loc13
-// CHECK:STDOUT:   %impl.elem0.loc13: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc13_18: <bound method> = bound_method %b.ref.loc13, %impl.elem0.loc13
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc13: init %Cpp.long = call %bound_method.loc13_18(%b.ref.loc13)
-// CHECK:STDOUT:   %.loc13_18.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc13
-// CHECK:STDOUT:   %.loc13_18.2: %Cpp.long = converted %b.ref.loc13, %.loc13_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.call.loc13: init %Cpp.long = call %bound_method.loc13_20.3(%.loc13_18.2, %x.ref.loc13_22)
-// CHECK:STDOUT:   %x.ref.loc13_25: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc13: <specific function> = specific_function %AssertSameType.ref.loc13, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc13_20.2: %Cpp.long = value_of_initializer %T.binding.as_type.as.SubWith.impl.Op.call.loc13
-// CHECK:STDOUT:   %.loc13_20.3: %Cpp.long = converted %T.binding.as_type.as.SubWith.impl.Op.call.loc13, %.loc13_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc13: init %empty_tuple.type = call %AssertSameType.specific_fn.loc13(%.loc13_20.3, %x.ref.loc13_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc14: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %b.ref.loc14: %i32 = name_ref b, %b
-// CHECK:STDOUT:   %x.ref.loc14_22: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %impl.elem1.loc14: %.1b4 = impl_witness_access constants.%MulWith.impl_witness.f85, element1 [concrete = constants.%T.binding.as_type.as.MulWith.impl.Op.461492.2]
-// CHECK:STDOUT:   %bound_method.loc14_20.1: <bound method> = bound_method %b.ref.loc14, %impl.elem1.loc14
-// CHECK:STDOUT:   %specific_fn.loc14: <specific function> = specific_function %impl.elem1.loc14, @T.binding.as_type.as.MulWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.MulWith.impl.Op.specific_fn.475813.1]
-// CHECK:STDOUT:   %bound_method.loc14_20.2: <bound method> = bound_method %b.ref.loc14, %specific_fn.loc14
-// CHECK:STDOUT:   %.loc14_20.1: %T.binding.as_type.as.MulWith.impl.Op.type.1189b3.1 = specific_constant imports.%Core.Op.6a1, @T.binding.as_type.as.MulWith.impl.6d9(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.MulWith.impl.Op.461492.1]
-// CHECK:STDOUT:   %Op.ref.loc14: %T.binding.as_type.as.MulWith.impl.Op.type.1189b3.1 = name_ref Op, %.loc14_20.1 [concrete = constants.%T.binding.as_type.as.MulWith.impl.Op.461492.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.bound.loc14: <bound method> = bound_method %b.ref.loc14, %Op.ref.loc14
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.specific_fn.loc14: <specific function> = specific_function %Op.ref.loc14, @T.binding.as_type.as.MulWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.MulWith.impl.Op.specific_fn.475813.2]
-// CHECK:STDOUT:   %bound_method.loc14_20.3: <bound method> = bound_method %b.ref.loc14, %T.binding.as_type.as.MulWith.impl.Op.specific_fn.loc14
-// CHECK:STDOUT:   %impl.elem0.loc14: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc14_18: <bound method> = bound_method %b.ref.loc14, %impl.elem0.loc14
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc14: init %Cpp.long = call %bound_method.loc14_18(%b.ref.loc14)
-// CHECK:STDOUT:   %.loc14_18.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc14
-// CHECK:STDOUT:   %.loc14_18.2: %Cpp.long = converted %b.ref.loc14, %.loc14_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.call.loc14: init %Cpp.long = call %bound_method.loc14_20.3(%.loc14_18.2, %x.ref.loc14_22)
-// CHECK:STDOUT:   %x.ref.loc14_25: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc14: <specific function> = specific_function %AssertSameType.ref.loc14, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc14_20.2: %Cpp.long = value_of_initializer %T.binding.as_type.as.MulWith.impl.Op.call.loc14
-// CHECK:STDOUT:   %.loc14_20.3: %Cpp.long = converted %T.binding.as_type.as.MulWith.impl.Op.call.loc14, %.loc14_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc14: init %empty_tuple.type = call %AssertSameType.specific_fn.loc14(%.loc14_20.3, %x.ref.loc14_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc15: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %b.ref.loc15: %i32 = name_ref b, %b
-// CHECK:STDOUT:   %x.ref.loc15_22: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %impl.elem1.loc15: %.0f3 = impl_witness_access constants.%DivWith.impl_witness.996, element1 [concrete = constants.%T.binding.as_type.as.DivWith.impl.Op.e5dcee.2]
-// CHECK:STDOUT:   %bound_method.loc15_20.1: <bound method> = bound_method %b.ref.loc15, %impl.elem1.loc15
-// CHECK:STDOUT:   %specific_fn.loc15: <specific function> = specific_function %impl.elem1.loc15, @T.binding.as_type.as.DivWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.DivWith.impl.Op.specific_fn.8f9bff.1]
-// CHECK:STDOUT:   %bound_method.loc15_20.2: <bound method> = bound_method %b.ref.loc15, %specific_fn.loc15
-// CHECK:STDOUT:   %.loc15_20.1: %T.binding.as_type.as.DivWith.impl.Op.type.bc0f3d.1 = specific_constant imports.%Core.Op.ace, @T.binding.as_type.as.DivWith.impl.67f(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.DivWith.impl.Op.e5dcee.1]
-// CHECK:STDOUT:   %Op.ref.loc15: %T.binding.as_type.as.DivWith.impl.Op.type.bc0f3d.1 = name_ref Op, %.loc15_20.1 [concrete = constants.%T.binding.as_type.as.DivWith.impl.Op.e5dcee.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.bound.loc15: <bound method> = bound_method %b.ref.loc15, %Op.ref.loc15
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.specific_fn.loc15: <specific function> = specific_function %Op.ref.loc15, @T.binding.as_type.as.DivWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.DivWith.impl.Op.specific_fn.8f9bff.2]
-// CHECK:STDOUT:   %bound_method.loc15_20.3: <bound method> = bound_method %b.ref.loc15, %T.binding.as_type.as.DivWith.impl.Op.specific_fn.loc15
-// CHECK:STDOUT:   %impl.elem0.loc15: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc15_18: <bound method> = bound_method %b.ref.loc15, %impl.elem0.loc15
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc15: init %Cpp.long = call %bound_method.loc15_18(%b.ref.loc15)
-// CHECK:STDOUT:   %.loc15_18.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc15
-// CHECK:STDOUT:   %.loc15_18.2: %Cpp.long = converted %b.ref.loc15, %.loc15_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.call.loc15: init %Cpp.long = call %bound_method.loc15_20.3(%.loc15_18.2, %x.ref.loc15_22)
-// CHECK:STDOUT:   %x.ref.loc15_25: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc15: <specific function> = specific_function %AssertSameType.ref.loc15, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc15_20.2: %Cpp.long = value_of_initializer %T.binding.as_type.as.DivWith.impl.Op.call.loc15
-// CHECK:STDOUT:   %.loc15_20.3: %Cpp.long = converted %T.binding.as_type.as.DivWith.impl.Op.call.loc15, %.loc15_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc15: init %empty_tuple.type = call %AssertSameType.specific_fn.loc15(%.loc15_20.3, %x.ref.loc15_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc16: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %b.ref.loc16: %i32 = name_ref b, %b
-// CHECK:STDOUT:   %x.ref.loc16_22: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %impl.elem1.loc16: %.e68 = impl_witness_access constants.%ModWith.impl_witness.e1d, element1 [concrete = constants.%T.binding.as_type.as.ModWith.impl.Op.c5465f.2]
-// CHECK:STDOUT:   %bound_method.loc16_20.1: <bound method> = bound_method %b.ref.loc16, %impl.elem1.loc16
-// CHECK:STDOUT:   %specific_fn.loc16: <specific function> = specific_function %impl.elem1.loc16, @T.binding.as_type.as.ModWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.ModWith.impl.Op.specific_fn.ee32ad.1]
-// CHECK:STDOUT:   %bound_method.loc16_20.2: <bound method> = bound_method %b.ref.loc16, %specific_fn.loc16
-// CHECK:STDOUT:   %.loc16_20.1: %T.binding.as_type.as.ModWith.impl.Op.type.9786fd.1 = specific_constant imports.%Core.Op.c8c, @T.binding.as_type.as.ModWith.impl.5ca(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.ModWith.impl.Op.c5465f.1]
-// CHECK:STDOUT:   %Op.ref.loc16: %T.binding.as_type.as.ModWith.impl.Op.type.9786fd.1 = name_ref Op, %.loc16_20.1 [concrete = constants.%T.binding.as_type.as.ModWith.impl.Op.c5465f.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.bound.loc16: <bound method> = bound_method %b.ref.loc16, %Op.ref.loc16
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.specific_fn.loc16: <specific function> = specific_function %Op.ref.loc16, @T.binding.as_type.as.ModWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.ModWith.impl.Op.specific_fn.ee32ad.2]
-// CHECK:STDOUT:   %bound_method.loc16_20.3: <bound method> = bound_method %b.ref.loc16, %T.binding.as_type.as.ModWith.impl.Op.specific_fn.loc16
-// CHECK:STDOUT:   %impl.elem0.loc16: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc16_18: <bound method> = bound_method %b.ref.loc16, %impl.elem0.loc16
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc16: init %Cpp.long = call %bound_method.loc16_18(%b.ref.loc16)
-// CHECK:STDOUT:   %.loc16_18.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc16
-// CHECK:STDOUT:   %.loc16_18.2: %Cpp.long = converted %b.ref.loc16, %.loc16_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.call.loc16: init %Cpp.long = call %bound_method.loc16_20.3(%.loc16_18.2, %x.ref.loc16_22)
-// CHECK:STDOUT:   %x.ref.loc16_25: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc16: <specific function> = specific_function %AssertSameType.ref.loc16, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc16_20.2: %Cpp.long = value_of_initializer %T.binding.as_type.as.ModWith.impl.Op.call.loc16
-// CHECK:STDOUT:   %.loc16_20.3: %Cpp.long = converted %T.binding.as_type.as.ModWith.impl.Op.call.loc16, %.loc16_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc16: init %empty_tuple.type = call %AssertSameType.specific_fn.loc16(%.loc16_20.3, %x.ref.loc16_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc18: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %int_1.loc18: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %x.ref.loc18_22: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %impl.elem1.loc18: %.26f = impl_witness_access constants.%AddWith.impl_witness.740, element1 [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.b037a1.2]
-// CHECK:STDOUT:   %bound_method.loc18_20.1: <bound method> = bound_method %int_1.loc18, %impl.elem1.loc18 [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.bound.083bd2.1]
-// CHECK:STDOUT:   %specific_fn.loc18: <specific function> = specific_function %impl.elem1.loc18, @T.binding.as_type.as.AddWith.impl.Op.1(constants.%ImplicitAs.facet.eed) [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.specific_fn.6a47c4.1]
-// CHECK:STDOUT:   %bound_method.loc18_20.2: <bound method> = bound_method %int_1.loc18, %specific_fn.loc18 [concrete = constants.%bound_method.76c7cf.1]
-// CHECK:STDOUT:   %.loc18_20.1: %T.binding.as_type.as.AddWith.impl.Op.type.75226a.1 = specific_constant imports.%Core.Op.af2, @T.binding.as_type.as.AddWith.impl.f1a(constants.%ImplicitAs.facet.eed) [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.b037a1.1]
-// CHECK:STDOUT:   %Op.ref.loc18: %T.binding.as_type.as.AddWith.impl.Op.type.75226a.1 = name_ref Op, %.loc18_20.1 [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.b037a1.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.bound.loc18: <bound method> = bound_method %int_1.loc18, %Op.ref.loc18 [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.bound.083bd2.2]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.specific_fn.loc18: <specific function> = specific_function %Op.ref.loc18, @T.binding.as_type.as.AddWith.impl.Op.2(constants.%ImplicitAs.facet.eed) [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.specific_fn.6a47c4.2]
-// CHECK:STDOUT:   %bound_method.loc18_20.3: <bound method> = bound_method %int_1.loc18, %T.binding.as_type.as.AddWith.impl.Op.specific_fn.loc18 [concrete = constants.%bound_method.76c7cf.2]
-// CHECK:STDOUT:   %impl.elem0.loc18: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %bound_method.loc18_18: <bound method> = bound_method %int_1.loc18, %impl.elem0.loc18 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18: init %Cpp.long = call %bound_method.loc18_18(%int_1.loc18) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc18_18.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc18_18.2: %Cpp.long = converted %int_1.loc18, %.loc18_18.1 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.call.loc18: init %Cpp.long = call %bound_method.loc18_20.3(%.loc18_18.2, %x.ref.loc18_22)
-// CHECK:STDOUT:   %x.ref.loc18_25: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc18: <specific function> = specific_function %AssertSameType.ref.loc18, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc18_20.2: %Cpp.long = value_of_initializer %T.binding.as_type.as.AddWith.impl.Op.call.loc18
-// CHECK:STDOUT:   %.loc18_20.3: %Cpp.long = converted %T.binding.as_type.as.AddWith.impl.Op.call.loc18, %.loc18_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc18: init %empty_tuple.type = call %AssertSameType.specific_fn.loc18(%.loc18_20.3, %x.ref.loc18_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc19: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %int_1.loc19: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %x.ref.loc19_22: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %impl.elem1.loc19: %.4fb = impl_witness_access constants.%SubWith.impl_witness.980, element1 [concrete = constants.%T.binding.as_type.as.SubWith.impl.Op.d20ebd.2]
-// CHECK:STDOUT:   %bound_method.loc19_20.1: <bound method> = bound_method %int_1.loc19, %impl.elem1.loc19 [concrete = constants.%T.binding.as_type.as.SubWith.impl.Op.bound.09e45c.1]
-// CHECK:STDOUT:   %specific_fn.loc19: <specific function> = specific_function %impl.elem1.loc19, @T.binding.as_type.as.SubWith.impl.Op.1(constants.%ImplicitAs.facet.eed) [concrete = constants.%T.binding.as_type.as.SubWith.impl.Op.specific_fn.8885f5.1]
-// CHECK:STDOUT:   %bound_method.loc19_20.2: <bound method> = bound_method %int_1.loc19, %specific_fn.loc19 [concrete = constants.%bound_method.bedc54.1]
-// CHECK:STDOUT:   %.loc19_20.1: %T.binding.as_type.as.SubWith.impl.Op.type.8ada84.1 = specific_constant imports.%Core.Op.fcc, @T.binding.as_type.as.SubWith.impl.e1e(constants.%ImplicitAs.facet.eed) [concrete = constants.%T.binding.as_type.as.SubWith.impl.Op.d20ebd.1]
-// CHECK:STDOUT:   %Op.ref.loc19: %T.binding.as_type.as.SubWith.impl.Op.type.8ada84.1 = name_ref Op, %.loc19_20.1 [concrete = constants.%T.binding.as_type.as.SubWith.impl.Op.d20ebd.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.bound.loc19: <bound method> = bound_method %int_1.loc19, %Op.ref.loc19 [concrete = constants.%T.binding.as_type.as.SubWith.impl.Op.bound.09e45c.2]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.specific_fn.loc19: <specific function> = specific_function %Op.ref.loc19, @T.binding.as_type.as.SubWith.impl.Op.2(constants.%ImplicitAs.facet.eed) [concrete = constants.%T.binding.as_type.as.SubWith.impl.Op.specific_fn.8885f5.2]
-// CHECK:STDOUT:   %bound_method.loc19_20.3: <bound method> = bound_method %int_1.loc19, %T.binding.as_type.as.SubWith.impl.Op.specific_fn.loc19 [concrete = constants.%bound_method.bedc54.2]
-// CHECK:STDOUT:   %impl.elem0.loc19: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %bound_method.loc19_18: <bound method> = bound_method %int_1.loc19, %impl.elem0.loc19 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19: init %Cpp.long = call %bound_method.loc19_18(%int_1.loc19) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc19_18.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc19_18.2: %Cpp.long = converted %int_1.loc19, %.loc19_18.1 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.call.loc19: init %Cpp.long = call %bound_method.loc19_20.3(%.loc19_18.2, %x.ref.loc19_22)
-// CHECK:STDOUT:   %x.ref.loc19_25: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc19: <specific function> = specific_function %AssertSameType.ref.loc19, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc19_20.2: %Cpp.long = value_of_initializer %T.binding.as_type.as.SubWith.impl.Op.call.loc19
-// CHECK:STDOUT:   %.loc19_20.3: %Cpp.long = converted %T.binding.as_type.as.SubWith.impl.Op.call.loc19, %.loc19_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc19: init %empty_tuple.type = call %AssertSameType.specific_fn.loc19(%.loc19_20.3, %x.ref.loc19_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc20: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %int_1.loc20: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %x.ref.loc20_22: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %impl.elem1.loc20: %.da9 = impl_witness_access constants.%MulWith.impl_witness.824, element1 [concrete = constants.%T.binding.as_type.as.MulWith.impl.Op.075f45.2]
-// CHECK:STDOUT:   %bound_method.loc20_20.1: <bound method> = bound_method %int_1.loc20, %impl.elem1.loc20 [concrete = constants.%T.binding.as_type.as.MulWith.impl.Op.bound.9ab9cd.1]
-// CHECK:STDOUT:   %specific_fn.loc20: <specific function> = specific_function %impl.elem1.loc20, @T.binding.as_type.as.MulWith.impl.Op.1(constants.%ImplicitAs.facet.eed) [concrete = constants.%T.binding.as_type.as.MulWith.impl.Op.specific_fn.785270.1]
-// CHECK:STDOUT:   %bound_method.loc20_20.2: <bound method> = bound_method %int_1.loc20, %specific_fn.loc20 [concrete = constants.%bound_method.82b41e.1]
-// CHECK:STDOUT:   %.loc20_20.1: %T.binding.as_type.as.MulWith.impl.Op.type.2affc8.1 = specific_constant imports.%Core.Op.6a1, @T.binding.as_type.as.MulWith.impl.6d9(constants.%ImplicitAs.facet.eed) [concrete = constants.%T.binding.as_type.as.MulWith.impl.Op.075f45.1]
-// CHECK:STDOUT:   %Op.ref.loc20: %T.binding.as_type.as.MulWith.impl.Op.type.2affc8.1 = name_ref Op, %.loc20_20.1 [concrete = constants.%T.binding.as_type.as.MulWith.impl.Op.075f45.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.bound.loc20: <bound method> = bound_method %int_1.loc20, %Op.ref.loc20 [concrete = constants.%T.binding.as_type.as.MulWith.impl.Op.bound.9ab9cd.2]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.specific_fn.loc20: <specific function> = specific_function %Op.ref.loc20, @T.binding.as_type.as.MulWith.impl.Op.2(constants.%ImplicitAs.facet.eed) [concrete = constants.%T.binding.as_type.as.MulWith.impl.Op.specific_fn.785270.2]
-// CHECK:STDOUT:   %bound_method.loc20_20.3: <bound method> = bound_method %int_1.loc20, %T.binding.as_type.as.MulWith.impl.Op.specific_fn.loc20 [concrete = constants.%bound_method.82b41e.2]
-// CHECK:STDOUT:   %impl.elem0.loc20: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %bound_method.loc20_18: <bound method> = bound_method %int_1.loc20, %impl.elem0.loc20 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20: init %Cpp.long = call %bound_method.loc20_18(%int_1.loc20) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc20_18.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc20_18.2: %Cpp.long = converted %int_1.loc20, %.loc20_18.1 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.call.loc20: init %Cpp.long = call %bound_method.loc20_20.3(%.loc20_18.2, %x.ref.loc20_22)
-// CHECK:STDOUT:   %x.ref.loc20_25: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc20: <specific function> = specific_function %AssertSameType.ref.loc20, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc20_20.2: %Cpp.long = value_of_initializer %T.binding.as_type.as.MulWith.impl.Op.call.loc20
-// CHECK:STDOUT:   %.loc20_20.3: %Cpp.long = converted %T.binding.as_type.as.MulWith.impl.Op.call.loc20, %.loc20_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc20: init %empty_tuple.type = call %AssertSameType.specific_fn.loc20(%.loc20_20.3, %x.ref.loc20_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc21: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %int_1.loc21: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %x.ref.loc21_22: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %impl.elem1.loc21: %.0bb = impl_witness_access constants.%DivWith.impl_witness.fea, element1 [concrete = constants.%T.binding.as_type.as.DivWith.impl.Op.637574.2]
-// CHECK:STDOUT:   %bound_method.loc21_20.1: <bound method> = bound_method %int_1.loc21, %impl.elem1.loc21 [concrete = constants.%T.binding.as_type.as.DivWith.impl.Op.bound.53c922.1]
-// CHECK:STDOUT:   %specific_fn.loc21: <specific function> = specific_function %impl.elem1.loc21, @T.binding.as_type.as.DivWith.impl.Op.1(constants.%ImplicitAs.facet.eed) [concrete = constants.%T.binding.as_type.as.DivWith.impl.Op.specific_fn.332c8a.1]
-// CHECK:STDOUT:   %bound_method.loc21_20.2: <bound method> = bound_method %int_1.loc21, %specific_fn.loc21 [concrete = constants.%bound_method.7598a7.1]
-// CHECK:STDOUT:   %.loc21_20.1: %T.binding.as_type.as.DivWith.impl.Op.type.b86756.1 = specific_constant imports.%Core.Op.ace, @T.binding.as_type.as.DivWith.impl.67f(constants.%ImplicitAs.facet.eed) [concrete = constants.%T.binding.as_type.as.DivWith.impl.Op.637574.1]
-// CHECK:STDOUT:   %Op.ref.loc21: %T.binding.as_type.as.DivWith.impl.Op.type.b86756.1 = name_ref Op, %.loc21_20.1 [concrete = constants.%T.binding.as_type.as.DivWith.impl.Op.637574.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.bound.loc21: <bound method> = bound_method %int_1.loc21, %Op.ref.loc21 [concrete = constants.%T.binding.as_type.as.DivWith.impl.Op.bound.53c922.2]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.specific_fn.loc21: <specific function> = specific_function %Op.ref.loc21, @T.binding.as_type.as.DivWith.impl.Op.2(constants.%ImplicitAs.facet.eed) [concrete = constants.%T.binding.as_type.as.DivWith.impl.Op.specific_fn.332c8a.2]
-// CHECK:STDOUT:   %bound_method.loc21_20.3: <bound method> = bound_method %int_1.loc21, %T.binding.as_type.as.DivWith.impl.Op.specific_fn.loc21 [concrete = constants.%bound_method.7598a7.2]
-// CHECK:STDOUT:   %impl.elem0.loc21: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %bound_method.loc21_18: <bound method> = bound_method %int_1.loc21, %impl.elem0.loc21 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21: init %Cpp.long = call %bound_method.loc21_18(%int_1.loc21) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc21_18.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc21_18.2: %Cpp.long = converted %int_1.loc21, %.loc21_18.1 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.call.loc21: init %Cpp.long = call %bound_method.loc21_20.3(%.loc21_18.2, %x.ref.loc21_22)
-// CHECK:STDOUT:   %x.ref.loc21_25: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc21: <specific function> = specific_function %AssertSameType.ref.loc21, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc21_20.2: %Cpp.long = value_of_initializer %T.binding.as_type.as.DivWith.impl.Op.call.loc21
-// CHECK:STDOUT:   %.loc21_20.3: %Cpp.long = converted %T.binding.as_type.as.DivWith.impl.Op.call.loc21, %.loc21_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc21: init %empty_tuple.type = call %AssertSameType.specific_fn.loc21(%.loc21_20.3, %x.ref.loc21_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc22: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %int_1.loc22: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %x.ref.loc22_22: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %impl.elem1.loc22: %.930 = impl_witness_access constants.%ModWith.impl_witness.770, element1 [concrete = constants.%T.binding.as_type.as.ModWith.impl.Op.5c95af.2]
-// CHECK:STDOUT:   %bound_method.loc22_20.1: <bound method> = bound_method %int_1.loc22, %impl.elem1.loc22 [concrete = constants.%T.binding.as_type.as.ModWith.impl.Op.bound.468823.1]
-// CHECK:STDOUT:   %specific_fn.loc22: <specific function> = specific_function %impl.elem1.loc22, @T.binding.as_type.as.ModWith.impl.Op.1(constants.%ImplicitAs.facet.eed) [concrete = constants.%T.binding.as_type.as.ModWith.impl.Op.specific_fn.4b7f8c.1]
-// CHECK:STDOUT:   %bound_method.loc22_20.2: <bound method> = bound_method %int_1.loc22, %specific_fn.loc22 [concrete = constants.%bound_method.83c96c.1]
-// CHECK:STDOUT:   %.loc22_20.1: %T.binding.as_type.as.ModWith.impl.Op.type.84d6b7.1 = specific_constant imports.%Core.Op.c8c, @T.binding.as_type.as.ModWith.impl.5ca(constants.%ImplicitAs.facet.eed) [concrete = constants.%T.binding.as_type.as.ModWith.impl.Op.5c95af.1]
-// CHECK:STDOUT:   %Op.ref.loc22: %T.binding.as_type.as.ModWith.impl.Op.type.84d6b7.1 = name_ref Op, %.loc22_20.1 [concrete = constants.%T.binding.as_type.as.ModWith.impl.Op.5c95af.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.bound.loc22: <bound method> = bound_method %int_1.loc22, %Op.ref.loc22 [concrete = constants.%T.binding.as_type.as.ModWith.impl.Op.bound.468823.2]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.specific_fn.loc22: <specific function> = specific_function %Op.ref.loc22, @T.binding.as_type.as.ModWith.impl.Op.2(constants.%ImplicitAs.facet.eed) [concrete = constants.%T.binding.as_type.as.ModWith.impl.Op.specific_fn.4b7f8c.2]
-// CHECK:STDOUT:   %bound_method.loc22_20.3: <bound method> = bound_method %int_1.loc22, %T.binding.as_type.as.ModWith.impl.Op.specific_fn.loc22 [concrete = constants.%bound_method.83c96c.2]
-// CHECK:STDOUT:   %impl.elem0.loc22: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %bound_method.loc22_18: <bound method> = bound_method %int_1.loc22, %impl.elem0.loc22 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22: init %Cpp.long = call %bound_method.loc22_18(%int_1.loc22) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc22_18.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc22_18.2: %Cpp.long = converted %int_1.loc22, %.loc22_18.1 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.call.loc22: init %Cpp.long = call %bound_method.loc22_20.3(%.loc22_18.2, %x.ref.loc22_22)
-// CHECK:STDOUT:   %x.ref.loc22_25: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc22: <specific function> = specific_function %AssertSameType.ref.loc22, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc22_20.2: %Cpp.long = value_of_initializer %T.binding.as_type.as.ModWith.impl.Op.call.loc22
-// CHECK:STDOUT:   %.loc22_20.3: %Cpp.long = converted %T.binding.as_type.as.ModWith.impl.Op.call.loc22, %.loc22_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc22: init %empty_tuple.type = call %AssertSameType.specific_fn.loc22(%.loc22_20.3, %x.ref.loc22_25)
-// CHECK:STDOUT:   name_binding_decl {
-// CHECK:STDOUT:     %y.patt: %pattern_type.7ce = value_binding_pattern y [concrete]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %int_1.loc24: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %.loc24_10: type = splice_block %i32.loc24 [concrete = constants.%i32] {
-// CHECK:STDOUT:     %int_32.loc24: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
-// CHECK:STDOUT:     %i32.loc24: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %impl.elem0.loc24: %.863 = impl_witness_access constants.%ImplicitAs.impl_witness.6bc, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.0b5]
-// CHECK:STDOUT:   %bound_method.loc24_16.1: <bound method> = bound_method %int_1.loc24, %impl.elem0.loc24 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.215]
-// CHECK:STDOUT:   %specific_fn.loc24: <specific function> = specific_function %impl.elem0.loc24, @Core.IntLiteral.as.ImplicitAs.impl.Convert.1(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn]
-// CHECK:STDOUT:   %bound_method.loc24_16.2: <bound method> = bound_method %int_1.loc24, %specific_fn.loc24 [concrete = constants.%bound_method.38b]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc24: init %i32 = call %bound_method.loc24_16.2(%int_1.loc24) [concrete = constants.%int_1.5d2]
-// CHECK:STDOUT:   %.loc24_16.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc24 [concrete = constants.%int_1.5d2]
-// CHECK:STDOUT:   %.loc24_16.2: %i32 = converted %int_1.loc24, %.loc24_16.1 [concrete = constants.%int_1.5d2]
-// CHECK:STDOUT:   %y: %i32 = value_binding y, %.loc24_16.2
-// CHECK:STDOUT:   %AssertSameType.ref.loc25: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %y.ref.loc25: %i32 = name_ref y, %y
-// CHECK:STDOUT:   %x.ref.loc25_22: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %impl.elem1.loc25: %.285 = impl_witness_access constants.%AddWith.impl_witness.a1d, element1 [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.3fccd2.2]
-// CHECK:STDOUT:   %bound_method.loc25_20.1: <bound method> = bound_method %y.ref.loc25, %impl.elem1.loc25
-// CHECK:STDOUT:   %specific_fn.loc25: <specific function> = specific_function %impl.elem1.loc25, @T.binding.as_type.as.AddWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.specific_fn.09578f.1]
-// CHECK:STDOUT:   %bound_method.loc25_20.2: <bound method> = bound_method %y.ref.loc25, %specific_fn.loc25
-// CHECK:STDOUT:   %.loc25_20.1: %T.binding.as_type.as.AddWith.impl.Op.type.5105fb.1 = specific_constant imports.%Core.Op.af2, @T.binding.as_type.as.AddWith.impl.f1a(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.3fccd2.1]
-// CHECK:STDOUT:   %Op.ref.loc25: %T.binding.as_type.as.AddWith.impl.Op.type.5105fb.1 = name_ref Op, %.loc25_20.1 [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.3fccd2.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.bound.loc25: <bound method> = bound_method %y.ref.loc25, %Op.ref.loc25
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.specific_fn.loc25: <specific function> = specific_function %Op.ref.loc25, @T.binding.as_type.as.AddWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.specific_fn.09578f.2]
-// CHECK:STDOUT:   %bound_method.loc25_20.3: <bound method> = bound_method %y.ref.loc25, %T.binding.as_type.as.AddWith.impl.Op.specific_fn.loc25
-// CHECK:STDOUT:   %impl.elem0.loc25: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc25_18: <bound method> = bound_method %y.ref.loc25, %impl.elem0.loc25
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc25: init %Cpp.long = call %bound_method.loc25_18(%y.ref.loc25)
-// CHECK:STDOUT:   %.loc25_18.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc25
-// CHECK:STDOUT:   %.loc25_18.2: %Cpp.long = converted %y.ref.loc25, %.loc25_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.call.loc25: init %Cpp.long = call %bound_method.loc25_20.3(%.loc25_18.2, %x.ref.loc25_22)
-// CHECK:STDOUT:   %x.ref.loc25_25: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc25: <specific function> = specific_function %AssertSameType.ref.loc25, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc25_20.2: %Cpp.long = value_of_initializer %T.binding.as_type.as.AddWith.impl.Op.call.loc25
-// CHECK:STDOUT:   %.loc25_20.3: %Cpp.long = converted %T.binding.as_type.as.AddWith.impl.Op.call.loc25, %.loc25_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc25: init %empty_tuple.type = call %AssertSameType.specific_fn.loc25(%.loc25_20.3, %x.ref.loc25_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc26: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %y.ref.loc26: %i32 = name_ref y, %y
-// CHECK:STDOUT:   %x.ref.loc26_22: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %impl.elem1.loc26: %.040 = impl_witness_access constants.%SubWith.impl_witness.702, element1 [concrete = constants.%T.binding.as_type.as.SubWith.impl.Op.f9b5c3.2]
-// CHECK:STDOUT:   %bound_method.loc26_20.1: <bound method> = bound_method %y.ref.loc26, %impl.elem1.loc26
-// CHECK:STDOUT:   %specific_fn.loc26: <specific function> = specific_function %impl.elem1.loc26, @T.binding.as_type.as.SubWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.SubWith.impl.Op.specific_fn.b0f48e.1]
-// CHECK:STDOUT:   %bound_method.loc26_20.2: <bound method> = bound_method %y.ref.loc26, %specific_fn.loc26
-// CHECK:STDOUT:   %.loc26_20.1: %T.binding.as_type.as.SubWith.impl.Op.type.caca02.1 = specific_constant imports.%Core.Op.fcc, @T.binding.as_type.as.SubWith.impl.e1e(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.SubWith.impl.Op.f9b5c3.1]
-// CHECK:STDOUT:   %Op.ref.loc26: %T.binding.as_type.as.SubWith.impl.Op.type.caca02.1 = name_ref Op, %.loc26_20.1 [concrete = constants.%T.binding.as_type.as.SubWith.impl.Op.f9b5c3.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.bound.loc26: <bound method> = bound_method %y.ref.loc26, %Op.ref.loc26
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.specific_fn.loc26: <specific function> = specific_function %Op.ref.loc26, @T.binding.as_type.as.SubWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.SubWith.impl.Op.specific_fn.b0f48e.2]
-// CHECK:STDOUT:   %bound_method.loc26_20.3: <bound method> = bound_method %y.ref.loc26, %T.binding.as_type.as.SubWith.impl.Op.specific_fn.loc26
-// CHECK:STDOUT:   %impl.elem0.loc26: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc26_18: <bound method> = bound_method %y.ref.loc26, %impl.elem0.loc26
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc26: init %Cpp.long = call %bound_method.loc26_18(%y.ref.loc26)
-// CHECK:STDOUT:   %.loc26_18.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc26
-// CHECK:STDOUT:   %.loc26_18.2: %Cpp.long = converted %y.ref.loc26, %.loc26_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.call.loc26: init %Cpp.long = call %bound_method.loc26_20.3(%.loc26_18.2, %x.ref.loc26_22)
-// CHECK:STDOUT:   %x.ref.loc26_25: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc26: <specific function> = specific_function %AssertSameType.ref.loc26, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc26_20.2: %Cpp.long = value_of_initializer %T.binding.as_type.as.SubWith.impl.Op.call.loc26
-// CHECK:STDOUT:   %.loc26_20.3: %Cpp.long = converted %T.binding.as_type.as.SubWith.impl.Op.call.loc26, %.loc26_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc26: init %empty_tuple.type = call %AssertSameType.specific_fn.loc26(%.loc26_20.3, %x.ref.loc26_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc27: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %y.ref.loc27: %i32 = name_ref y, %y
-// CHECK:STDOUT:   %x.ref.loc27_22: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %impl.elem1.loc27: %.1b4 = impl_witness_access constants.%MulWith.impl_witness.f85, element1 [concrete = constants.%T.binding.as_type.as.MulWith.impl.Op.461492.2]
-// CHECK:STDOUT:   %bound_method.loc27_20.1: <bound method> = bound_method %y.ref.loc27, %impl.elem1.loc27
-// CHECK:STDOUT:   %specific_fn.loc27: <specific function> = specific_function %impl.elem1.loc27, @T.binding.as_type.as.MulWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.MulWith.impl.Op.specific_fn.475813.1]
-// CHECK:STDOUT:   %bound_method.loc27_20.2: <bound method> = bound_method %y.ref.loc27, %specific_fn.loc27
-// CHECK:STDOUT:   %.loc27_20.1: %T.binding.as_type.as.MulWith.impl.Op.type.1189b3.1 = specific_constant imports.%Core.Op.6a1, @T.binding.as_type.as.MulWith.impl.6d9(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.MulWith.impl.Op.461492.1]
-// CHECK:STDOUT:   %Op.ref.loc27: %T.binding.as_type.as.MulWith.impl.Op.type.1189b3.1 = name_ref Op, %.loc27_20.1 [concrete = constants.%T.binding.as_type.as.MulWith.impl.Op.461492.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.bound.loc27: <bound method> = bound_method %y.ref.loc27, %Op.ref.loc27
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.specific_fn.loc27: <specific function> = specific_function %Op.ref.loc27, @T.binding.as_type.as.MulWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.MulWith.impl.Op.specific_fn.475813.2]
-// CHECK:STDOUT:   %bound_method.loc27_20.3: <bound method> = bound_method %y.ref.loc27, %T.binding.as_type.as.MulWith.impl.Op.specific_fn.loc27
-// CHECK:STDOUT:   %impl.elem0.loc27: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc27_18: <bound method> = bound_method %y.ref.loc27, %impl.elem0.loc27
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc27: init %Cpp.long = call %bound_method.loc27_18(%y.ref.loc27)
-// CHECK:STDOUT:   %.loc27_18.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc27
-// CHECK:STDOUT:   %.loc27_18.2: %Cpp.long = converted %y.ref.loc27, %.loc27_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.call.loc27: init %Cpp.long = call %bound_method.loc27_20.3(%.loc27_18.2, %x.ref.loc27_22)
-// CHECK:STDOUT:   %x.ref.loc27_25: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc27: <specific function> = specific_function %AssertSameType.ref.loc27, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc27_20.2: %Cpp.long = value_of_initializer %T.binding.as_type.as.MulWith.impl.Op.call.loc27
-// CHECK:STDOUT:   %.loc27_20.3: %Cpp.long = converted %T.binding.as_type.as.MulWith.impl.Op.call.loc27, %.loc27_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc27: init %empty_tuple.type = call %AssertSameType.specific_fn.loc27(%.loc27_20.3, %x.ref.loc27_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc28: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %y.ref.loc28: %i32 = name_ref y, %y
-// CHECK:STDOUT:   %x.ref.loc28_22: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %impl.elem1.loc28: %.0f3 = impl_witness_access constants.%DivWith.impl_witness.996, element1 [concrete = constants.%T.binding.as_type.as.DivWith.impl.Op.e5dcee.2]
-// CHECK:STDOUT:   %bound_method.loc28_20.1: <bound method> = bound_method %y.ref.loc28, %impl.elem1.loc28
-// CHECK:STDOUT:   %specific_fn.loc28: <specific function> = specific_function %impl.elem1.loc28, @T.binding.as_type.as.DivWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.DivWith.impl.Op.specific_fn.8f9bff.1]
-// CHECK:STDOUT:   %bound_method.loc28_20.2: <bound method> = bound_method %y.ref.loc28, %specific_fn.loc28
-// CHECK:STDOUT:   %.loc28_20.1: %T.binding.as_type.as.DivWith.impl.Op.type.bc0f3d.1 = specific_constant imports.%Core.Op.ace, @T.binding.as_type.as.DivWith.impl.67f(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.DivWith.impl.Op.e5dcee.1]
-// CHECK:STDOUT:   %Op.ref.loc28: %T.binding.as_type.as.DivWith.impl.Op.type.bc0f3d.1 = name_ref Op, %.loc28_20.1 [concrete = constants.%T.binding.as_type.as.DivWith.impl.Op.e5dcee.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.bound.loc28: <bound method> = bound_method %y.ref.loc28, %Op.ref.loc28
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.specific_fn.loc28: <specific function> = specific_function %Op.ref.loc28, @T.binding.as_type.as.DivWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.DivWith.impl.Op.specific_fn.8f9bff.2]
-// CHECK:STDOUT:   %bound_method.loc28_20.3: <bound method> = bound_method %y.ref.loc28, %T.binding.as_type.as.DivWith.impl.Op.specific_fn.loc28
-// CHECK:STDOUT:   %impl.elem0.loc28: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc28_18: <bound method> = bound_method %y.ref.loc28, %impl.elem0.loc28
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc28: init %Cpp.long = call %bound_method.loc28_18(%y.ref.loc28)
-// CHECK:STDOUT:   %.loc28_18.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc28
-// CHECK:STDOUT:   %.loc28_18.2: %Cpp.long = converted %y.ref.loc28, %.loc28_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.call.loc28: init %Cpp.long = call %bound_method.loc28_20.3(%.loc28_18.2, %x.ref.loc28_22)
-// CHECK:STDOUT:   %x.ref.loc28_25: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc28: <specific function> = specific_function %AssertSameType.ref.loc28, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc28_20.2: %Cpp.long = value_of_initializer %T.binding.as_type.as.DivWith.impl.Op.call.loc28
-// CHECK:STDOUT:   %.loc28_20.3: %Cpp.long = converted %T.binding.as_type.as.DivWith.impl.Op.call.loc28, %.loc28_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc28: init %empty_tuple.type = call %AssertSameType.specific_fn.loc28(%.loc28_20.3, %x.ref.loc28_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc29: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %y.ref.loc29: %i32 = name_ref y, %y
-// CHECK:STDOUT:   %x.ref.loc29_22: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %impl.elem1.loc29: %.e68 = impl_witness_access constants.%ModWith.impl_witness.e1d, element1 [concrete = constants.%T.binding.as_type.as.ModWith.impl.Op.c5465f.2]
-// CHECK:STDOUT:   %bound_method.loc29_20.1: <bound method> = bound_method %y.ref.loc29, %impl.elem1.loc29
-// CHECK:STDOUT:   %specific_fn.loc29: <specific function> = specific_function %impl.elem1.loc29, @T.binding.as_type.as.ModWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.ModWith.impl.Op.specific_fn.ee32ad.1]
-// CHECK:STDOUT:   %bound_method.loc29_20.2: <bound method> = bound_method %y.ref.loc29, %specific_fn.loc29
-// CHECK:STDOUT:   %.loc29_20.1: %T.binding.as_type.as.ModWith.impl.Op.type.9786fd.1 = specific_constant imports.%Core.Op.c8c, @T.binding.as_type.as.ModWith.impl.5ca(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.ModWith.impl.Op.c5465f.1]
-// CHECK:STDOUT:   %Op.ref.loc29: %T.binding.as_type.as.ModWith.impl.Op.type.9786fd.1 = name_ref Op, %.loc29_20.1 [concrete = constants.%T.binding.as_type.as.ModWith.impl.Op.c5465f.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.bound.loc29: <bound method> = bound_method %y.ref.loc29, %Op.ref.loc29
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.specific_fn.loc29: <specific function> = specific_function %Op.ref.loc29, @T.binding.as_type.as.ModWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.ModWith.impl.Op.specific_fn.ee32ad.2]
-// CHECK:STDOUT:   %bound_method.loc29_20.3: <bound method> = bound_method %y.ref.loc29, %T.binding.as_type.as.ModWith.impl.Op.specific_fn.loc29
-// CHECK:STDOUT:   %impl.elem0.loc29: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc29_18: <bound method> = bound_method %y.ref.loc29, %impl.elem0.loc29
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc29: init %Cpp.long = call %bound_method.loc29_18(%y.ref.loc29)
-// CHECK:STDOUT:   %.loc29_18.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc29
-// CHECK:STDOUT:   %.loc29_18.2: %Cpp.long = converted %y.ref.loc29, %.loc29_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.call.loc29: init %Cpp.long = call %bound_method.loc29_20.3(%.loc29_18.2, %x.ref.loc29_22)
-// CHECK:STDOUT:   %x.ref.loc29_25: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc29: <specific function> = specific_function %AssertSameType.ref.loc29, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc29_20.2: %Cpp.long = value_of_initializer %T.binding.as_type.as.ModWith.impl.Op.call.loc29
-// CHECK:STDOUT:   %.loc29_20.3: %Cpp.long = converted %T.binding.as_type.as.ModWith.impl.Op.call.loc29, %.loc29_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc29: init %empty_tuple.type = call %AssertSameType.specific_fn.loc29(%.loc29_20.3, %x.ref.loc29_25)
-// CHECK:STDOUT:   <elided>
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: --- arithmetic_heterogeneous_long_and_i64.carbon
-// CHECK:STDOUT:
-// CHECK:STDOUT: constants {
-// CHECK:STDOUT:   %AssertSameType.type: type = fn_type @AssertSameType [concrete]
-// CHECK:STDOUT:   %empty_tuple.type: type = tuple_type () [concrete]
-// CHECK:STDOUT:   %AssertSameType: %AssertSameType.type = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long: type = class_type @Long32 [concrete]
-// CHECK:STDOUT:   %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic]
-// CHECK:STDOUT:   %Int.fc6021.1: type = class_type @Int, @Int(%N) [symbolic]
-// CHECK:STDOUT:   %pattern_type.68c: type = pattern_type %Cpp.long [concrete]
-// CHECK:STDOUT:   %int_1.5b8: Core.IntLiteral = int_value 1 [concrete]
-// CHECK:STDOUT:   %ImplicitAs.type.819: type = facet_type <@ImplicitAs, @ImplicitAs(%Cpp.long)> [concrete]
-// CHECK:STDOUT:   %ImplicitAs.Convert.type.4c2: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Cpp.long) [concrete]
-// CHECK:STDOUT:   %int_64: Core.IntLiteral = int_value 64 [concrete]
-// CHECK:STDOUT:   %i64: type = class_type @Int, @Int(%int_64) [concrete]
-// CHECK:STDOUT:   %ImplicitAs.type.2ad: type = facet_type <@ImplicitAs, @ImplicitAs(%i64)> [concrete]
-// CHECK:STDOUT:   %ImplicitAs.Convert.type.94e: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i64) [concrete]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness.2ce: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.903 [concrete]
-// CHECK:STDOUT:   %ImplicitAs.facet.eed: %ImplicitAs.type.819 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.2ce) [concrete]
-// CHECK:STDOUT:   %.dad: type = fn_type_with_self_type %ImplicitAs.Convert.type.4c2, %ImplicitAs.facet.eed [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.b38: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.1 [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.b38 = struct_value () [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8: <bound method> = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a [concrete]
-// CHECK:STDOUT:   %int_1.5a4: %Cpp.long = int_value 1 [concrete]
-// CHECK:STDOUT:   %pattern_type.95b: type = pattern_type %i64 [concrete]
-// CHECK:STDOUT:   %To: Core.IntLiteral = symbolic_binding To, 0 [symbolic]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.4e6: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.2, @Core.IntLiteral.as.ImplicitAs.impl.b2d(%To) [symbolic]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.3c2: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.4e6 = struct_value () [symbolic]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness.556: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.74f, @Core.IntLiteral.as.ImplicitAs.impl.b2d(%int_64) [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.b78: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.2, @Core.IntLiteral.as.ImplicitAs.impl.b2d(%int_64) [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.57d: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.b78 = struct_value () [concrete]
-// CHECK:STDOUT:   %ImplicitAs.facet.d48: %ImplicitAs.type.2ad = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.556) [concrete]
-// CHECK:STDOUT:   %.567: type = fn_type_with_self_type %ImplicitAs.Convert.type.94e, %ImplicitAs.facet.d48 [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.102: <bound method> = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.57d [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: <specific function> = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.57d, @Core.IntLiteral.as.ImplicitAs.impl.Convert.2(%int_64) [concrete]
-// CHECK:STDOUT:   %bound_method: <bound method> = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete]
-// CHECK:STDOUT:   %int_1.41a: %i64 = int_value 1 [concrete]
-// CHECK:STDOUT:   %AddWith.type.f83: type = facet_type <@AddWith, @AddWith(%i64)> [concrete]
-// CHECK:STDOUT:   %AddWith.Op.type.c7f: type = fn_type @AddWith.Op, @AddWith(%i64) [concrete]
-// CHECK:STDOUT:   %AddWith.type.9c2: type = facet_type <@AddWith, @AddWith(%Cpp.long)> [concrete]
-// CHECK:STDOUT:   %AddWith.Op.type.9a6: type = fn_type @AddWith.Op, @AddWith(%Cpp.long) [concrete]
-// CHECK:STDOUT:   %ImplicitAs.type.39a54f.2: type = facet_type <@ImplicitAs, @ImplicitAs(%Int.fc6021.1)> [symbolic]
-// CHECK:STDOUT:   %U.354: %ImplicitAs.type.39a54f.2 = symbolic_binding U, 1 [symbolic]
-// CHECK:STDOUT:   %Int.as.AddWith.impl.Op.type.188570.1: type = fn_type @Int.as.AddWith.impl.Op.2, @Int.as.AddWith.impl.b14(%N, %U.354) [symbolic]
-// CHECK:STDOUT:   %Int.as.AddWith.impl.Op.fecf95.1: %Int.as.AddWith.impl.Op.type.188570.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %Int.as.AddWith.impl.Op.type.188570.2: type = fn_type @Int.as.AddWith.impl.Op.3, @Int.as.AddWith.impl.b14(%N, %U.354) [symbolic]
-// CHECK:STDOUT:   %Int.as.AddWith.impl.Op.fecf95.2: %Int.as.AddWith.impl.Op.type.188570.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %T.354: %ImplicitAs.type.39a54f.2 = symbolic_binding T, 1 [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.type.4c3f59.1: type = fn_type @T.binding.as_type.as.AddWith.impl.Op.5, @T.binding.as_type.as.AddWith.impl.83e(%N, %T.354) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.363ab3.1: %T.binding.as_type.as.AddWith.impl.Op.type.4c3f59.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.type.4c3f59.2: type = fn_type @T.binding.as_type.as.AddWith.impl.Op.6, @T.binding.as_type.as.AddWith.impl.83e(%N, %T.354) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.363ab3.2: %T.binding.as_type.as.AddWith.impl.Op.type.4c3f59.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness.bbc: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.cb1 [concrete]
-// CHECK:STDOUT:   %ImplicitAs.facet.ba4: %ImplicitAs.type.2ad = facet_value %Cpp.long, (%ImplicitAs.impl_witness.bbc) [concrete]
-// CHECK:STDOUT:   %AddWith.impl_witness.525: <witness> = impl_witness imports.%AddWith.impl_witness_table.787, @T.binding.as_type.as.AddWith.impl.83e(%int_64, %ImplicitAs.facet.ba4) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.type.e6cc8e.1: type = fn_type @T.binding.as_type.as.AddWith.impl.Op.6, @T.binding.as_type.as.AddWith.impl.83e(%int_64, %ImplicitAs.facet.ba4) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.86dab9.1: %T.binding.as_type.as.AddWith.impl.Op.type.e6cc8e.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.type.e6cc8e.2: type = fn_type @T.binding.as_type.as.AddWith.impl.Op.5, @T.binding.as_type.as.AddWith.impl.83e(%int_64, %ImplicitAs.facet.ba4) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.86dab9.2: %T.binding.as_type.as.AddWith.impl.Op.type.e6cc8e.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %AddWith.facet.393: %AddWith.type.f83 = facet_value %Cpp.long, (%AddWith.impl_witness.525) [concrete]
-// CHECK:STDOUT:   %.e8e: type = fn_type_with_self_type %AddWith.Op.type.c7f, %AddWith.facet.393 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.specific_fn.dee524.1: <specific function> = specific_function %T.binding.as_type.as.AddWith.impl.Op.86dab9.2, @T.binding.as_type.as.AddWith.impl.Op.5(%int_64, %ImplicitAs.facet.ba4) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.specific_fn.dee524.2: <specific function> = specific_function %T.binding.as_type.as.AddWith.impl.Op.86dab9.1, @T.binding.as_type.as.AddWith.impl.Op.6(%int_64, %ImplicitAs.facet.ba4) [concrete]
-// CHECK:STDOUT:   %.8a2: type = fn_type_with_self_type %ImplicitAs.Convert.type.94e, %ImplicitAs.facet.ba4 [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.ImplicitAs.impl.Convert.type: type = fn_type @Cpp.long.as.ImplicitAs.impl.Convert [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.ImplicitAs.impl.Convert: %Cpp.long.as.ImplicitAs.impl.Convert.type = struct_value () [concrete]
-// CHECK:STDOUT:   %AssertSameType.specific_fn: <specific function> = specific_function %AssertSameType, @AssertSameType(%i64) [concrete]
-// CHECK:STDOUT:   %AddWith.impl_witness.023: <witness> = impl_witness imports.%AddWith.impl_witness_table.c46, @Int.as.AddWith.impl.b14(%int_64, %ImplicitAs.facet.ba4) [concrete]
-// CHECK:STDOUT:   %Int.as.AddWith.impl.Op.type.0fadc0.1: type = fn_type @Int.as.AddWith.impl.Op.3, @Int.as.AddWith.impl.b14(%int_64, %ImplicitAs.facet.ba4) [concrete]
-// CHECK:STDOUT:   %Int.as.AddWith.impl.Op.f0aafc.1: %Int.as.AddWith.impl.Op.type.0fadc0.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Int.as.AddWith.impl.Op.type.0fadc0.2: type = fn_type @Int.as.AddWith.impl.Op.2, @Int.as.AddWith.impl.b14(%int_64, %ImplicitAs.facet.ba4) [concrete]
-// CHECK:STDOUT:   %Int.as.AddWith.impl.Op.f0aafc.2: %Int.as.AddWith.impl.Op.type.0fadc0.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %AddWith.facet.1c5: %AddWith.type.9c2 = facet_value %i64, (%AddWith.impl_witness.023) [concrete]
-// CHECK:STDOUT:   %.f5b: type = fn_type_with_self_type %AddWith.Op.type.9a6, %AddWith.facet.1c5 [concrete]
-// CHECK:STDOUT:   %Int.as.AddWith.impl.Op.specific_fn.153203.1: <specific function> = specific_function %Int.as.AddWith.impl.Op.f0aafc.2, @Int.as.AddWith.impl.Op.2(%int_64, %ImplicitAs.facet.ba4) [concrete]
-// CHECK:STDOUT:   %Int.as.AddWith.impl.Op.specific_fn.153203.2: <specific function> = specific_function %Int.as.AddWith.impl.Op.f0aafc.1, @Int.as.AddWith.impl.Op.3(%int_64, %ImplicitAs.facet.ba4) [concrete]
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %Cpp: <namespace> = namespace file.%Cpp.import_cpp, [concrete] {
-// CHECK:STDOUT:     .long = constants.%Cpp.long
-// CHECK:STDOUT:     import Cpp//...
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %Core.import_ref.b8a: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.b38 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness_table.903 = impl_witness_table (%Core.import_ref.b8a), @Core.IntLiteral.as.ImplicitAs.impl.052 [concrete]
-// CHECK:STDOUT:   %Core.import_ref.42d: @Core.IntLiteral.as.ImplicitAs.impl.b2d.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.4e6) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.b2d.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3c2)]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness_table.74f = impl_witness_table (%Core.import_ref.42d), @Core.IntLiteral.as.ImplicitAs.impl.b2d [concrete]
-// CHECK:STDOUT:   %Core.import_ref.475cb3.2 = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.266: @Int.as.AddWith.impl.b14.%Int.as.AddWith.impl.Op.type.2 (%Int.as.AddWith.impl.Op.type.188570.1) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.AddWith.impl.b14.%Int.as.AddWith.impl.Op.2 (constants.%Int.as.AddWith.impl.Op.fecf95.1)]
-// CHECK:STDOUT:   %AddWith.impl_witness_table.c46 = impl_witness_table (%Core.import_ref.475cb3.2, %Core.import_ref.266), @Int.as.AddWith.impl.b14 [concrete]
-// CHECK:STDOUT:   %Core.Op.a76: @Int.as.AddWith.impl.b14.%Int.as.AddWith.impl.Op.type.1 (%Int.as.AddWith.impl.Op.type.188570.2) = import_ref Core//prelude/types/int, Op, loaded [symbolic = @Int.as.AddWith.impl.b14.%Int.as.AddWith.impl.Op.1 (constants.%Int.as.AddWith.impl.Op.fecf95.2)]
-// CHECK:STDOUT:   %Core.import_ref.475cb3.3 = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.bba: @T.binding.as_type.as.AddWith.impl.83e.%T.binding.as_type.as.AddWith.impl.Op.type.2 (%T.binding.as_type.as.AddWith.impl.Op.type.4c3f59.1) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @T.binding.as_type.as.AddWith.impl.83e.%T.binding.as_type.as.AddWith.impl.Op.2 (constants.%T.binding.as_type.as.AddWith.impl.Op.363ab3.1)]
-// CHECK:STDOUT:   %AddWith.impl_witness_table.787 = impl_witness_table (%Core.import_ref.475cb3.3, %Core.import_ref.bba), @T.binding.as_type.as.AddWith.impl.83e [concrete]
-// CHECK:STDOUT:   %Core.Op.fcd: @T.binding.as_type.as.AddWith.impl.83e.%T.binding.as_type.as.AddWith.impl.Op.type.1 (%T.binding.as_type.as.AddWith.impl.Op.type.4c3f59.2) = import_ref Core//prelude/types/int, Op, loaded [symbolic = @T.binding.as_type.as.AddWith.impl.83e.%T.binding.as_type.as.AddWith.impl.Op.1 (constants.%T.binding.as_type.as.AddWith.impl.Op.363ab3.2)]
-// CHECK:STDOUT:   %Core.import_ref.297: %Cpp.long.as.ImplicitAs.impl.Convert.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness_table.cb1 = impl_witness_table (%Core.import_ref.297), @Cpp.long.as.ImplicitAs.impl.e6d [concrete]
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: fn @ArithmeticHeterogeneousLongAndI64() {
-// CHECK:STDOUT: !entry:
-// CHECK:STDOUT:   name_binding_decl {
-// CHECK:STDOUT:     %x.patt: %pattern_type.68c = value_binding_pattern x [concrete]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %int_1.loc10: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %.loc10_13: type = splice_block %long.ref [concrete = constants.%Cpp.long] {
-// CHECK:STDOUT:     %Cpp.ref: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
-// CHECK:STDOUT:     %long.ref: type = name_ref long, constants.%Cpp.long [concrete = constants.%Cpp.long]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %impl.elem0.loc10: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %bound_method.loc10: <bound method> = bound_method %int_1.loc10, %impl.elem0.loc10 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10: init %Cpp.long = call %bound_method.loc10(%int_1.loc10) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc10_21.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc10_21.2: %Cpp.long = converted %int_1.loc10, %.loc10_21.1 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %x: %Cpp.long = value_binding x, %.loc10_21.2
-// CHECK:STDOUT:   name_binding_decl {
-// CHECK:STDOUT:     %y.patt: %pattern_type.95b = value_binding_pattern y [concrete]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %int_1.loc11: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %.loc11_10: type = splice_block %i64 [concrete = constants.%i64] {
-// CHECK:STDOUT:     %int_64: Core.IntLiteral = int_value 64 [concrete = constants.%int_64]
-// CHECK:STDOUT:     %i64: type = class_type @Int, @Int(constants.%int_64) [concrete = constants.%i64]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %impl.elem0.loc11: %.567 = impl_witness_access constants.%ImplicitAs.impl_witness.556, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.57d]
-// CHECK:STDOUT:   %bound_method.loc11_16.1: <bound method> = bound_method %int_1.loc11, %impl.elem0.loc11 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.102]
-// CHECK:STDOUT:   %specific_fn.loc11: <specific function> = specific_function %impl.elem0.loc11, @Core.IntLiteral.as.ImplicitAs.impl.Convert.2(constants.%int_64) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn]
-// CHECK:STDOUT:   %bound_method.loc11_16.2: <bound method> = bound_method %int_1.loc11, %specific_fn.loc11 [concrete = constants.%bound_method]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc11: init %i64 = call %bound_method.loc11_16.2(%int_1.loc11) [concrete = constants.%int_1.41a]
-// CHECK:STDOUT:   %.loc11_16.1: %i64 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc11 [concrete = constants.%int_1.41a]
-// CHECK:STDOUT:   %.loc11_16.2: %i64 = converted %int_1.loc11, %.loc11_16.1 [concrete = constants.%int_1.41a]
-// CHECK:STDOUT:   %y: %i64 = value_binding y, %.loc11_16.2
-// CHECK:STDOUT:   %AssertSameType.ref.loc12: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc12: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %y.ref.loc12_22: %i64 = name_ref y, %y
-// CHECK:STDOUT:   %impl.elem1.loc12: %.e8e = impl_witness_access constants.%AddWith.impl_witness.525, element1 [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.86dab9.2]
-// CHECK:STDOUT:   %bound_method.loc12_20.1: <bound method> = bound_method %x.ref.loc12, %impl.elem1.loc12
-// CHECK:STDOUT:   %specific_fn.loc12: <specific function> = specific_function %impl.elem1.loc12, @T.binding.as_type.as.AddWith.impl.Op.5(constants.%int_64, constants.%ImplicitAs.facet.ba4) [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.specific_fn.dee524.1]
-// CHECK:STDOUT:   %bound_method.loc12_20.2: <bound method> = bound_method %x.ref.loc12, %specific_fn.loc12
-// CHECK:STDOUT:   %.loc12_20.1: %T.binding.as_type.as.AddWith.impl.Op.type.e6cc8e.1 = specific_constant imports.%Core.Op.fcd, @T.binding.as_type.as.AddWith.impl.83e(constants.%int_64, constants.%ImplicitAs.facet.ba4) [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.86dab9.1]
-// CHECK:STDOUT:   %Op.ref.loc12: %T.binding.as_type.as.AddWith.impl.Op.type.e6cc8e.1 = name_ref Op, %.loc12_20.1 [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.86dab9.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.bound: <bound method> = bound_method %x.ref.loc12, %Op.ref.loc12
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.specific_fn: <specific function> = specific_function %Op.ref.loc12, @T.binding.as_type.as.AddWith.impl.Op.6(constants.%int_64, constants.%ImplicitAs.facet.ba4) [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.specific_fn.dee524.2]
-// CHECK:STDOUT:   %bound_method.loc12_20.3: <bound method> = bound_method %x.ref.loc12, %T.binding.as_type.as.AddWith.impl.Op.specific_fn
-// CHECK:STDOUT:   %impl.elem0.loc12: %.8a2 = impl_witness_access constants.%ImplicitAs.impl_witness.bbc, element0 [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc12_18: <bound method> = bound_method %x.ref.loc12, %impl.elem0.loc12
-// CHECK:STDOUT:   %Cpp.long.as.ImplicitAs.impl.Convert.call.loc12: init %i64 = call %bound_method.loc12_18(%x.ref.loc12)
-// CHECK:STDOUT:   %.loc12_18.1: %i64 = value_of_initializer %Cpp.long.as.ImplicitAs.impl.Convert.call.loc12
-// CHECK:STDOUT:   %.loc12_18.2: %i64 = converted %x.ref.loc12, %.loc12_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.call: init %i64 = call %bound_method.loc12_20.3(%.loc12_18.2, %y.ref.loc12_22)
-// CHECK:STDOUT:   %y.ref.loc12_25: %i64 = name_ref y, %y
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc12: <specific function> = specific_function %AssertSameType.ref.loc12, @AssertSameType(constants.%i64) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc12_20.2: %i64 = value_of_initializer %T.binding.as_type.as.AddWith.impl.Op.call
-// CHECK:STDOUT:   %.loc12_20.3: %i64 = converted %T.binding.as_type.as.AddWith.impl.Op.call, %.loc12_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc12: init %empty_tuple.type = call %AssertSameType.specific_fn.loc12(%.loc12_20.3, %y.ref.loc12_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc13: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %y.ref.loc13_18: %i64 = name_ref y, %y
-// CHECK:STDOUT:   %x.ref.loc13: %Cpp.long = name_ref x, %x
-// CHECK:STDOUT:   %impl.elem1.loc13: %.f5b = impl_witness_access constants.%AddWith.impl_witness.023, element1 [concrete = constants.%Int.as.AddWith.impl.Op.f0aafc.2]
-// CHECK:STDOUT:   %bound_method.loc13_20.1: <bound method> = bound_method %y.ref.loc13_18, %impl.elem1.loc13
-// CHECK:STDOUT:   %specific_fn.loc13: <specific function> = specific_function %impl.elem1.loc13, @Int.as.AddWith.impl.Op.2(constants.%int_64, constants.%ImplicitAs.facet.ba4) [concrete = constants.%Int.as.AddWith.impl.Op.specific_fn.153203.1]
-// CHECK:STDOUT:   %bound_method.loc13_20.2: <bound method> = bound_method %y.ref.loc13_18, %specific_fn.loc13
-// CHECK:STDOUT:   %.loc13_20.1: %Int.as.AddWith.impl.Op.type.0fadc0.1 = specific_constant imports.%Core.Op.a76, @Int.as.AddWith.impl.b14(constants.%int_64, constants.%ImplicitAs.facet.ba4) [concrete = constants.%Int.as.AddWith.impl.Op.f0aafc.1]
-// CHECK:STDOUT:   %Op.ref.loc13: %Int.as.AddWith.impl.Op.type.0fadc0.1 = name_ref Op, %.loc13_20.1 [concrete = constants.%Int.as.AddWith.impl.Op.f0aafc.1]
-// CHECK:STDOUT:   %Int.as.AddWith.impl.Op.bound: <bound method> = bound_method %y.ref.loc13_18, %Op.ref.loc13
-// CHECK:STDOUT:   %Int.as.AddWith.impl.Op.specific_fn: <specific function> = specific_function %Op.ref.loc13, @Int.as.AddWith.impl.Op.3(constants.%int_64, constants.%ImplicitAs.facet.ba4) [concrete = constants.%Int.as.AddWith.impl.Op.specific_fn.153203.2]
-// CHECK:STDOUT:   %bound_method.loc13_20.3: <bound method> = bound_method %y.ref.loc13_18, %Int.as.AddWith.impl.Op.specific_fn
-// CHECK:STDOUT:   %impl.elem0.loc13: %.8a2 = impl_witness_access constants.%ImplicitAs.impl_witness.bbc, element0 [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc13_22: <bound method> = bound_method %x.ref.loc13, %impl.elem0.loc13
-// CHECK:STDOUT:   %Cpp.long.as.ImplicitAs.impl.Convert.call.loc13: init %i64 = call %bound_method.loc13_22(%x.ref.loc13)
-// CHECK:STDOUT:   %.loc13_22.1: %i64 = value_of_initializer %Cpp.long.as.ImplicitAs.impl.Convert.call.loc13
-// CHECK:STDOUT:   %.loc13_22.2: %i64 = converted %x.ref.loc13, %.loc13_22.1
-// CHECK:STDOUT:   %Int.as.AddWith.impl.Op.call: init %i64 = call %bound_method.loc13_20.3(%y.ref.loc13_18, %.loc13_22.2)
-// CHECK:STDOUT:   %y.ref.loc13_25: %i64 = name_ref y, %y
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc13: <specific function> = specific_function %AssertSameType.ref.loc13, @AssertSameType(constants.%i64) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc13_20.2: %i64 = value_of_initializer %Int.as.AddWith.impl.Op.call
-// CHECK:STDOUT:   %.loc13_20.3: %i64 = converted %Int.as.AddWith.impl.Op.call, %.loc13_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc13: init %empty_tuple.type = call %AssertSameType.specific_fn.loc13(%.loc13_20.3, %y.ref.loc13_25)
-// CHECK:STDOUT:   <elided>
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: --- bitwise_homogeneous_long.carbon
-// CHECK:STDOUT:
-// CHECK:STDOUT: constants {
-// CHECK:STDOUT:   %AssertSameType.type: type = fn_type @AssertSameType [concrete]
-// CHECK:STDOUT:   %empty_tuple.type: type = tuple_type () [concrete]
-// CHECK:STDOUT:   %AssertSameType: %AssertSameType.type = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long: type = class_type @Long32 [concrete]
-// CHECK:STDOUT:   %pattern_type.68c: type = pattern_type %Cpp.long [concrete]
-// CHECK:STDOUT:   %int_1.5b8: Core.IntLiteral = int_value 1 [concrete]
-// CHECK:STDOUT:   %ImplicitAs.type.819: type = facet_type <@ImplicitAs, @ImplicitAs(%Cpp.long)> [concrete]
-// CHECK:STDOUT:   %ImplicitAs.Convert.type.4c2: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Cpp.long) [concrete]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness.2ce: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.903 [concrete]
-// CHECK:STDOUT:   %ImplicitAs.facet: %ImplicitAs.type.819 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.2ce) [concrete]
-// CHECK:STDOUT:   %.dad: type = fn_type_with_self_type %ImplicitAs.Convert.type.4c2, %ImplicitAs.facet [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.type: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type = struct_value () [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: <bound method> = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert [concrete]
-// CHECK:STDOUT:   %int_1.5a4: %Cpp.long = int_value 1 [concrete]
-// CHECK:STDOUT:   %BitComplement.type: type = facet_type <@BitComplement> [concrete]
-// CHECK:STDOUT:   %BitComplement.Op.type: type = fn_type @BitComplement.Op [concrete]
-// CHECK:STDOUT:   %BitComplement.impl_witness: <witness> = impl_witness imports.%BitComplement.impl_witness_table [concrete]
-// CHECK:STDOUT:   %BitComplement.facet: %BitComplement.type = facet_value %Cpp.long, (%BitComplement.impl_witness) [concrete]
-// CHECK:STDOUT:   %.788: type = fn_type_with_self_type %BitComplement.Op.type, %BitComplement.facet [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitComplement.impl.Op.type: type = fn_type @Cpp.long.as.BitComplement.impl.Op [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitComplement.impl.Op: %Cpp.long.as.BitComplement.impl.Op.type = struct_value () [concrete]
-// CHECK:STDOUT:   %AssertSameType.specific_fn: <specific function> = specific_function %AssertSameType, @AssertSameType(%Cpp.long) [concrete]
-// CHECK:STDOUT:   %BitAndWith.type.0b5: type = facet_type <@BitAndWith, @BitAndWith(%Cpp.long)> [concrete]
-// CHECK:STDOUT:   %BitAndWith.Op.type.e13: type = fn_type @BitAndWith.Op, @BitAndWith(%Cpp.long) [concrete]
-// CHECK:STDOUT:   %BitAndWith.impl_witness.6f1: <witness> = impl_witness imports.%BitAndWith.impl_witness_table.e8c [concrete]
-// CHECK:STDOUT:   %BitAndWith.facet: %BitAndWith.type.0b5 = facet_value %Cpp.long, (%BitAndWith.impl_witness.6f1) [concrete]
-// CHECK:STDOUT:   %.78c: type = fn_type_with_self_type %BitAndWith.Op.type.e13, %BitAndWith.facet [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitAndWith.impl.Op.type.a55: type = fn_type @Cpp.long.as.BitAndWith.impl.Op.3 [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitAndWith.impl.Op.340: %Cpp.long.as.BitAndWith.impl.Op.type.a55 = struct_value () [concrete]
-// CHECK:STDOUT:   %BitOrWith.type.b22: type = facet_type <@BitOrWith, @BitOrWith(%Cpp.long)> [concrete]
-// CHECK:STDOUT:   %BitOrWith.Op.type.a1b: type = fn_type @BitOrWith.Op, @BitOrWith(%Cpp.long) [concrete]
-// CHECK:STDOUT:   %BitOrWith.impl_witness.003: <witness> = impl_witness imports.%BitOrWith.impl_witness_table.513 [concrete]
-// CHECK:STDOUT:   %BitOrWith.facet: %BitOrWith.type.b22 = facet_value %Cpp.long, (%BitOrWith.impl_witness.003) [concrete]
-// CHECK:STDOUT:   %.ee7: type = fn_type_with_self_type %BitOrWith.Op.type.a1b, %BitOrWith.facet [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitOrWith.impl.Op.type.178: type = fn_type @Cpp.long.as.BitOrWith.impl.Op.3 [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitOrWith.impl.Op.b33: %Cpp.long.as.BitOrWith.impl.Op.type.178 = struct_value () [concrete]
-// CHECK:STDOUT:   %BitXorWith.type.87f: type = facet_type <@BitXorWith, @BitXorWith(%Cpp.long)> [concrete]
-// CHECK:STDOUT:   %BitXorWith.Op.type.5cf: type = fn_type @BitXorWith.Op, @BitXorWith(%Cpp.long) [concrete]
-// CHECK:STDOUT:   %BitXorWith.impl_witness.e60: <witness> = impl_witness imports.%BitXorWith.impl_witness_table.708 [concrete]
-// CHECK:STDOUT:   %BitXorWith.facet: %BitXorWith.type.87f = facet_value %Cpp.long, (%BitXorWith.impl_witness.e60) [concrete]
-// CHECK:STDOUT:   %.e9a: type = fn_type_with_self_type %BitXorWith.Op.type.5cf, %BitXorWith.facet [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitXorWith.impl.Op.type.198: type = fn_type @Cpp.long.as.BitXorWith.impl.Op.3 [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitXorWith.impl.Op.655: %Cpp.long.as.BitXorWith.impl.Op.type.198 = struct_value () [concrete]
-// CHECK:STDOUT:   %LeftShiftWith.type.3f9: type = facet_type <@LeftShiftWith, @LeftShiftWith(%Cpp.long)> [concrete]
-// CHECK:STDOUT:   %LeftShiftWith.Op.type.224: type = fn_type @LeftShiftWith.Op, @LeftShiftWith(%Cpp.long) [concrete]
-// CHECK:STDOUT:   %LeftShiftWith.impl_witness.cd6: <witness> = impl_witness imports.%LeftShiftWith.impl_witness_table.01c [concrete]
-// CHECK:STDOUT:   %LeftShiftWith.facet: %LeftShiftWith.type.3f9 = facet_value %Cpp.long, (%LeftShiftWith.impl_witness.cd6) [concrete]
-// CHECK:STDOUT:   %.864: type = fn_type_with_self_type %LeftShiftWith.Op.type.224, %LeftShiftWith.facet [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.LeftShiftWith.impl.Op.type.235: type = fn_type @Cpp.long.as.LeftShiftWith.impl.Op.3 [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.LeftShiftWith.impl.Op.dd3: %Cpp.long.as.LeftShiftWith.impl.Op.type.235 = struct_value () [concrete]
-// CHECK:STDOUT:   %RightShiftWith.type.995: type = facet_type <@RightShiftWith, @RightShiftWith(%Cpp.long)> [concrete]
-// CHECK:STDOUT:   %RightShiftWith.Op.type.fd9: type = fn_type @RightShiftWith.Op, @RightShiftWith(%Cpp.long) [concrete]
-// CHECK:STDOUT:   %RightShiftWith.impl_witness.b46: <witness> = impl_witness imports.%RightShiftWith.impl_witness_table.636 [concrete]
-// CHECK:STDOUT:   %RightShiftWith.facet: %RightShiftWith.type.995 = facet_value %Cpp.long, (%RightShiftWith.impl_witness.b46) [concrete]
-// CHECK:STDOUT:   %.398: type = fn_type_with_self_type %RightShiftWith.Op.type.fd9, %RightShiftWith.facet [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.RightShiftWith.impl.Op.type.233: type = fn_type @Cpp.long.as.RightShiftWith.impl.Op.3 [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.RightShiftWith.impl.Op.f79: %Cpp.long.as.RightShiftWith.impl.Op.type.233 = struct_value () [concrete]
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %Cpp: <namespace> = namespace file.%Cpp.import_cpp, [concrete] {
-// CHECK:STDOUT:     .long = constants.%Cpp.long
-// CHECK:STDOUT:     import Cpp//...
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %Core.import_ref.b8a: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness_table.903 = impl_witness_table (%Core.import_ref.b8a), @Core.IntLiteral.as.ImplicitAs.impl.052 [concrete]
-// CHECK:STDOUT:   %Core.import_ref.cb912f.1 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.454: %Cpp.long.as.BitComplement.impl.Op.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long.as.BitComplement.impl.Op]
-// CHECK:STDOUT:   %BitComplement.impl_witness_table = impl_witness_table (%Core.import_ref.cb912f.1, %Core.import_ref.454), @Cpp.long.as.BitComplement.impl [concrete]
-// CHECK:STDOUT:   %Core.import_ref.cb912f.4 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.f38: %Cpp.long.as.BitAndWith.impl.Op.type.a55 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long.as.BitAndWith.impl.Op.340]
-// CHECK:STDOUT:   %BitAndWith.impl_witness_table.e8c = impl_witness_table (%Core.import_ref.cb912f.4, %Core.import_ref.f38), @Cpp.long.as.BitAndWith.impl.7cf [concrete]
-// CHECK:STDOUT:   %Core.import_ref.cb912f.7 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.a17: %Cpp.long.as.BitOrWith.impl.Op.type.178 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long.as.BitOrWith.impl.Op.b33]
-// CHECK:STDOUT:   %BitOrWith.impl_witness_table.513 = impl_witness_table (%Core.import_ref.cb912f.7, %Core.import_ref.a17), @Cpp.long.as.BitOrWith.impl.fd5 [concrete]
-// CHECK:STDOUT:   %Core.import_ref.cb912f.10 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.4fd: %Cpp.long.as.BitXorWith.impl.Op.type.198 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long.as.BitXorWith.impl.Op.655]
-// CHECK:STDOUT:   %BitXorWith.impl_witness_table.708 = impl_witness_table (%Core.import_ref.cb912f.10, %Core.import_ref.4fd), @Cpp.long.as.BitXorWith.impl.ef4 [concrete]
-// CHECK:STDOUT:   %Core.import_ref.cb912f.13 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.c09: %Cpp.long.as.LeftShiftWith.impl.Op.type.235 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long.as.LeftShiftWith.impl.Op.dd3]
-// CHECK:STDOUT:   %LeftShiftWith.impl_witness_table.01c = impl_witness_table (%Core.import_ref.cb912f.13, %Core.import_ref.c09), @Cpp.long.as.LeftShiftWith.impl.979 [concrete]
-// CHECK:STDOUT:   %Core.import_ref.cb912f.16 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.6c0: %Cpp.long.as.RightShiftWith.impl.Op.type.233 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long.as.RightShiftWith.impl.Op.f79]
-// CHECK:STDOUT:   %RightShiftWith.impl_witness_table.636 = impl_witness_table (%Core.import_ref.cb912f.16, %Core.import_ref.6c0), @Cpp.long.as.RightShiftWith.impl.711 [concrete]
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: fn @BitWiseHomogeneousLong() {
-// CHECK:STDOUT: !entry:
-// CHECK:STDOUT:   name_binding_decl {
-// CHECK:STDOUT:     %a.patt: %pattern_type.68c = value_binding_pattern a [concrete]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %int_1.loc10: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %.loc10_13: type = splice_block %long.ref.loc10 [concrete = constants.%Cpp.long] {
-// CHECK:STDOUT:     %Cpp.ref.loc10: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
-// CHECK:STDOUT:     %long.ref.loc10: type = name_ref long, constants.%Cpp.long [concrete = constants.%Cpp.long]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %impl.elem0.loc10: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc10: <bound method> = bound_method %int_1.loc10, %impl.elem0.loc10 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10: init %Cpp.long = call %bound_method.loc10(%int_1.loc10) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc10_21.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc10_21.2: %Cpp.long = converted %int_1.loc10, %.loc10_21.1 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %a: %Cpp.long = value_binding a, %.loc10_21.2
-// CHECK:STDOUT:   name_binding_decl {
-// CHECK:STDOUT:     %b.patt: %pattern_type.68c = value_binding_pattern b [concrete]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %int_1.loc11: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %.loc11_13: type = splice_block %long.ref.loc11 [concrete = constants.%Cpp.long] {
-// CHECK:STDOUT:     %Cpp.ref.loc11: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
-// CHECK:STDOUT:     %long.ref.loc11: type = name_ref long, constants.%Cpp.long [concrete = constants.%Cpp.long]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %impl.elem0.loc11: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc11: <bound method> = bound_method %int_1.loc11, %impl.elem0.loc11 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc11: init %Cpp.long = call %bound_method.loc11(%int_1.loc11) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc11_21.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc11 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc11_21.2: %Cpp.long = converted %int_1.loc11, %.loc11_21.1 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %b: %Cpp.long = value_binding b, %.loc11_21.2
-// CHECK:STDOUT:   name_binding_decl {
-// CHECK:STDOUT:     %c.patt: %pattern_type.68c = value_binding_pattern c [concrete]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %int_1.loc12: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %.loc12_13: type = splice_block %long.ref.loc12 [concrete = constants.%Cpp.long] {
-// CHECK:STDOUT:     %Cpp.ref.loc12: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
-// CHECK:STDOUT:     %long.ref.loc12: type = name_ref long, constants.%Cpp.long [concrete = constants.%Cpp.long]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %impl.elem0.loc12: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc12: <bound method> = bound_method %int_1.loc12, %impl.elem0.loc12 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc12: init %Cpp.long = call %bound_method.loc12(%int_1.loc12) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc12_21.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc12 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc12_21.2: %Cpp.long = converted %int_1.loc12, %.loc12_21.1 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %c: %Cpp.long = value_binding c, %.loc12_21.2
-// CHECK:STDOUT:   %AssertSameType.ref.loc14: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc14: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %impl.elem1.loc14: %.788 = impl_witness_access constants.%BitComplement.impl_witness, element1 [concrete = constants.%Cpp.long.as.BitComplement.impl.Op]
-// CHECK:STDOUT:   %bound_method.loc14: <bound method> = bound_method %a.ref.loc14, %impl.elem1.loc14
-// CHECK:STDOUT:   %Cpp.long.as.BitComplement.impl.Op.call: init %Cpp.long = call %bound_method.loc14(%a.ref.loc14)
-// CHECK:STDOUT:   %c.ref.loc14: %Cpp.long = name_ref c, %c
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc14: <specific function> = specific_function %AssertSameType.ref.loc14, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc14_18.1: %Cpp.long = value_of_initializer %Cpp.long.as.BitComplement.impl.Op.call
-// CHECK:STDOUT:   %.loc14_18.2: %Cpp.long = converted %Cpp.long.as.BitComplement.impl.Op.call, %.loc14_18.1
-// CHECK:STDOUT:   %AssertSameType.call.loc14: init %empty_tuple.type = call %AssertSameType.specific_fn.loc14(%.loc14_18.2, %c.ref.loc14)
-// CHECK:STDOUT:   %AssertSameType.ref.loc15: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc15: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %b.ref.loc15: %Cpp.long = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc15: %.78c = impl_witness_access constants.%BitAndWith.impl_witness.6f1, element1 [concrete = constants.%Cpp.long.as.BitAndWith.impl.Op.340]
-// CHECK:STDOUT:   %bound_method.loc15: <bound method> = bound_method %a.ref.loc15, %impl.elem1.loc15
-// CHECK:STDOUT:   %Cpp.long.as.BitAndWith.impl.Op.call: init %Cpp.long = call %bound_method.loc15(%a.ref.loc15, %b.ref.loc15)
-// CHECK:STDOUT:   %c.ref.loc15: %Cpp.long = name_ref c, %c
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc15: <specific function> = specific_function %AssertSameType.ref.loc15, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc15_20.1: %Cpp.long = value_of_initializer %Cpp.long.as.BitAndWith.impl.Op.call
-// CHECK:STDOUT:   %.loc15_20.2: %Cpp.long = converted %Cpp.long.as.BitAndWith.impl.Op.call, %.loc15_20.1
-// CHECK:STDOUT:   %AssertSameType.call.loc15: init %empty_tuple.type = call %AssertSameType.specific_fn.loc15(%.loc15_20.2, %c.ref.loc15)
-// CHECK:STDOUT:   %AssertSameType.ref.loc16: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc16: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %b.ref.loc16: %Cpp.long = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc16: %.ee7 = impl_witness_access constants.%BitOrWith.impl_witness.003, element1 [concrete = constants.%Cpp.long.as.BitOrWith.impl.Op.b33]
-// CHECK:STDOUT:   %bound_method.loc16: <bound method> = bound_method %a.ref.loc16, %impl.elem1.loc16
-// CHECK:STDOUT:   %Cpp.long.as.BitOrWith.impl.Op.call: init %Cpp.long = call %bound_method.loc16(%a.ref.loc16, %b.ref.loc16)
-// CHECK:STDOUT:   %c.ref.loc16: %Cpp.long = name_ref c, %c
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc16: <specific function> = specific_function %AssertSameType.ref.loc16, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc16_20.1: %Cpp.long = value_of_initializer %Cpp.long.as.BitOrWith.impl.Op.call
-// CHECK:STDOUT:   %.loc16_20.2: %Cpp.long = converted %Cpp.long.as.BitOrWith.impl.Op.call, %.loc16_20.1
-// CHECK:STDOUT:   %AssertSameType.call.loc16: init %empty_tuple.type = call %AssertSameType.specific_fn.loc16(%.loc16_20.2, %c.ref.loc16)
-// CHECK:STDOUT:   %AssertSameType.ref.loc17: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc17: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %b.ref.loc17: %Cpp.long = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc17: %.e9a = impl_witness_access constants.%BitXorWith.impl_witness.e60, element1 [concrete = constants.%Cpp.long.as.BitXorWith.impl.Op.655]
-// CHECK:STDOUT:   %bound_method.loc17: <bound method> = bound_method %a.ref.loc17, %impl.elem1.loc17
-// CHECK:STDOUT:   %Cpp.long.as.BitXorWith.impl.Op.call: init %Cpp.long = call %bound_method.loc17(%a.ref.loc17, %b.ref.loc17)
-// CHECK:STDOUT:   %c.ref.loc17: %Cpp.long = name_ref c, %c
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc17: <specific function> = specific_function %AssertSameType.ref.loc17, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc17_20.1: %Cpp.long = value_of_initializer %Cpp.long.as.BitXorWith.impl.Op.call
-// CHECK:STDOUT:   %.loc17_20.2: %Cpp.long = converted %Cpp.long.as.BitXorWith.impl.Op.call, %.loc17_20.1
-// CHECK:STDOUT:   %AssertSameType.call.loc17: init %empty_tuple.type = call %AssertSameType.specific_fn.loc17(%.loc17_20.2, %c.ref.loc17)
-// CHECK:STDOUT:   %AssertSameType.ref.loc18: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc18: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %b.ref.loc18: %Cpp.long = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc18: %.864 = impl_witness_access constants.%LeftShiftWith.impl_witness.cd6, element1 [concrete = constants.%Cpp.long.as.LeftShiftWith.impl.Op.dd3]
-// CHECK:STDOUT:   %bound_method.loc18: <bound method> = bound_method %a.ref.loc18, %impl.elem1.loc18
-// CHECK:STDOUT:   %Cpp.long.as.LeftShiftWith.impl.Op.call: init %Cpp.long = call %bound_method.loc18(%a.ref.loc18, %b.ref.loc18)
-// CHECK:STDOUT:   %c.ref.loc18: %Cpp.long = name_ref c, %c
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc18: <specific function> = specific_function %AssertSameType.ref.loc18, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc18_20.1: %Cpp.long = value_of_initializer %Cpp.long.as.LeftShiftWith.impl.Op.call
-// CHECK:STDOUT:   %.loc18_20.2: %Cpp.long = converted %Cpp.long.as.LeftShiftWith.impl.Op.call, %.loc18_20.1
-// CHECK:STDOUT:   %AssertSameType.call.loc18: init %empty_tuple.type = call %AssertSameType.specific_fn.loc18(%.loc18_20.2, %c.ref.loc18)
-// CHECK:STDOUT:   %AssertSameType.ref.loc19: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc19: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %b.ref.loc19: %Cpp.long = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc19: %.398 = impl_witness_access constants.%RightShiftWith.impl_witness.b46, element1 [concrete = constants.%Cpp.long.as.RightShiftWith.impl.Op.f79]
-// CHECK:STDOUT:   %bound_method.loc19: <bound method> = bound_method %a.ref.loc19, %impl.elem1.loc19
-// CHECK:STDOUT:   %Cpp.long.as.RightShiftWith.impl.Op.call: init %Cpp.long = call %bound_method.loc19(%a.ref.loc19, %b.ref.loc19)
-// CHECK:STDOUT:   %c.ref.loc19: %Cpp.long = name_ref c, %c
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc19: <specific function> = specific_function %AssertSameType.ref.loc19, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc19_20.1: %Cpp.long = value_of_initializer %Cpp.long.as.RightShiftWith.impl.Op.call
-// CHECK:STDOUT:   %.loc19_20.2: %Cpp.long = converted %Cpp.long.as.RightShiftWith.impl.Op.call, %.loc19_20.1
-// CHECK:STDOUT:   %AssertSameType.call.loc19: init %empty_tuple.type = call %AssertSameType.specific_fn.loc19(%.loc19_20.2, %c.ref.loc19)
-// CHECK:STDOUT:   <elided>
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: --- bitwise_heterogeneous_long_left_side.carbon
-// CHECK:STDOUT:
-// CHECK:STDOUT: constants {
-// CHECK:STDOUT:   %AssertSameType.type: type = fn_type @AssertSameType [concrete]
-// CHECK:STDOUT:   %empty_tuple.type: type = tuple_type () [concrete]
-// CHECK:STDOUT:   %AssertSameType: %AssertSameType.type = struct_value () [concrete]
-// CHECK:STDOUT:   %int_32: Core.IntLiteral = int_value 32 [concrete]
-// CHECK:STDOUT:   %i32: type = class_type @Int, @Int(%int_32) [concrete]
-// CHECK:STDOUT:   %int_1.5b8: Core.IntLiteral = int_value 1 [concrete]
-// CHECK:STDOUT:   %Cpp.long: type = class_type @Long32 [concrete]
-// CHECK:STDOUT:   %pattern_type.68c: type = pattern_type %Cpp.long [concrete]
-// CHECK:STDOUT:   %ImplicitAs.type.819: type = facet_type <@ImplicitAs, @ImplicitAs(%Cpp.long)> [concrete]
-// CHECK:STDOUT:   %ImplicitAs.Convert.type.4c2: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Cpp.long) [concrete]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness.2ce: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.903 [concrete]
-// CHECK:STDOUT:   %ImplicitAs.facet.eed: %ImplicitAs.type.819 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.2ce) [concrete]
-// CHECK:STDOUT:   %.dad: type = fn_type_with_self_type %ImplicitAs.Convert.type.4c2, %ImplicitAs.facet.eed [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.b38: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.2 [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.b38 = struct_value () [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8: <bound method> = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a [concrete]
-// CHECK:STDOUT:   %int_1.5a4: %Cpp.long = int_value 1 [concrete]
-// CHECK:STDOUT:   %BitAndWith.type.0fb: type = facet_type <@BitAndWith, @BitAndWith(%i32)> [concrete]
-// CHECK:STDOUT:   %BitAndWith.Op.type.e35: type = fn_type @BitAndWith.Op, @BitAndWith(%i32) [concrete]
-// CHECK:STDOUT:   %T.57d: %ImplicitAs.type.819 = symbolic_binding T, 0 [symbolic]
-// CHECK:STDOUT:   %Cpp.long.as.BitAndWith.impl.Op.type.8319b2.1: type = fn_type @Cpp.long.as.BitAndWith.impl.Op.1, @Cpp.long.as.BitAndWith.impl.334(%T.57d) [symbolic]
-// CHECK:STDOUT:   %Cpp.long.as.BitAndWith.impl.Op.3828c1.1: %Cpp.long.as.BitAndWith.impl.Op.type.8319b2.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %Cpp.long.as.BitAndWith.impl.Op.type.8319b2.2: type = fn_type @Cpp.long.as.BitAndWith.impl.Op.2, @Cpp.long.as.BitAndWith.impl.334(%T.57d) [symbolic]
-// CHECK:STDOUT:   %Cpp.long.as.BitAndWith.impl.Op.3828c1.2: %Cpp.long.as.BitAndWith.impl.Op.type.8319b2.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %BitAndWith.type.011: type = facet_type <@BitAndWith, @BitAndWith(Core.IntLiteral)> [concrete]
-// CHECK:STDOUT:   %BitAndWith.Op.type.4bf: type = fn_type @BitAndWith.Op, @BitAndWith(Core.IntLiteral) [concrete]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness.0fc: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.5ad [concrete]
-// CHECK:STDOUT:   %ImplicitAs.facet.174: %ImplicitAs.type.819 = facet_value %i32, (%ImplicitAs.impl_witness.0fc) [concrete]
-// CHECK:STDOUT:   %BitAndWith.impl_witness.fe3: <witness> = impl_witness imports.%BitAndWith.impl_witness_table.072, @Cpp.long.as.BitAndWith.impl.334(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitAndWith.impl.Op.type.202298.1: type = fn_type @Cpp.long.as.BitAndWith.impl.Op.2, @Cpp.long.as.BitAndWith.impl.334(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitAndWith.impl.Op.a9ac84.1: %Cpp.long.as.BitAndWith.impl.Op.type.202298.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitAndWith.impl.Op.type.202298.2: type = fn_type @Cpp.long.as.BitAndWith.impl.Op.1, @Cpp.long.as.BitAndWith.impl.334(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitAndWith.impl.Op.a9ac84.2: %Cpp.long.as.BitAndWith.impl.Op.type.202298.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %BitAndWith.facet.9d5: %BitAndWith.type.0fb = facet_value %Cpp.long, (%BitAndWith.impl_witness.fe3) [concrete]
-// CHECK:STDOUT:   %.bdd: type = fn_type_with_self_type %BitAndWith.Op.type.e35, %BitAndWith.facet.9d5 [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitAndWith.impl.Op.specific_fn.dcd797.1: <specific function> = specific_function %Cpp.long.as.BitAndWith.impl.Op.a9ac84.2, @Cpp.long.as.BitAndWith.impl.Op.1(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %.c45: type = fn_type_with_self_type %ImplicitAs.Convert.type.4c2, %ImplicitAs.facet.174 [concrete]
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.type: type = fn_type @i32.as.ImplicitAs.impl.Convert [concrete]
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert: %i32.as.ImplicitAs.impl.Convert.type = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitAndWith.impl.Op.specific_fn.dcd797.2: <specific function> = specific_function %Cpp.long.as.BitAndWith.impl.Op.a9ac84.1, @Cpp.long.as.BitAndWith.impl.Op.2(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %AssertSameType.specific_fn: <specific function> = specific_function %AssertSameType, @AssertSameType(%Cpp.long) [concrete]
-// CHECK:STDOUT:   %BitOrWith.type.428: type = facet_type <@BitOrWith, @BitOrWith(%i32)> [concrete]
-// CHECK:STDOUT:   %BitOrWith.Op.type.99b: type = fn_type @BitOrWith.Op, @BitOrWith(%i32) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitOrWith.impl.Op.type.9f5440.1: type = fn_type @Cpp.long.as.BitOrWith.impl.Op.1, @Cpp.long.as.BitOrWith.impl.fc3(%T.57d) [symbolic]
-// CHECK:STDOUT:   %Cpp.long.as.BitOrWith.impl.Op.81f55a.1: %Cpp.long.as.BitOrWith.impl.Op.type.9f5440.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %Cpp.long.as.BitOrWith.impl.Op.type.9f5440.2: type = fn_type @Cpp.long.as.BitOrWith.impl.Op.2, @Cpp.long.as.BitOrWith.impl.fc3(%T.57d) [symbolic]
-// CHECK:STDOUT:   %Cpp.long.as.BitOrWith.impl.Op.81f55a.2: %Cpp.long.as.BitOrWith.impl.Op.type.9f5440.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %BitOrWith.type.cba: type = facet_type <@BitOrWith, @BitOrWith(Core.IntLiteral)> [concrete]
-// CHECK:STDOUT:   %BitOrWith.Op.type.0e5: type = fn_type @BitOrWith.Op, @BitOrWith(Core.IntLiteral) [concrete]
-// CHECK:STDOUT:   %BitOrWith.impl_witness.b0c: <witness> = impl_witness imports.%BitOrWith.impl_witness_table.9a6, @Cpp.long.as.BitOrWith.impl.fc3(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitOrWith.impl.Op.type.dccbc7.1: type = fn_type @Cpp.long.as.BitOrWith.impl.Op.2, @Cpp.long.as.BitOrWith.impl.fc3(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitOrWith.impl.Op.d9c870.1: %Cpp.long.as.BitOrWith.impl.Op.type.dccbc7.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitOrWith.impl.Op.type.dccbc7.2: type = fn_type @Cpp.long.as.BitOrWith.impl.Op.1, @Cpp.long.as.BitOrWith.impl.fc3(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitOrWith.impl.Op.d9c870.2: %Cpp.long.as.BitOrWith.impl.Op.type.dccbc7.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %BitOrWith.facet.acb: %BitOrWith.type.428 = facet_value %Cpp.long, (%BitOrWith.impl_witness.b0c) [concrete]
-// CHECK:STDOUT:   %.faa: type = fn_type_with_self_type %BitOrWith.Op.type.99b, %BitOrWith.facet.acb [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitOrWith.impl.Op.specific_fn.03ab4b.1: <specific function> = specific_function %Cpp.long.as.BitOrWith.impl.Op.d9c870.2, @Cpp.long.as.BitOrWith.impl.Op.1(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitOrWith.impl.Op.specific_fn.03ab4b.2: <specific function> = specific_function %Cpp.long.as.BitOrWith.impl.Op.d9c870.1, @Cpp.long.as.BitOrWith.impl.Op.2(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %BitXorWith.type.1fc: type = facet_type <@BitXorWith, @BitXorWith(%i32)> [concrete]
-// CHECK:STDOUT:   %BitXorWith.Op.type.a4b: type = fn_type @BitXorWith.Op, @BitXorWith(%i32) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitXorWith.impl.Op.type.876fc1.1: type = fn_type @Cpp.long.as.BitXorWith.impl.Op.1, @Cpp.long.as.BitXorWith.impl.732(%T.57d) [symbolic]
-// CHECK:STDOUT:   %Cpp.long.as.BitXorWith.impl.Op.c0eaae.1: %Cpp.long.as.BitXorWith.impl.Op.type.876fc1.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %Cpp.long.as.BitXorWith.impl.Op.type.876fc1.2: type = fn_type @Cpp.long.as.BitXorWith.impl.Op.2, @Cpp.long.as.BitXorWith.impl.732(%T.57d) [symbolic]
-// CHECK:STDOUT:   %Cpp.long.as.BitXorWith.impl.Op.c0eaae.2: %Cpp.long.as.BitXorWith.impl.Op.type.876fc1.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %BitXorWith.type.fd0: type = facet_type <@BitXorWith, @BitXorWith(Core.IntLiteral)> [concrete]
-// CHECK:STDOUT:   %BitXorWith.Op.type.1f1: type = fn_type @BitXorWith.Op, @BitXorWith(Core.IntLiteral) [concrete]
-// CHECK:STDOUT:   %BitXorWith.impl_witness.8a0: <witness> = impl_witness imports.%BitXorWith.impl_witness_table.9f4, @Cpp.long.as.BitXorWith.impl.732(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitXorWith.impl.Op.type.7fe348.1: type = fn_type @Cpp.long.as.BitXorWith.impl.Op.2, @Cpp.long.as.BitXorWith.impl.732(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitXorWith.impl.Op.48a9f4.1: %Cpp.long.as.BitXorWith.impl.Op.type.7fe348.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitXorWith.impl.Op.type.7fe348.2: type = fn_type @Cpp.long.as.BitXorWith.impl.Op.1, @Cpp.long.as.BitXorWith.impl.732(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitXorWith.impl.Op.48a9f4.2: %Cpp.long.as.BitXorWith.impl.Op.type.7fe348.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %BitXorWith.facet.91f: %BitXorWith.type.1fc = facet_value %Cpp.long, (%BitXorWith.impl_witness.8a0) [concrete]
-// CHECK:STDOUT:   %.f2f: type = fn_type_with_self_type %BitXorWith.Op.type.a4b, %BitXorWith.facet.91f [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitXorWith.impl.Op.specific_fn.4ec2b6.1: <specific function> = specific_function %Cpp.long.as.BitXorWith.impl.Op.48a9f4.2, @Cpp.long.as.BitXorWith.impl.Op.1(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitXorWith.impl.Op.specific_fn.4ec2b6.2: <specific function> = specific_function %Cpp.long.as.BitXorWith.impl.Op.48a9f4.1, @Cpp.long.as.BitXorWith.impl.Op.2(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %LeftShiftWith.type.048: type = facet_type <@LeftShiftWith, @LeftShiftWith(%i32)> [concrete]
-// CHECK:STDOUT:   %LeftShiftWith.Op.type.dfc: type = fn_type @LeftShiftWith.Op, @LeftShiftWith(%i32) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.LeftShiftWith.impl.Op.type.97b57f.1: type = fn_type @Cpp.long.as.LeftShiftWith.impl.Op.1, @Cpp.long.as.LeftShiftWith.impl.272(%T.57d) [symbolic]
-// CHECK:STDOUT:   %Cpp.long.as.LeftShiftWith.impl.Op.69ad3e.1: %Cpp.long.as.LeftShiftWith.impl.Op.type.97b57f.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %Cpp.long.as.LeftShiftWith.impl.Op.type.97b57f.2: type = fn_type @Cpp.long.as.LeftShiftWith.impl.Op.2, @Cpp.long.as.LeftShiftWith.impl.272(%T.57d) [symbolic]
-// CHECK:STDOUT:   %Cpp.long.as.LeftShiftWith.impl.Op.69ad3e.2: %Cpp.long.as.LeftShiftWith.impl.Op.type.97b57f.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %LeftShiftWith.type.a1f: type = facet_type <@LeftShiftWith, @LeftShiftWith(Core.IntLiteral)> [concrete]
-// CHECK:STDOUT:   %LeftShiftWith.Op.type.55b: type = fn_type @LeftShiftWith.Op, @LeftShiftWith(Core.IntLiteral) [concrete]
-// CHECK:STDOUT:   %LeftShiftWith.impl_witness.982: <witness> = impl_witness imports.%LeftShiftWith.impl_witness_table.a97, @Cpp.long.as.LeftShiftWith.impl.272(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.LeftShiftWith.impl.Op.type.1d34cb.1: type = fn_type @Cpp.long.as.LeftShiftWith.impl.Op.2, @Cpp.long.as.LeftShiftWith.impl.272(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.LeftShiftWith.impl.Op.9105a1.1: %Cpp.long.as.LeftShiftWith.impl.Op.type.1d34cb.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.LeftShiftWith.impl.Op.type.1d34cb.2: type = fn_type @Cpp.long.as.LeftShiftWith.impl.Op.1, @Cpp.long.as.LeftShiftWith.impl.272(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.LeftShiftWith.impl.Op.9105a1.2: %Cpp.long.as.LeftShiftWith.impl.Op.type.1d34cb.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %LeftShiftWith.facet.089: %LeftShiftWith.type.048 = facet_value %Cpp.long, (%LeftShiftWith.impl_witness.982) [concrete]
-// CHECK:STDOUT:   %.2be: type = fn_type_with_self_type %LeftShiftWith.Op.type.dfc, %LeftShiftWith.facet.089 [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.LeftShiftWith.impl.Op.specific_fn.1fda18.1: <specific function> = specific_function %Cpp.long.as.LeftShiftWith.impl.Op.9105a1.2, @Cpp.long.as.LeftShiftWith.impl.Op.1(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.LeftShiftWith.impl.Op.specific_fn.1fda18.2: <specific function> = specific_function %Cpp.long.as.LeftShiftWith.impl.Op.9105a1.1, @Cpp.long.as.LeftShiftWith.impl.Op.2(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %RightShiftWith.type.bc6: type = facet_type <@RightShiftWith, @RightShiftWith(%i32)> [concrete]
-// CHECK:STDOUT:   %RightShiftWith.Op.type.807: type = fn_type @RightShiftWith.Op, @RightShiftWith(%i32) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.RightShiftWith.impl.Op.type.cc50bd.1: type = fn_type @Cpp.long.as.RightShiftWith.impl.Op.1, @Cpp.long.as.RightShiftWith.impl.3d6(%T.57d) [symbolic]
-// CHECK:STDOUT:   %Cpp.long.as.RightShiftWith.impl.Op.e1e575.1: %Cpp.long.as.RightShiftWith.impl.Op.type.cc50bd.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %Cpp.long.as.RightShiftWith.impl.Op.type.cc50bd.2: type = fn_type @Cpp.long.as.RightShiftWith.impl.Op.2, @Cpp.long.as.RightShiftWith.impl.3d6(%T.57d) [symbolic]
-// CHECK:STDOUT:   %Cpp.long.as.RightShiftWith.impl.Op.e1e575.2: %Cpp.long.as.RightShiftWith.impl.Op.type.cc50bd.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %RightShiftWith.type.18a: type = facet_type <@RightShiftWith, @RightShiftWith(Core.IntLiteral)> [concrete]
-// CHECK:STDOUT:   %RightShiftWith.Op.type.c0c: type = fn_type @RightShiftWith.Op, @RightShiftWith(Core.IntLiteral) [concrete]
-// CHECK:STDOUT:   %RightShiftWith.impl_witness.ccb: <witness> = impl_witness imports.%RightShiftWith.impl_witness_table.e0a, @Cpp.long.as.RightShiftWith.impl.3d6(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.RightShiftWith.impl.Op.type.e35e06.1: type = fn_type @Cpp.long.as.RightShiftWith.impl.Op.2, @Cpp.long.as.RightShiftWith.impl.3d6(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.RightShiftWith.impl.Op.50edfc.1: %Cpp.long.as.RightShiftWith.impl.Op.type.e35e06.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.RightShiftWith.impl.Op.type.e35e06.2: type = fn_type @Cpp.long.as.RightShiftWith.impl.Op.1, @Cpp.long.as.RightShiftWith.impl.3d6(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.RightShiftWith.impl.Op.50edfc.2: %Cpp.long.as.RightShiftWith.impl.Op.type.e35e06.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %RightShiftWith.facet.6d9: %RightShiftWith.type.bc6 = facet_value %Cpp.long, (%RightShiftWith.impl_witness.ccb) [concrete]
-// CHECK:STDOUT:   %.dac: type = fn_type_with_self_type %RightShiftWith.Op.type.807, %RightShiftWith.facet.6d9 [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.RightShiftWith.impl.Op.specific_fn.012106.1: <specific function> = specific_function %Cpp.long.as.RightShiftWith.impl.Op.50edfc.2, @Cpp.long.as.RightShiftWith.impl.Op.1(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.RightShiftWith.impl.Op.specific_fn.012106.2: <specific function> = specific_function %Cpp.long.as.RightShiftWith.impl.Op.50edfc.1, @Cpp.long.as.RightShiftWith.impl.Op.2(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %BitAndWith.impl_witness.0fc: <witness> = impl_witness imports.%BitAndWith.impl_witness_table.072, @Cpp.long.as.BitAndWith.impl.334(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitAndWith.impl.Op.type.ae3ddd.1: type = fn_type @Cpp.long.as.BitAndWith.impl.Op.2, @Cpp.long.as.BitAndWith.impl.334(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitAndWith.impl.Op.98f052.1: %Cpp.long.as.BitAndWith.impl.Op.type.ae3ddd.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitAndWith.impl.Op.type.ae3ddd.2: type = fn_type @Cpp.long.as.BitAndWith.impl.Op.1, @Cpp.long.as.BitAndWith.impl.334(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitAndWith.impl.Op.98f052.2: %Cpp.long.as.BitAndWith.impl.Op.type.ae3ddd.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %BitAndWith.facet.6ae: %BitAndWith.type.011 = facet_value %Cpp.long, (%BitAndWith.impl_witness.0fc) [concrete]
-// CHECK:STDOUT:   %.9d7: type = fn_type_with_self_type %BitAndWith.Op.type.4bf, %BitAndWith.facet.6ae [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitAndWith.impl.Op.specific_fn.af17b5.1: <specific function> = specific_function %Cpp.long.as.BitAndWith.impl.Op.98f052.2, @Cpp.long.as.BitAndWith.impl.Op.1(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitAndWith.impl.Op.specific_fn.af17b5.2: <specific function> = specific_function %Cpp.long.as.BitAndWith.impl.Op.98f052.1, @Cpp.long.as.BitAndWith.impl.Op.2(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %BitOrWith.impl_witness.39f: <witness> = impl_witness imports.%BitOrWith.impl_witness_table.9a6, @Cpp.long.as.BitOrWith.impl.fc3(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitOrWith.impl.Op.type.331453.1: type = fn_type @Cpp.long.as.BitOrWith.impl.Op.2, @Cpp.long.as.BitOrWith.impl.fc3(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitOrWith.impl.Op.664d1e.1: %Cpp.long.as.BitOrWith.impl.Op.type.331453.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitOrWith.impl.Op.type.331453.2: type = fn_type @Cpp.long.as.BitOrWith.impl.Op.1, @Cpp.long.as.BitOrWith.impl.fc3(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitOrWith.impl.Op.664d1e.2: %Cpp.long.as.BitOrWith.impl.Op.type.331453.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %BitOrWith.facet.9a5: %BitOrWith.type.cba = facet_value %Cpp.long, (%BitOrWith.impl_witness.39f) [concrete]
-// CHECK:STDOUT:   %.a50: type = fn_type_with_self_type %BitOrWith.Op.type.0e5, %BitOrWith.facet.9a5 [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitOrWith.impl.Op.specific_fn.be7132.1: <specific function> = specific_function %Cpp.long.as.BitOrWith.impl.Op.664d1e.2, @Cpp.long.as.BitOrWith.impl.Op.1(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitOrWith.impl.Op.specific_fn.be7132.2: <specific function> = specific_function %Cpp.long.as.BitOrWith.impl.Op.664d1e.1, @Cpp.long.as.BitOrWith.impl.Op.2(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %BitXorWith.impl_witness.001: <witness> = impl_witness imports.%BitXorWith.impl_witness_table.9f4, @Cpp.long.as.BitXorWith.impl.732(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitXorWith.impl.Op.type.97a9a2.1: type = fn_type @Cpp.long.as.BitXorWith.impl.Op.2, @Cpp.long.as.BitXorWith.impl.732(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitXorWith.impl.Op.5b3046.1: %Cpp.long.as.BitXorWith.impl.Op.type.97a9a2.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitXorWith.impl.Op.type.97a9a2.2: type = fn_type @Cpp.long.as.BitXorWith.impl.Op.1, @Cpp.long.as.BitXorWith.impl.732(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitXorWith.impl.Op.5b3046.2: %Cpp.long.as.BitXorWith.impl.Op.type.97a9a2.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %BitXorWith.facet.349: %BitXorWith.type.fd0 = facet_value %Cpp.long, (%BitXorWith.impl_witness.001) [concrete]
-// CHECK:STDOUT:   %.8e7: type = fn_type_with_self_type %BitXorWith.Op.type.1f1, %BitXorWith.facet.349 [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitXorWith.impl.Op.specific_fn.f1c9e6.1: <specific function> = specific_function %Cpp.long.as.BitXorWith.impl.Op.5b3046.2, @Cpp.long.as.BitXorWith.impl.Op.1(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.BitXorWith.impl.Op.specific_fn.f1c9e6.2: <specific function> = specific_function %Cpp.long.as.BitXorWith.impl.Op.5b3046.1, @Cpp.long.as.BitXorWith.impl.Op.2(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %LeftShiftWith.impl_witness.a1c: <witness> = impl_witness imports.%LeftShiftWith.impl_witness_table.a97, @Cpp.long.as.LeftShiftWith.impl.272(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.LeftShiftWith.impl.Op.type.d93838.1: type = fn_type @Cpp.long.as.LeftShiftWith.impl.Op.2, @Cpp.long.as.LeftShiftWith.impl.272(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.LeftShiftWith.impl.Op.f145d8.1: %Cpp.long.as.LeftShiftWith.impl.Op.type.d93838.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.LeftShiftWith.impl.Op.type.d93838.2: type = fn_type @Cpp.long.as.LeftShiftWith.impl.Op.1, @Cpp.long.as.LeftShiftWith.impl.272(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.LeftShiftWith.impl.Op.f145d8.2: %Cpp.long.as.LeftShiftWith.impl.Op.type.d93838.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %LeftShiftWith.facet.5e2: %LeftShiftWith.type.a1f = facet_value %Cpp.long, (%LeftShiftWith.impl_witness.a1c) [concrete]
-// CHECK:STDOUT:   %.0a1: type = fn_type_with_self_type %LeftShiftWith.Op.type.55b, %LeftShiftWith.facet.5e2 [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.LeftShiftWith.impl.Op.specific_fn.abc44e.1: <specific function> = specific_function %Cpp.long.as.LeftShiftWith.impl.Op.f145d8.2, @Cpp.long.as.LeftShiftWith.impl.Op.1(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.LeftShiftWith.impl.Op.specific_fn.abc44e.2: <specific function> = specific_function %Cpp.long.as.LeftShiftWith.impl.Op.f145d8.1, @Cpp.long.as.LeftShiftWith.impl.Op.2(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %RightShiftWith.impl_witness.5fe: <witness> = impl_witness imports.%RightShiftWith.impl_witness_table.e0a, @Cpp.long.as.RightShiftWith.impl.3d6(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.RightShiftWith.impl.Op.type.a6dc1c.1: type = fn_type @Cpp.long.as.RightShiftWith.impl.Op.2, @Cpp.long.as.RightShiftWith.impl.3d6(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.RightShiftWith.impl.Op.249bc3.1: %Cpp.long.as.RightShiftWith.impl.Op.type.a6dc1c.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.RightShiftWith.impl.Op.type.a6dc1c.2: type = fn_type @Cpp.long.as.RightShiftWith.impl.Op.1, @Cpp.long.as.RightShiftWith.impl.3d6(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.RightShiftWith.impl.Op.249bc3.2: %Cpp.long.as.RightShiftWith.impl.Op.type.a6dc1c.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %RightShiftWith.facet.1d4: %RightShiftWith.type.18a = facet_value %Cpp.long, (%RightShiftWith.impl_witness.5fe) [concrete]
-// CHECK:STDOUT:   %.fab: type = fn_type_with_self_type %RightShiftWith.Op.type.c0c, %RightShiftWith.facet.1d4 [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.RightShiftWith.impl.Op.specific_fn.c6040e.1: <specific function> = specific_function %Cpp.long.as.RightShiftWith.impl.Op.249bc3.2, @Cpp.long.as.RightShiftWith.impl.Op.1(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.RightShiftWith.impl.Op.specific_fn.c6040e.2: <specific function> = specific_function %Cpp.long.as.RightShiftWith.impl.Op.249bc3.1, @Cpp.long.as.RightShiftWith.impl.Op.2(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %Cpp: <namespace> = namespace file.%Cpp.import_cpp, [concrete] {
-// CHECK:STDOUT:     .long = constants.%Cpp.long
-// CHECK:STDOUT:     import Cpp//...
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %Core.import_ref.b8a: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.b38 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness_table.903 = impl_witness_table (%Core.import_ref.b8a), @Core.IntLiteral.as.ImplicitAs.impl.052 [concrete]
-// CHECK:STDOUT:   %Core.import_ref.cb912f.1 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.17a: @Cpp.long.as.BitAndWith.impl.334.%Cpp.long.as.BitAndWith.impl.Op.type.2 (%Cpp.long.as.BitAndWith.impl.Op.type.8319b2.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long.as.BitAndWith.impl.334.%Cpp.long.as.BitAndWith.impl.Op.2 (constants.%Cpp.long.as.BitAndWith.impl.Op.3828c1.1)]
-// CHECK:STDOUT:   %BitAndWith.impl_witness_table.072 = impl_witness_table (%Core.import_ref.cb912f.1, %Core.import_ref.17a), @Cpp.long.as.BitAndWith.impl.334 [concrete]
-// CHECK:STDOUT:   %Core.Op.c8a: @Cpp.long.as.BitAndWith.impl.334.%Cpp.long.as.BitAndWith.impl.Op.type.1 (%Cpp.long.as.BitAndWith.impl.Op.type.8319b2.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @Cpp.long.as.BitAndWith.impl.334.%Cpp.long.as.BitAndWith.impl.Op.1 (constants.%Cpp.long.as.BitAndWith.impl.Op.3828c1.2)]
-// CHECK:STDOUT:   %Core.import_ref.4fa: %i32.as.ImplicitAs.impl.Convert.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness_table.5ad = impl_witness_table (%Core.import_ref.4fa), @i32.as.ImplicitAs.impl [concrete]
-// CHECK:STDOUT:   %Core.import_ref.cb912f.3 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.3b6d: @Cpp.long.as.BitOrWith.impl.fc3.%Cpp.long.as.BitOrWith.impl.Op.type.2 (%Cpp.long.as.BitOrWith.impl.Op.type.9f5440.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long.as.BitOrWith.impl.fc3.%Cpp.long.as.BitOrWith.impl.Op.2 (constants.%Cpp.long.as.BitOrWith.impl.Op.81f55a.1)]
-// CHECK:STDOUT:   %BitOrWith.impl_witness_table.9a6 = impl_witness_table (%Core.import_ref.cb912f.3, %Core.import_ref.3b6d), @Cpp.long.as.BitOrWith.impl.fc3 [concrete]
-// CHECK:STDOUT:   %Core.Op.788: @Cpp.long.as.BitOrWith.impl.fc3.%Cpp.long.as.BitOrWith.impl.Op.type.1 (%Cpp.long.as.BitOrWith.impl.Op.type.9f5440.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @Cpp.long.as.BitOrWith.impl.fc3.%Cpp.long.as.BitOrWith.impl.Op.1 (constants.%Cpp.long.as.BitOrWith.impl.Op.81f55a.2)]
-// CHECK:STDOUT:   %Core.import_ref.cb912f.5 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.619: @Cpp.long.as.BitXorWith.impl.732.%Cpp.long.as.BitXorWith.impl.Op.type.2 (%Cpp.long.as.BitXorWith.impl.Op.type.876fc1.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long.as.BitXorWith.impl.732.%Cpp.long.as.BitXorWith.impl.Op.2 (constants.%Cpp.long.as.BitXorWith.impl.Op.c0eaae.1)]
-// CHECK:STDOUT:   %BitXorWith.impl_witness_table.9f4 = impl_witness_table (%Core.import_ref.cb912f.5, %Core.import_ref.619), @Cpp.long.as.BitXorWith.impl.732 [concrete]
-// CHECK:STDOUT:   %Core.Op.c61: @Cpp.long.as.BitXorWith.impl.732.%Cpp.long.as.BitXorWith.impl.Op.type.1 (%Cpp.long.as.BitXorWith.impl.Op.type.876fc1.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @Cpp.long.as.BitXorWith.impl.732.%Cpp.long.as.BitXorWith.impl.Op.1 (constants.%Cpp.long.as.BitXorWith.impl.Op.c0eaae.2)]
-// CHECK:STDOUT:   %Core.import_ref.cb912f.7 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.0ca: @Cpp.long.as.LeftShiftWith.impl.272.%Cpp.long.as.LeftShiftWith.impl.Op.type.2 (%Cpp.long.as.LeftShiftWith.impl.Op.type.97b57f.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long.as.LeftShiftWith.impl.272.%Cpp.long.as.LeftShiftWith.impl.Op.2 (constants.%Cpp.long.as.LeftShiftWith.impl.Op.69ad3e.1)]
-// CHECK:STDOUT:   %LeftShiftWith.impl_witness_table.a97 = impl_witness_table (%Core.import_ref.cb912f.7, %Core.import_ref.0ca), @Cpp.long.as.LeftShiftWith.impl.272 [concrete]
-// CHECK:STDOUT:   %Core.Op.2db: @Cpp.long.as.LeftShiftWith.impl.272.%Cpp.long.as.LeftShiftWith.impl.Op.type.1 (%Cpp.long.as.LeftShiftWith.impl.Op.type.97b57f.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @Cpp.long.as.LeftShiftWith.impl.272.%Cpp.long.as.LeftShiftWith.impl.Op.1 (constants.%Cpp.long.as.LeftShiftWith.impl.Op.69ad3e.2)]
-// CHECK:STDOUT:   %Core.import_ref.cb912f.9 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.038: @Cpp.long.as.RightShiftWith.impl.3d6.%Cpp.long.as.RightShiftWith.impl.Op.type.2 (%Cpp.long.as.RightShiftWith.impl.Op.type.cc50bd.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long.as.RightShiftWith.impl.3d6.%Cpp.long.as.RightShiftWith.impl.Op.2 (constants.%Cpp.long.as.RightShiftWith.impl.Op.e1e575.1)]
-// CHECK:STDOUT:   %RightShiftWith.impl_witness_table.e0a = impl_witness_table (%Core.import_ref.cb912f.9, %Core.import_ref.038), @Cpp.long.as.RightShiftWith.impl.3d6 [concrete]
-// CHECK:STDOUT:   %Core.Op.330: @Cpp.long.as.RightShiftWith.impl.3d6.%Cpp.long.as.RightShiftWith.impl.Op.type.1 (%Cpp.long.as.RightShiftWith.impl.Op.type.cc50bd.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @Cpp.long.as.RightShiftWith.impl.3d6.%Cpp.long.as.RightShiftWith.impl.Op.1 (constants.%Cpp.long.as.RightShiftWith.impl.Op.e1e575.2)]
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: fn @BitWiseHeterogeneousLongLeftSide() {
-// CHECK:STDOUT: !entry:
-// CHECK:STDOUT:   <elided>
-// CHECK:STDOUT:   name_binding_decl {
-// CHECK:STDOUT:     %a.patt: %pattern_type.68c = value_binding_pattern a [concrete]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %int_1.loc11: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %.loc11_13: type = splice_block %long.ref [concrete = constants.%Cpp.long] {
-// CHECK:STDOUT:     %Cpp.ref: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
-// CHECK:STDOUT:     %long.ref: type = name_ref long, constants.%Cpp.long [concrete = constants.%Cpp.long]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %impl.elem0.loc11: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %bound_method.loc11: <bound method> = bound_method %int_1.loc11, %impl.elem0.loc11 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc11: init %Cpp.long = call %bound_method.loc11(%int_1.loc11) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc11_21.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc11 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc11_21.2: %Cpp.long = converted %int_1.loc11, %.loc11_21.1 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %a: %Cpp.long = value_binding a, %.loc11_21.2
-// CHECK:STDOUT:   %AssertSameType.ref.loc13: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc13_18: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %b.ref.loc13: %i32 = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc13: %.bdd = impl_witness_access constants.%BitAndWith.impl_witness.fe3, element1 [concrete = constants.%Cpp.long.as.BitAndWith.impl.Op.a9ac84.2]
-// CHECK:STDOUT:   %bound_method.loc13_20.1: <bound method> = bound_method %a.ref.loc13_18, %impl.elem1.loc13
-// CHECK:STDOUT:   %ImplicitAs.facet.loc13_20.1: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc13_20.1: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc13_20.1 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc13_20.2: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc13_20.2: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc13_20.2 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %specific_fn.loc13: <specific function> = specific_function %impl.elem1.loc13, @Cpp.long.as.BitAndWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.BitAndWith.impl.Op.specific_fn.dcd797.1]
-// CHECK:STDOUT:   %bound_method.loc13_20.2: <bound method> = bound_method %a.ref.loc13_18, %specific_fn.loc13
-// CHECK:STDOUT:   %.loc13_20.3: %Cpp.long.as.BitAndWith.impl.Op.type.202298.1 = specific_constant imports.%Core.Op.c8a, @Cpp.long.as.BitAndWith.impl.334(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.BitAndWith.impl.Op.a9ac84.1]
-// CHECK:STDOUT:   %Op.ref.loc13: %Cpp.long.as.BitAndWith.impl.Op.type.202298.1 = name_ref Op, %.loc13_20.3 [concrete = constants.%Cpp.long.as.BitAndWith.impl.Op.a9ac84.1]
-// CHECK:STDOUT:   %Cpp.long.as.BitAndWith.impl.Op.bound.loc13: <bound method> = bound_method %a.ref.loc13_18, %Op.ref.loc13
-// CHECK:STDOUT:   %impl.elem0.loc13_20: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc13_20.3: <bound method> = bound_method %b.ref.loc13, %impl.elem0.loc13_20
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc13_20: init %Cpp.long = call %bound_method.loc13_20.3(%b.ref.loc13)
-// CHECK:STDOUT:   %.loc13_20.4: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc13_20
-// CHECK:STDOUT:   %.loc13_20.5: %Cpp.long = converted %b.ref.loc13, %.loc13_20.4
-// CHECK:STDOUT:   %Cpp.long.as.BitAndWith.impl.Op.specific_fn.loc13: <specific function> = specific_function %Op.ref.loc13, @Cpp.long.as.BitAndWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.BitAndWith.impl.Op.specific_fn.dcd797.2]
-// CHECK:STDOUT:   %bound_method.loc13_20.4: <bound method> = bound_method %a.ref.loc13_18, %Cpp.long.as.BitAndWith.impl.Op.specific_fn.loc13
-// CHECK:STDOUT:   %impl.elem0.loc13_22: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc13_22: <bound method> = bound_method %b.ref.loc13, %impl.elem0.loc13_22
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc13_22: init %Cpp.long = call %bound_method.loc13_22(%b.ref.loc13)
-// CHECK:STDOUT:   %.loc13_22.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc13_22
-// CHECK:STDOUT:   %.loc13_22.2: %Cpp.long = converted %b.ref.loc13, %.loc13_22.1
-// CHECK:STDOUT:   %Cpp.long.as.BitAndWith.impl.Op.call.loc13: init %Cpp.long = call %bound_method.loc13_20.4(%a.ref.loc13_18, %.loc13_22.2)
-// CHECK:STDOUT:   %a.ref.loc13_25: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc13: <specific function> = specific_function %AssertSameType.ref.loc13, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc13_20.6: %Cpp.long = value_of_initializer %Cpp.long.as.BitAndWith.impl.Op.call.loc13
-// CHECK:STDOUT:   %.loc13_20.7: %Cpp.long = converted %Cpp.long.as.BitAndWith.impl.Op.call.loc13, %.loc13_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc13: init %empty_tuple.type = call %AssertSameType.specific_fn.loc13(%.loc13_20.7, %a.ref.loc13_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc14: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc14_18: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %b.ref.loc14: %i32 = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc14: %.faa = impl_witness_access constants.%BitOrWith.impl_witness.b0c, element1 [concrete = constants.%Cpp.long.as.BitOrWith.impl.Op.d9c870.2]
-// CHECK:STDOUT:   %bound_method.loc14_20.1: <bound method> = bound_method %a.ref.loc14_18, %impl.elem1.loc14
-// CHECK:STDOUT:   %ImplicitAs.facet.loc14_20.1: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc14_20.1: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc14_20.1 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc14_20.2: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc14_20.2: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc14_20.2 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %specific_fn.loc14: <specific function> = specific_function %impl.elem1.loc14, @Cpp.long.as.BitOrWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.BitOrWith.impl.Op.specific_fn.03ab4b.1]
-// CHECK:STDOUT:   %bound_method.loc14_20.2: <bound method> = bound_method %a.ref.loc14_18, %specific_fn.loc14
-// CHECK:STDOUT:   %.loc14_20.3: %Cpp.long.as.BitOrWith.impl.Op.type.dccbc7.1 = specific_constant imports.%Core.Op.788, @Cpp.long.as.BitOrWith.impl.fc3(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.BitOrWith.impl.Op.d9c870.1]
-// CHECK:STDOUT:   %Op.ref.loc14: %Cpp.long.as.BitOrWith.impl.Op.type.dccbc7.1 = name_ref Op, %.loc14_20.3 [concrete = constants.%Cpp.long.as.BitOrWith.impl.Op.d9c870.1]
-// CHECK:STDOUT:   %Cpp.long.as.BitOrWith.impl.Op.bound.loc14: <bound method> = bound_method %a.ref.loc14_18, %Op.ref.loc14
-// CHECK:STDOUT:   %impl.elem0.loc14_20: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc14_20.3: <bound method> = bound_method %b.ref.loc14, %impl.elem0.loc14_20
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc14_20: init %Cpp.long = call %bound_method.loc14_20.3(%b.ref.loc14)
-// CHECK:STDOUT:   %.loc14_20.4: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc14_20
-// CHECK:STDOUT:   %.loc14_20.5: %Cpp.long = converted %b.ref.loc14, %.loc14_20.4
-// CHECK:STDOUT:   %Cpp.long.as.BitOrWith.impl.Op.specific_fn.loc14: <specific function> = specific_function %Op.ref.loc14, @Cpp.long.as.BitOrWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.BitOrWith.impl.Op.specific_fn.03ab4b.2]
-// CHECK:STDOUT:   %bound_method.loc14_20.4: <bound method> = bound_method %a.ref.loc14_18, %Cpp.long.as.BitOrWith.impl.Op.specific_fn.loc14
-// CHECK:STDOUT:   %impl.elem0.loc14_22: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc14_22: <bound method> = bound_method %b.ref.loc14, %impl.elem0.loc14_22
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc14_22: init %Cpp.long = call %bound_method.loc14_22(%b.ref.loc14)
-// CHECK:STDOUT:   %.loc14_22.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc14_22
-// CHECK:STDOUT:   %.loc14_22.2: %Cpp.long = converted %b.ref.loc14, %.loc14_22.1
-// CHECK:STDOUT:   %Cpp.long.as.BitOrWith.impl.Op.call.loc14: init %Cpp.long = call %bound_method.loc14_20.4(%a.ref.loc14_18, %.loc14_22.2)
-// CHECK:STDOUT:   %a.ref.loc14_25: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc14: <specific function> = specific_function %AssertSameType.ref.loc14, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc14_20.6: %Cpp.long = value_of_initializer %Cpp.long.as.BitOrWith.impl.Op.call.loc14
-// CHECK:STDOUT:   %.loc14_20.7: %Cpp.long = converted %Cpp.long.as.BitOrWith.impl.Op.call.loc14, %.loc14_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc14: init %empty_tuple.type = call %AssertSameType.specific_fn.loc14(%.loc14_20.7, %a.ref.loc14_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc15: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc15_18: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %b.ref.loc15: %i32 = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc15: %.f2f = impl_witness_access constants.%BitXorWith.impl_witness.8a0, element1 [concrete = constants.%Cpp.long.as.BitXorWith.impl.Op.48a9f4.2]
-// CHECK:STDOUT:   %bound_method.loc15_20.1: <bound method> = bound_method %a.ref.loc15_18, %impl.elem1.loc15
-// CHECK:STDOUT:   %ImplicitAs.facet.loc15_20.1: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc15_20.1: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc15_20.1 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc15_20.2: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc15_20.2: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc15_20.2 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %specific_fn.loc15: <specific function> = specific_function %impl.elem1.loc15, @Cpp.long.as.BitXorWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.BitXorWith.impl.Op.specific_fn.4ec2b6.1]
-// CHECK:STDOUT:   %bound_method.loc15_20.2: <bound method> = bound_method %a.ref.loc15_18, %specific_fn.loc15
-// CHECK:STDOUT:   %.loc15_20.3: %Cpp.long.as.BitXorWith.impl.Op.type.7fe348.1 = specific_constant imports.%Core.Op.c61, @Cpp.long.as.BitXorWith.impl.732(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.BitXorWith.impl.Op.48a9f4.1]
-// CHECK:STDOUT:   %Op.ref.loc15: %Cpp.long.as.BitXorWith.impl.Op.type.7fe348.1 = name_ref Op, %.loc15_20.3 [concrete = constants.%Cpp.long.as.BitXorWith.impl.Op.48a9f4.1]
-// CHECK:STDOUT:   %Cpp.long.as.BitXorWith.impl.Op.bound.loc15: <bound method> = bound_method %a.ref.loc15_18, %Op.ref.loc15
-// CHECK:STDOUT:   %impl.elem0.loc15_20: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc15_20.3: <bound method> = bound_method %b.ref.loc15, %impl.elem0.loc15_20
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc15_20: init %Cpp.long = call %bound_method.loc15_20.3(%b.ref.loc15)
-// CHECK:STDOUT:   %.loc15_20.4: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc15_20
-// CHECK:STDOUT:   %.loc15_20.5: %Cpp.long = converted %b.ref.loc15, %.loc15_20.4
-// CHECK:STDOUT:   %Cpp.long.as.BitXorWith.impl.Op.specific_fn.loc15: <specific function> = specific_function %Op.ref.loc15, @Cpp.long.as.BitXorWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.BitXorWith.impl.Op.specific_fn.4ec2b6.2]
-// CHECK:STDOUT:   %bound_method.loc15_20.4: <bound method> = bound_method %a.ref.loc15_18, %Cpp.long.as.BitXorWith.impl.Op.specific_fn.loc15
-// CHECK:STDOUT:   %impl.elem0.loc15_22: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc15_22: <bound method> = bound_method %b.ref.loc15, %impl.elem0.loc15_22
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc15_22: init %Cpp.long = call %bound_method.loc15_22(%b.ref.loc15)
-// CHECK:STDOUT:   %.loc15_22.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc15_22
-// CHECK:STDOUT:   %.loc15_22.2: %Cpp.long = converted %b.ref.loc15, %.loc15_22.1
-// CHECK:STDOUT:   %Cpp.long.as.BitXorWith.impl.Op.call.loc15: init %Cpp.long = call %bound_method.loc15_20.4(%a.ref.loc15_18, %.loc15_22.2)
-// CHECK:STDOUT:   %a.ref.loc15_25: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc15: <specific function> = specific_function %AssertSameType.ref.loc15, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc15_20.6: %Cpp.long = value_of_initializer %Cpp.long.as.BitXorWith.impl.Op.call.loc15
-// CHECK:STDOUT:   %.loc15_20.7: %Cpp.long = converted %Cpp.long.as.BitXorWith.impl.Op.call.loc15, %.loc15_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc15: init %empty_tuple.type = call %AssertSameType.specific_fn.loc15(%.loc15_20.7, %a.ref.loc15_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc16: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc16_18: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %b.ref.loc16: %i32 = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc16: %.2be = impl_witness_access constants.%LeftShiftWith.impl_witness.982, element1 [concrete = constants.%Cpp.long.as.LeftShiftWith.impl.Op.9105a1.2]
-// CHECK:STDOUT:   %bound_method.loc16_20.1: <bound method> = bound_method %a.ref.loc16_18, %impl.elem1.loc16
-// CHECK:STDOUT:   %ImplicitAs.facet.loc16_20.1: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc16_20.1: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc16_20.1 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc16_20.2: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc16_20.2: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc16_20.2 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %specific_fn.loc16: <specific function> = specific_function %impl.elem1.loc16, @Cpp.long.as.LeftShiftWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.LeftShiftWith.impl.Op.specific_fn.1fda18.1]
-// CHECK:STDOUT:   %bound_method.loc16_20.2: <bound method> = bound_method %a.ref.loc16_18, %specific_fn.loc16
-// CHECK:STDOUT:   %.loc16_20.3: %Cpp.long.as.LeftShiftWith.impl.Op.type.1d34cb.1 = specific_constant imports.%Core.Op.2db, @Cpp.long.as.LeftShiftWith.impl.272(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.LeftShiftWith.impl.Op.9105a1.1]
-// CHECK:STDOUT:   %Op.ref.loc16: %Cpp.long.as.LeftShiftWith.impl.Op.type.1d34cb.1 = name_ref Op, %.loc16_20.3 [concrete = constants.%Cpp.long.as.LeftShiftWith.impl.Op.9105a1.1]
-// CHECK:STDOUT:   %Cpp.long.as.LeftShiftWith.impl.Op.bound.loc16: <bound method> = bound_method %a.ref.loc16_18, %Op.ref.loc16
-// CHECK:STDOUT:   %impl.elem0.loc16_20: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc16_20.3: <bound method> = bound_method %b.ref.loc16, %impl.elem0.loc16_20
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc16_20: init %Cpp.long = call %bound_method.loc16_20.3(%b.ref.loc16)
-// CHECK:STDOUT:   %.loc16_20.4: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc16_20
-// CHECK:STDOUT:   %.loc16_20.5: %Cpp.long = converted %b.ref.loc16, %.loc16_20.4
-// CHECK:STDOUT:   %Cpp.long.as.LeftShiftWith.impl.Op.specific_fn.loc16: <specific function> = specific_function %Op.ref.loc16, @Cpp.long.as.LeftShiftWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.LeftShiftWith.impl.Op.specific_fn.1fda18.2]
-// CHECK:STDOUT:   %bound_method.loc16_20.4: <bound method> = bound_method %a.ref.loc16_18, %Cpp.long.as.LeftShiftWith.impl.Op.specific_fn.loc16
-// CHECK:STDOUT:   %impl.elem0.loc16_23: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc16_23: <bound method> = bound_method %b.ref.loc16, %impl.elem0.loc16_23
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc16_23: init %Cpp.long = call %bound_method.loc16_23(%b.ref.loc16)
-// CHECK:STDOUT:   %.loc16_23.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc16_23
-// CHECK:STDOUT:   %.loc16_23.2: %Cpp.long = converted %b.ref.loc16, %.loc16_23.1
-// CHECK:STDOUT:   %Cpp.long.as.LeftShiftWith.impl.Op.call.loc16: init %Cpp.long = call %bound_method.loc16_20.4(%a.ref.loc16_18, %.loc16_23.2)
-// CHECK:STDOUT:   %a.ref.loc16_26: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc16: <specific function> = specific_function %AssertSameType.ref.loc16, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc16_20.6: %Cpp.long = value_of_initializer %Cpp.long.as.LeftShiftWith.impl.Op.call.loc16
-// CHECK:STDOUT:   %.loc16_20.7: %Cpp.long = converted %Cpp.long.as.LeftShiftWith.impl.Op.call.loc16, %.loc16_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc16: init %empty_tuple.type = call %AssertSameType.specific_fn.loc16(%.loc16_20.7, %a.ref.loc16_26)
-// CHECK:STDOUT:   %AssertSameType.ref.loc17: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc17_18: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %b.ref.loc17: %i32 = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc17: %.dac = impl_witness_access constants.%RightShiftWith.impl_witness.ccb, element1 [concrete = constants.%Cpp.long.as.RightShiftWith.impl.Op.50edfc.2]
-// CHECK:STDOUT:   %bound_method.loc17_20.1: <bound method> = bound_method %a.ref.loc17_18, %impl.elem1.loc17
-// CHECK:STDOUT:   %ImplicitAs.facet.loc17_20.1: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc17_20.1: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc17_20.1 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc17_20.2: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc17_20.2: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc17_20.2 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %specific_fn.loc17: <specific function> = specific_function %impl.elem1.loc17, @Cpp.long.as.RightShiftWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.RightShiftWith.impl.Op.specific_fn.012106.1]
-// CHECK:STDOUT:   %bound_method.loc17_20.2: <bound method> = bound_method %a.ref.loc17_18, %specific_fn.loc17
-// CHECK:STDOUT:   %.loc17_20.3: %Cpp.long.as.RightShiftWith.impl.Op.type.e35e06.1 = specific_constant imports.%Core.Op.330, @Cpp.long.as.RightShiftWith.impl.3d6(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.RightShiftWith.impl.Op.50edfc.1]
-// CHECK:STDOUT:   %Op.ref.loc17: %Cpp.long.as.RightShiftWith.impl.Op.type.e35e06.1 = name_ref Op, %.loc17_20.3 [concrete = constants.%Cpp.long.as.RightShiftWith.impl.Op.50edfc.1]
-// CHECK:STDOUT:   %Cpp.long.as.RightShiftWith.impl.Op.bound.loc17: <bound method> = bound_method %a.ref.loc17_18, %Op.ref.loc17
-// CHECK:STDOUT:   %impl.elem0.loc17_20: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc17_20.3: <bound method> = bound_method %b.ref.loc17, %impl.elem0.loc17_20
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc17_20: init %Cpp.long = call %bound_method.loc17_20.3(%b.ref.loc17)
-// CHECK:STDOUT:   %.loc17_20.4: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc17_20
-// CHECK:STDOUT:   %.loc17_20.5: %Cpp.long = converted %b.ref.loc17, %.loc17_20.4
-// CHECK:STDOUT:   %Cpp.long.as.RightShiftWith.impl.Op.specific_fn.loc17: <specific function> = specific_function %Op.ref.loc17, @Cpp.long.as.RightShiftWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.RightShiftWith.impl.Op.specific_fn.012106.2]
-// CHECK:STDOUT:   %bound_method.loc17_20.4: <bound method> = bound_method %a.ref.loc17_18, %Cpp.long.as.RightShiftWith.impl.Op.specific_fn.loc17
-// CHECK:STDOUT:   %impl.elem0.loc17_23: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc17_23: <bound method> = bound_method %b.ref.loc17, %impl.elem0.loc17_23
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc17_23: init %Cpp.long = call %bound_method.loc17_23(%b.ref.loc17)
-// CHECK:STDOUT:   %.loc17_23.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc17_23
-// CHECK:STDOUT:   %.loc17_23.2: %Cpp.long = converted %b.ref.loc17, %.loc17_23.1
-// CHECK:STDOUT:   %Cpp.long.as.RightShiftWith.impl.Op.call.loc17: init %Cpp.long = call %bound_method.loc17_20.4(%a.ref.loc17_18, %.loc17_23.2)
-// CHECK:STDOUT:   %a.ref.loc17_26: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc17: <specific function> = specific_function %AssertSameType.ref.loc17, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc17_20.6: %Cpp.long = value_of_initializer %Cpp.long.as.RightShiftWith.impl.Op.call.loc17
-// CHECK:STDOUT:   %.loc17_20.7: %Cpp.long = converted %Cpp.long.as.RightShiftWith.impl.Op.call.loc17, %.loc17_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc17: init %empty_tuple.type = call %AssertSameType.specific_fn.loc17(%.loc17_20.7, %a.ref.loc17_26)
-// CHECK:STDOUT:   %AssertSameType.ref.loc19: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc19_18: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %int_1.loc19: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %impl.elem1.loc19: %.9d7 = impl_witness_access constants.%BitAndWith.impl_witness.0fc, element1 [concrete = constants.%Cpp.long.as.BitAndWith.impl.Op.98f052.2]
-// CHECK:STDOUT:   %bound_method.loc19_20.1: <bound method> = bound_method %a.ref.loc19_18, %impl.elem1.loc19
-// CHECK:STDOUT:   %ImplicitAs.facet.loc19_20.1: %ImplicitAs.type.819 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.2ce) [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %.loc19_20.1: %ImplicitAs.type.819 = converted Core.IntLiteral, %ImplicitAs.facet.loc19_20.1 [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc19_20.2: %ImplicitAs.type.819 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.2ce) [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %.loc19_20.2: %ImplicitAs.type.819 = converted Core.IntLiteral, %ImplicitAs.facet.loc19_20.2 [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %specific_fn.loc19: <specific function> = specific_function %impl.elem1.loc19, @Cpp.long.as.BitAndWith.impl.Op.1(constants.%ImplicitAs.facet.eed) [concrete = constants.%Cpp.long.as.BitAndWith.impl.Op.specific_fn.af17b5.1]
-// CHECK:STDOUT:   %bound_method.loc19_20.2: <bound method> = bound_method %a.ref.loc19_18, %specific_fn.loc19
-// CHECK:STDOUT:   %.loc19_20.3: %Cpp.long.as.BitAndWith.impl.Op.type.ae3ddd.1 = specific_constant imports.%Core.Op.c8a, @Cpp.long.as.BitAndWith.impl.334(constants.%ImplicitAs.facet.eed) [concrete = constants.%Cpp.long.as.BitAndWith.impl.Op.98f052.1]
-// CHECK:STDOUT:   %Op.ref.loc19: %Cpp.long.as.BitAndWith.impl.Op.type.ae3ddd.1 = name_ref Op, %.loc19_20.3 [concrete = constants.%Cpp.long.as.BitAndWith.impl.Op.98f052.1]
-// CHECK:STDOUT:   %Cpp.long.as.BitAndWith.impl.Op.bound.loc19: <bound method> = bound_method %a.ref.loc19_18, %Op.ref.loc19
-// CHECK:STDOUT:   %impl.elem0.loc19_20: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %bound_method.loc19_20.3: <bound method> = bound_method %int_1.loc19, %impl.elem0.loc19_20 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19_20: init %Cpp.long = call %bound_method.loc19_20.3(%int_1.loc19) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc19_20.4: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19_20 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc19_20.5: %Cpp.long = converted %int_1.loc19, %.loc19_20.4 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %Cpp.long.as.BitAndWith.impl.Op.specific_fn.loc19: <specific function> = specific_function %Op.ref.loc19, @Cpp.long.as.BitAndWith.impl.Op.2(constants.%ImplicitAs.facet.eed) [concrete = constants.%Cpp.long.as.BitAndWith.impl.Op.specific_fn.af17b5.2]
-// CHECK:STDOUT:   %bound_method.loc19_20.4: <bound method> = bound_method %a.ref.loc19_18, %Cpp.long.as.BitAndWith.impl.Op.specific_fn.loc19
-// CHECK:STDOUT:   %impl.elem0.loc19_22: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %bound_method.loc19_22: <bound method> = bound_method %int_1.loc19, %impl.elem0.loc19_22 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19_22: init %Cpp.long = call %bound_method.loc19_22(%int_1.loc19) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc19_22.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19_22 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc19_22.2: %Cpp.long = converted %int_1.loc19, %.loc19_22.1 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %Cpp.long.as.BitAndWith.impl.Op.call.loc19: init %Cpp.long = call %bound_method.loc19_20.4(%a.ref.loc19_18, %.loc19_22.2)
-// CHECK:STDOUT:   %a.ref.loc19_25: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc19: <specific function> = specific_function %AssertSameType.ref.loc19, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc19_20.6: %Cpp.long = value_of_initializer %Cpp.long.as.BitAndWith.impl.Op.call.loc19
-// CHECK:STDOUT:   %.loc19_20.7: %Cpp.long = converted %Cpp.long.as.BitAndWith.impl.Op.call.loc19, %.loc19_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc19: init %empty_tuple.type = call %AssertSameType.specific_fn.loc19(%.loc19_20.7, %a.ref.loc19_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc20: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc20_18: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %int_1.loc20: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %impl.elem1.loc20: %.a50 = impl_witness_access constants.%BitOrWith.impl_witness.39f, element1 [concrete = constants.%Cpp.long.as.BitOrWith.impl.Op.664d1e.2]
-// CHECK:STDOUT:   %bound_method.loc20_20.1: <bound method> = bound_method %a.ref.loc20_18, %impl.elem1.loc20
-// CHECK:STDOUT:   %ImplicitAs.facet.loc20_20.1: %ImplicitAs.type.819 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.2ce) [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %.loc20_20.1: %ImplicitAs.type.819 = converted Core.IntLiteral, %ImplicitAs.facet.loc20_20.1 [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc20_20.2: %ImplicitAs.type.819 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.2ce) [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %.loc20_20.2: %ImplicitAs.type.819 = converted Core.IntLiteral, %ImplicitAs.facet.loc20_20.2 [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %specific_fn.loc20: <specific function> = specific_function %impl.elem1.loc20, @Cpp.long.as.BitOrWith.impl.Op.1(constants.%ImplicitAs.facet.eed) [concrete = constants.%Cpp.long.as.BitOrWith.impl.Op.specific_fn.be7132.1]
-// CHECK:STDOUT:   %bound_method.loc20_20.2: <bound method> = bound_method %a.ref.loc20_18, %specific_fn.loc20
-// CHECK:STDOUT:   %.loc20_20.3: %Cpp.long.as.BitOrWith.impl.Op.type.331453.1 = specific_constant imports.%Core.Op.788, @Cpp.long.as.BitOrWith.impl.fc3(constants.%ImplicitAs.facet.eed) [concrete = constants.%Cpp.long.as.BitOrWith.impl.Op.664d1e.1]
-// CHECK:STDOUT:   %Op.ref.loc20: %Cpp.long.as.BitOrWith.impl.Op.type.331453.1 = name_ref Op, %.loc20_20.3 [concrete = constants.%Cpp.long.as.BitOrWith.impl.Op.664d1e.1]
-// CHECK:STDOUT:   %Cpp.long.as.BitOrWith.impl.Op.bound.loc20: <bound method> = bound_method %a.ref.loc20_18, %Op.ref.loc20
-// CHECK:STDOUT:   %impl.elem0.loc20_20: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %bound_method.loc20_20.3: <bound method> = bound_method %int_1.loc20, %impl.elem0.loc20_20 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20_20: init %Cpp.long = call %bound_method.loc20_20.3(%int_1.loc20) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc20_20.4: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20_20 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc20_20.5: %Cpp.long = converted %int_1.loc20, %.loc20_20.4 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %Cpp.long.as.BitOrWith.impl.Op.specific_fn.loc20: <specific function> = specific_function %Op.ref.loc20, @Cpp.long.as.BitOrWith.impl.Op.2(constants.%ImplicitAs.facet.eed) [concrete = constants.%Cpp.long.as.BitOrWith.impl.Op.specific_fn.be7132.2]
-// CHECK:STDOUT:   %bound_method.loc20_20.4: <bound method> = bound_method %a.ref.loc20_18, %Cpp.long.as.BitOrWith.impl.Op.specific_fn.loc20
-// CHECK:STDOUT:   %impl.elem0.loc20_22: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %bound_method.loc20_22: <bound method> = bound_method %int_1.loc20, %impl.elem0.loc20_22 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20_22: init %Cpp.long = call %bound_method.loc20_22(%int_1.loc20) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc20_22.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20_22 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc20_22.2: %Cpp.long = converted %int_1.loc20, %.loc20_22.1 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %Cpp.long.as.BitOrWith.impl.Op.call.loc20: init %Cpp.long = call %bound_method.loc20_20.4(%a.ref.loc20_18, %.loc20_22.2)
-// CHECK:STDOUT:   %a.ref.loc20_25: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc20: <specific function> = specific_function %AssertSameType.ref.loc20, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc20_20.6: %Cpp.long = value_of_initializer %Cpp.long.as.BitOrWith.impl.Op.call.loc20
-// CHECK:STDOUT:   %.loc20_20.7: %Cpp.long = converted %Cpp.long.as.BitOrWith.impl.Op.call.loc20, %.loc20_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc20: init %empty_tuple.type = call %AssertSameType.specific_fn.loc20(%.loc20_20.7, %a.ref.loc20_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc21: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc21_18: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %int_1.loc21: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %impl.elem1.loc21: %.8e7 = impl_witness_access constants.%BitXorWith.impl_witness.001, element1 [concrete = constants.%Cpp.long.as.BitXorWith.impl.Op.5b3046.2]
-// CHECK:STDOUT:   %bound_method.loc21_20.1: <bound method> = bound_method %a.ref.loc21_18, %impl.elem1.loc21
-// CHECK:STDOUT:   %ImplicitAs.facet.loc21_20.1: %ImplicitAs.type.819 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.2ce) [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %.loc21_20.1: %ImplicitAs.type.819 = converted Core.IntLiteral, %ImplicitAs.facet.loc21_20.1 [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc21_20.2: %ImplicitAs.type.819 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.2ce) [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %.loc21_20.2: %ImplicitAs.type.819 = converted Core.IntLiteral, %ImplicitAs.facet.loc21_20.2 [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %specific_fn.loc21: <specific function> = specific_function %impl.elem1.loc21, @Cpp.long.as.BitXorWith.impl.Op.1(constants.%ImplicitAs.facet.eed) [concrete = constants.%Cpp.long.as.BitXorWith.impl.Op.specific_fn.f1c9e6.1]
-// CHECK:STDOUT:   %bound_method.loc21_20.2: <bound method> = bound_method %a.ref.loc21_18, %specific_fn.loc21
-// CHECK:STDOUT:   %.loc21_20.3: %Cpp.long.as.BitXorWith.impl.Op.type.97a9a2.1 = specific_constant imports.%Core.Op.c61, @Cpp.long.as.BitXorWith.impl.732(constants.%ImplicitAs.facet.eed) [concrete = constants.%Cpp.long.as.BitXorWith.impl.Op.5b3046.1]
-// CHECK:STDOUT:   %Op.ref.loc21: %Cpp.long.as.BitXorWith.impl.Op.type.97a9a2.1 = name_ref Op, %.loc21_20.3 [concrete = constants.%Cpp.long.as.BitXorWith.impl.Op.5b3046.1]
-// CHECK:STDOUT:   %Cpp.long.as.BitXorWith.impl.Op.bound.loc21: <bound method> = bound_method %a.ref.loc21_18, %Op.ref.loc21
-// CHECK:STDOUT:   %impl.elem0.loc21_20: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %bound_method.loc21_20.3: <bound method> = bound_method %int_1.loc21, %impl.elem0.loc21_20 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21_20: init %Cpp.long = call %bound_method.loc21_20.3(%int_1.loc21) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc21_20.4: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21_20 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc21_20.5: %Cpp.long = converted %int_1.loc21, %.loc21_20.4 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %Cpp.long.as.BitXorWith.impl.Op.specific_fn.loc21: <specific function> = specific_function %Op.ref.loc21, @Cpp.long.as.BitXorWith.impl.Op.2(constants.%ImplicitAs.facet.eed) [concrete = constants.%Cpp.long.as.BitXorWith.impl.Op.specific_fn.f1c9e6.2]
-// CHECK:STDOUT:   %bound_method.loc21_20.4: <bound method> = bound_method %a.ref.loc21_18, %Cpp.long.as.BitXorWith.impl.Op.specific_fn.loc21
-// CHECK:STDOUT:   %impl.elem0.loc21_22: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %bound_method.loc21_22: <bound method> = bound_method %int_1.loc21, %impl.elem0.loc21_22 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21_22: init %Cpp.long = call %bound_method.loc21_22(%int_1.loc21) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc21_22.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21_22 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc21_22.2: %Cpp.long = converted %int_1.loc21, %.loc21_22.1 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %Cpp.long.as.BitXorWith.impl.Op.call.loc21: init %Cpp.long = call %bound_method.loc21_20.4(%a.ref.loc21_18, %.loc21_22.2)
-// CHECK:STDOUT:   %a.ref.loc21_25: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc21: <specific function> = specific_function %AssertSameType.ref.loc21, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc21_20.6: %Cpp.long = value_of_initializer %Cpp.long.as.BitXorWith.impl.Op.call.loc21
-// CHECK:STDOUT:   %.loc21_20.7: %Cpp.long = converted %Cpp.long.as.BitXorWith.impl.Op.call.loc21, %.loc21_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc21: init %empty_tuple.type = call %AssertSameType.specific_fn.loc21(%.loc21_20.7, %a.ref.loc21_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc22: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc22_18: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %int_1.loc22: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %impl.elem1.loc22: %.0a1 = impl_witness_access constants.%LeftShiftWith.impl_witness.a1c, element1 [concrete = constants.%Cpp.long.as.LeftShiftWith.impl.Op.f145d8.2]
-// CHECK:STDOUT:   %bound_method.loc22_20.1: <bound method> = bound_method %a.ref.loc22_18, %impl.elem1.loc22
-// CHECK:STDOUT:   %ImplicitAs.facet.loc22_20.1: %ImplicitAs.type.819 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.2ce) [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %.loc22_20.1: %ImplicitAs.type.819 = converted Core.IntLiteral, %ImplicitAs.facet.loc22_20.1 [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc22_20.2: %ImplicitAs.type.819 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.2ce) [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %.loc22_20.2: %ImplicitAs.type.819 = converted Core.IntLiteral, %ImplicitAs.facet.loc22_20.2 [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %specific_fn.loc22: <specific function> = specific_function %impl.elem1.loc22, @Cpp.long.as.LeftShiftWith.impl.Op.1(constants.%ImplicitAs.facet.eed) [concrete = constants.%Cpp.long.as.LeftShiftWith.impl.Op.specific_fn.abc44e.1]
-// CHECK:STDOUT:   %bound_method.loc22_20.2: <bound method> = bound_method %a.ref.loc22_18, %specific_fn.loc22
-// CHECK:STDOUT:   %.loc22_20.3: %Cpp.long.as.LeftShiftWith.impl.Op.type.d93838.1 = specific_constant imports.%Core.Op.2db, @Cpp.long.as.LeftShiftWith.impl.272(constants.%ImplicitAs.facet.eed) [concrete = constants.%Cpp.long.as.LeftShiftWith.impl.Op.f145d8.1]
-// CHECK:STDOUT:   %Op.ref.loc22: %Cpp.long.as.LeftShiftWith.impl.Op.type.d93838.1 = name_ref Op, %.loc22_20.3 [concrete = constants.%Cpp.long.as.LeftShiftWith.impl.Op.f145d8.1]
-// CHECK:STDOUT:   %Cpp.long.as.LeftShiftWith.impl.Op.bound.loc22: <bound method> = bound_method %a.ref.loc22_18, %Op.ref.loc22
-// CHECK:STDOUT:   %impl.elem0.loc22_20: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %bound_method.loc22_20.3: <bound method> = bound_method %int_1.loc22, %impl.elem0.loc22_20 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22_20: init %Cpp.long = call %bound_method.loc22_20.3(%int_1.loc22) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc22_20.4: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22_20 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc22_20.5: %Cpp.long = converted %int_1.loc22, %.loc22_20.4 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %Cpp.long.as.LeftShiftWith.impl.Op.specific_fn.loc22: <specific function> = specific_function %Op.ref.loc22, @Cpp.long.as.LeftShiftWith.impl.Op.2(constants.%ImplicitAs.facet.eed) [concrete = constants.%Cpp.long.as.LeftShiftWith.impl.Op.specific_fn.abc44e.2]
-// CHECK:STDOUT:   %bound_method.loc22_20.4: <bound method> = bound_method %a.ref.loc22_18, %Cpp.long.as.LeftShiftWith.impl.Op.specific_fn.loc22
-// CHECK:STDOUT:   %impl.elem0.loc22_23: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %bound_method.loc22_23: <bound method> = bound_method %int_1.loc22, %impl.elem0.loc22_23 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22_23: init %Cpp.long = call %bound_method.loc22_23(%int_1.loc22) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc22_23.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22_23 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc22_23.2: %Cpp.long = converted %int_1.loc22, %.loc22_23.1 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %Cpp.long.as.LeftShiftWith.impl.Op.call.loc22: init %Cpp.long = call %bound_method.loc22_20.4(%a.ref.loc22_18, %.loc22_23.2)
-// CHECK:STDOUT:   %a.ref.loc22_26: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc22: <specific function> = specific_function %AssertSameType.ref.loc22, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc22_20.6: %Cpp.long = value_of_initializer %Cpp.long.as.LeftShiftWith.impl.Op.call.loc22
-// CHECK:STDOUT:   %.loc22_20.7: %Cpp.long = converted %Cpp.long.as.LeftShiftWith.impl.Op.call.loc22, %.loc22_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc22: init %empty_tuple.type = call %AssertSameType.specific_fn.loc22(%.loc22_20.7, %a.ref.loc22_26)
-// CHECK:STDOUT:   %AssertSameType.ref.loc23: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc23_18: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %int_1.loc23: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %impl.elem1.loc23: %.fab = impl_witness_access constants.%RightShiftWith.impl_witness.5fe, element1 [concrete = constants.%Cpp.long.as.RightShiftWith.impl.Op.249bc3.2]
-// CHECK:STDOUT:   %bound_method.loc23_20.1: <bound method> = bound_method %a.ref.loc23_18, %impl.elem1.loc23
-// CHECK:STDOUT:   %ImplicitAs.facet.loc23_20.1: %ImplicitAs.type.819 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.2ce) [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %.loc23_20.1: %ImplicitAs.type.819 = converted Core.IntLiteral, %ImplicitAs.facet.loc23_20.1 [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc23_20.2: %ImplicitAs.type.819 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.2ce) [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %.loc23_20.2: %ImplicitAs.type.819 = converted Core.IntLiteral, %ImplicitAs.facet.loc23_20.2 [concrete = constants.%ImplicitAs.facet.eed]
-// CHECK:STDOUT:   %specific_fn.loc23: <specific function> = specific_function %impl.elem1.loc23, @Cpp.long.as.RightShiftWith.impl.Op.1(constants.%ImplicitAs.facet.eed) [concrete = constants.%Cpp.long.as.RightShiftWith.impl.Op.specific_fn.c6040e.1]
-// CHECK:STDOUT:   %bound_method.loc23_20.2: <bound method> = bound_method %a.ref.loc23_18, %specific_fn.loc23
-// CHECK:STDOUT:   %.loc23_20.3: %Cpp.long.as.RightShiftWith.impl.Op.type.a6dc1c.1 = specific_constant imports.%Core.Op.330, @Cpp.long.as.RightShiftWith.impl.3d6(constants.%ImplicitAs.facet.eed) [concrete = constants.%Cpp.long.as.RightShiftWith.impl.Op.249bc3.1]
-// CHECK:STDOUT:   %Op.ref.loc23: %Cpp.long.as.RightShiftWith.impl.Op.type.a6dc1c.1 = name_ref Op, %.loc23_20.3 [concrete = constants.%Cpp.long.as.RightShiftWith.impl.Op.249bc3.1]
-// CHECK:STDOUT:   %Cpp.long.as.RightShiftWith.impl.Op.bound.loc23: <bound method> = bound_method %a.ref.loc23_18, %Op.ref.loc23
-// CHECK:STDOUT:   %impl.elem0.loc23_20: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %bound_method.loc23_20.3: <bound method> = bound_method %int_1.loc23, %impl.elem0.loc23_20 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc23_20: init %Cpp.long = call %bound_method.loc23_20.3(%int_1.loc23) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc23_20.4: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc23_20 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc23_20.5: %Cpp.long = converted %int_1.loc23, %.loc23_20.4 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %Cpp.long.as.RightShiftWith.impl.Op.specific_fn.loc23: <specific function> = specific_function %Op.ref.loc23, @Cpp.long.as.RightShiftWith.impl.Op.2(constants.%ImplicitAs.facet.eed) [concrete = constants.%Cpp.long.as.RightShiftWith.impl.Op.specific_fn.c6040e.2]
-// CHECK:STDOUT:   %bound_method.loc23_20.4: <bound method> = bound_method %a.ref.loc23_18, %Cpp.long.as.RightShiftWith.impl.Op.specific_fn.loc23
-// CHECK:STDOUT:   %impl.elem0.loc23_23: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %bound_method.loc23_23: <bound method> = bound_method %int_1.loc23, %impl.elem0.loc23_23 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc23_23: init %Cpp.long = call %bound_method.loc23_23(%int_1.loc23) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc23_23.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc23_23 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc23_23.2: %Cpp.long = converted %int_1.loc23, %.loc23_23.1 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %Cpp.long.as.RightShiftWith.impl.Op.call.loc23: init %Cpp.long = call %bound_method.loc23_20.4(%a.ref.loc23_18, %.loc23_23.2)
-// CHECK:STDOUT:   %a.ref.loc23_26: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc23: <specific function> = specific_function %AssertSameType.ref.loc23, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc23_20.6: %Cpp.long = value_of_initializer %Cpp.long.as.RightShiftWith.impl.Op.call.loc23
-// CHECK:STDOUT:   %.loc23_20.7: %Cpp.long = converted %Cpp.long.as.RightShiftWith.impl.Op.call.loc23, %.loc23_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc23: init %empty_tuple.type = call %AssertSameType.specific_fn.loc23(%.loc23_20.7, %a.ref.loc23_26)
-// CHECK:STDOUT:   %AssertSameType.ref.loc25: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc25_18: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %b.ref.loc25: %i32 = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc25: %.bdd = impl_witness_access constants.%BitAndWith.impl_witness.fe3, element1 [concrete = constants.%Cpp.long.as.BitAndWith.impl.Op.a9ac84.2]
-// CHECK:STDOUT:   %bound_method.loc25_20.1: <bound method> = bound_method %a.ref.loc25_18, %impl.elem1.loc25
-// CHECK:STDOUT:   %ImplicitAs.facet.loc25_20.1: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc25_20.1: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc25_20.1 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc25_20.2: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc25_20.2: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc25_20.2 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %specific_fn.loc25: <specific function> = specific_function %impl.elem1.loc25, @Cpp.long.as.BitAndWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.BitAndWith.impl.Op.specific_fn.dcd797.1]
-// CHECK:STDOUT:   %bound_method.loc25_20.2: <bound method> = bound_method %a.ref.loc25_18, %specific_fn.loc25
-// CHECK:STDOUT:   %.loc25_20.3: %Cpp.long.as.BitAndWith.impl.Op.type.202298.1 = specific_constant imports.%Core.Op.c8a, @Cpp.long.as.BitAndWith.impl.334(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.BitAndWith.impl.Op.a9ac84.1]
-// CHECK:STDOUT:   %Op.ref.loc25: %Cpp.long.as.BitAndWith.impl.Op.type.202298.1 = name_ref Op, %.loc25_20.3 [concrete = constants.%Cpp.long.as.BitAndWith.impl.Op.a9ac84.1]
-// CHECK:STDOUT:   %Cpp.long.as.BitAndWith.impl.Op.bound.loc25: <bound method> = bound_method %a.ref.loc25_18, %Op.ref.loc25
-// CHECK:STDOUT:   %impl.elem0.loc25_20: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc25_20.3: <bound method> = bound_method %b.ref.loc25, %impl.elem0.loc25_20
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc25_20: init %Cpp.long = call %bound_method.loc25_20.3(%b.ref.loc25)
-// CHECK:STDOUT:   %.loc25_20.4: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc25_20
-// CHECK:STDOUT:   %.loc25_20.5: %Cpp.long = converted %b.ref.loc25, %.loc25_20.4
-// CHECK:STDOUT:   %Cpp.long.as.BitAndWith.impl.Op.specific_fn.loc25: <specific function> = specific_function %Op.ref.loc25, @Cpp.long.as.BitAndWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.BitAndWith.impl.Op.specific_fn.dcd797.2]
-// CHECK:STDOUT:   %bound_method.loc25_20.4: <bound method> = bound_method %a.ref.loc25_18, %Cpp.long.as.BitAndWith.impl.Op.specific_fn.loc25
-// CHECK:STDOUT:   %impl.elem0.loc25_22: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc25_22: <bound method> = bound_method %b.ref.loc25, %impl.elem0.loc25_22
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc25_22: init %Cpp.long = call %bound_method.loc25_22(%b.ref.loc25)
-// CHECK:STDOUT:   %.loc25_22.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc25_22
-// CHECK:STDOUT:   %.loc25_22.2: %Cpp.long = converted %b.ref.loc25, %.loc25_22.1
-// CHECK:STDOUT:   %Cpp.long.as.BitAndWith.impl.Op.call.loc25: init %Cpp.long = call %bound_method.loc25_20.4(%a.ref.loc25_18, %.loc25_22.2)
-// CHECK:STDOUT:   %a.ref.loc25_25: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc25: <specific function> = specific_function %AssertSameType.ref.loc25, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc25_20.6: %Cpp.long = value_of_initializer %Cpp.long.as.BitAndWith.impl.Op.call.loc25
-// CHECK:STDOUT:   %.loc25_20.7: %Cpp.long = converted %Cpp.long.as.BitAndWith.impl.Op.call.loc25, %.loc25_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc25: init %empty_tuple.type = call %AssertSameType.specific_fn.loc25(%.loc25_20.7, %a.ref.loc25_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc26: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc26_18: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %b.ref.loc26: %i32 = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc26: %.faa = impl_witness_access constants.%BitOrWith.impl_witness.b0c, element1 [concrete = constants.%Cpp.long.as.BitOrWith.impl.Op.d9c870.2]
-// CHECK:STDOUT:   %bound_method.loc26_20.1: <bound method> = bound_method %a.ref.loc26_18, %impl.elem1.loc26
-// CHECK:STDOUT:   %ImplicitAs.facet.loc26_20.1: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc26_20.1: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc26_20.1 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc26_20.2: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc26_20.2: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc26_20.2 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %specific_fn.loc26: <specific function> = specific_function %impl.elem1.loc26, @Cpp.long.as.BitOrWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.BitOrWith.impl.Op.specific_fn.03ab4b.1]
-// CHECK:STDOUT:   %bound_method.loc26_20.2: <bound method> = bound_method %a.ref.loc26_18, %specific_fn.loc26
-// CHECK:STDOUT:   %.loc26_20.3: %Cpp.long.as.BitOrWith.impl.Op.type.dccbc7.1 = specific_constant imports.%Core.Op.788, @Cpp.long.as.BitOrWith.impl.fc3(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.BitOrWith.impl.Op.d9c870.1]
-// CHECK:STDOUT:   %Op.ref.loc26: %Cpp.long.as.BitOrWith.impl.Op.type.dccbc7.1 = name_ref Op, %.loc26_20.3 [concrete = constants.%Cpp.long.as.BitOrWith.impl.Op.d9c870.1]
-// CHECK:STDOUT:   %Cpp.long.as.BitOrWith.impl.Op.bound.loc26: <bound method> = bound_method %a.ref.loc26_18, %Op.ref.loc26
-// CHECK:STDOUT:   %impl.elem0.loc26_20: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc26_20.3: <bound method> = bound_method %b.ref.loc26, %impl.elem0.loc26_20
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc26_20: init %Cpp.long = call %bound_method.loc26_20.3(%b.ref.loc26)
-// CHECK:STDOUT:   %.loc26_20.4: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc26_20
-// CHECK:STDOUT:   %.loc26_20.5: %Cpp.long = converted %b.ref.loc26, %.loc26_20.4
-// CHECK:STDOUT:   %Cpp.long.as.BitOrWith.impl.Op.specific_fn.loc26: <specific function> = specific_function %Op.ref.loc26, @Cpp.long.as.BitOrWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.BitOrWith.impl.Op.specific_fn.03ab4b.2]
-// CHECK:STDOUT:   %bound_method.loc26_20.4: <bound method> = bound_method %a.ref.loc26_18, %Cpp.long.as.BitOrWith.impl.Op.specific_fn.loc26
-// CHECK:STDOUT:   %impl.elem0.loc26_22: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc26_22: <bound method> = bound_method %b.ref.loc26, %impl.elem0.loc26_22
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc26_22: init %Cpp.long = call %bound_method.loc26_22(%b.ref.loc26)
-// CHECK:STDOUT:   %.loc26_22.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc26_22
-// CHECK:STDOUT:   %.loc26_22.2: %Cpp.long = converted %b.ref.loc26, %.loc26_22.1
-// CHECK:STDOUT:   %Cpp.long.as.BitOrWith.impl.Op.call.loc26: init %Cpp.long = call %bound_method.loc26_20.4(%a.ref.loc26_18, %.loc26_22.2)
-// CHECK:STDOUT:   %a.ref.loc26_25: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc26: <specific function> = specific_function %AssertSameType.ref.loc26, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc26_20.6: %Cpp.long = value_of_initializer %Cpp.long.as.BitOrWith.impl.Op.call.loc26
-// CHECK:STDOUT:   %.loc26_20.7: %Cpp.long = converted %Cpp.long.as.BitOrWith.impl.Op.call.loc26, %.loc26_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc26: init %empty_tuple.type = call %AssertSameType.specific_fn.loc26(%.loc26_20.7, %a.ref.loc26_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc27: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc27_18: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %b.ref.loc27: %i32 = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc27: %.f2f = impl_witness_access constants.%BitXorWith.impl_witness.8a0, element1 [concrete = constants.%Cpp.long.as.BitXorWith.impl.Op.48a9f4.2]
-// CHECK:STDOUT:   %bound_method.loc27_20.1: <bound method> = bound_method %a.ref.loc27_18, %impl.elem1.loc27
-// CHECK:STDOUT:   %ImplicitAs.facet.loc27_20.1: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc27_20.1: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc27_20.1 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc27_20.2: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc27_20.2: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc27_20.2 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %specific_fn.loc27: <specific function> = specific_function %impl.elem1.loc27, @Cpp.long.as.BitXorWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.BitXorWith.impl.Op.specific_fn.4ec2b6.1]
-// CHECK:STDOUT:   %bound_method.loc27_20.2: <bound method> = bound_method %a.ref.loc27_18, %specific_fn.loc27
-// CHECK:STDOUT:   %.loc27_20.3: %Cpp.long.as.BitXorWith.impl.Op.type.7fe348.1 = specific_constant imports.%Core.Op.c61, @Cpp.long.as.BitXorWith.impl.732(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.BitXorWith.impl.Op.48a9f4.1]
-// CHECK:STDOUT:   %Op.ref.loc27: %Cpp.long.as.BitXorWith.impl.Op.type.7fe348.1 = name_ref Op, %.loc27_20.3 [concrete = constants.%Cpp.long.as.BitXorWith.impl.Op.48a9f4.1]
-// CHECK:STDOUT:   %Cpp.long.as.BitXorWith.impl.Op.bound.loc27: <bound method> = bound_method %a.ref.loc27_18, %Op.ref.loc27
-// CHECK:STDOUT:   %impl.elem0.loc27_20: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc27_20.3: <bound method> = bound_method %b.ref.loc27, %impl.elem0.loc27_20
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc27_20: init %Cpp.long = call %bound_method.loc27_20.3(%b.ref.loc27)
-// CHECK:STDOUT:   %.loc27_20.4: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc27_20
-// CHECK:STDOUT:   %.loc27_20.5: %Cpp.long = converted %b.ref.loc27, %.loc27_20.4
-// CHECK:STDOUT:   %Cpp.long.as.BitXorWith.impl.Op.specific_fn.loc27: <specific function> = specific_function %Op.ref.loc27, @Cpp.long.as.BitXorWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.BitXorWith.impl.Op.specific_fn.4ec2b6.2]
-// CHECK:STDOUT:   %bound_method.loc27_20.4: <bound method> = bound_method %a.ref.loc27_18, %Cpp.long.as.BitXorWith.impl.Op.specific_fn.loc27
-// CHECK:STDOUT:   %impl.elem0.loc27_22: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc27_22: <bound method> = bound_method %b.ref.loc27, %impl.elem0.loc27_22
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc27_22: init %Cpp.long = call %bound_method.loc27_22(%b.ref.loc27)
-// CHECK:STDOUT:   %.loc27_22.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc27_22
-// CHECK:STDOUT:   %.loc27_22.2: %Cpp.long = converted %b.ref.loc27, %.loc27_22.1
-// CHECK:STDOUT:   %Cpp.long.as.BitXorWith.impl.Op.call.loc27: init %Cpp.long = call %bound_method.loc27_20.4(%a.ref.loc27_18, %.loc27_22.2)
-// CHECK:STDOUT:   %a.ref.loc27_25: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc27: <specific function> = specific_function %AssertSameType.ref.loc27, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc27_20.6: %Cpp.long = value_of_initializer %Cpp.long.as.BitXorWith.impl.Op.call.loc27
-// CHECK:STDOUT:   %.loc27_20.7: %Cpp.long = converted %Cpp.long.as.BitXorWith.impl.Op.call.loc27, %.loc27_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc27: init %empty_tuple.type = call %AssertSameType.specific_fn.loc27(%.loc27_20.7, %a.ref.loc27_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc28: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc28_18: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %b.ref.loc28: %i32 = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc28: %.2be = impl_witness_access constants.%LeftShiftWith.impl_witness.982, element1 [concrete = constants.%Cpp.long.as.LeftShiftWith.impl.Op.9105a1.2]
-// CHECK:STDOUT:   %bound_method.loc28_20.1: <bound method> = bound_method %a.ref.loc28_18, %impl.elem1.loc28
-// CHECK:STDOUT:   %ImplicitAs.facet.loc28_20.1: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc28_20.1: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc28_20.1 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc28_20.2: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc28_20.2: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc28_20.2 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %specific_fn.loc28: <specific function> = specific_function %impl.elem1.loc28, @Cpp.long.as.LeftShiftWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.LeftShiftWith.impl.Op.specific_fn.1fda18.1]
-// CHECK:STDOUT:   %bound_method.loc28_20.2: <bound method> = bound_method %a.ref.loc28_18, %specific_fn.loc28
-// CHECK:STDOUT:   %.loc28_20.3: %Cpp.long.as.LeftShiftWith.impl.Op.type.1d34cb.1 = specific_constant imports.%Core.Op.2db, @Cpp.long.as.LeftShiftWith.impl.272(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.LeftShiftWith.impl.Op.9105a1.1]
-// CHECK:STDOUT:   %Op.ref.loc28: %Cpp.long.as.LeftShiftWith.impl.Op.type.1d34cb.1 = name_ref Op, %.loc28_20.3 [concrete = constants.%Cpp.long.as.LeftShiftWith.impl.Op.9105a1.1]
-// CHECK:STDOUT:   %Cpp.long.as.LeftShiftWith.impl.Op.bound.loc28: <bound method> = bound_method %a.ref.loc28_18, %Op.ref.loc28
-// CHECK:STDOUT:   %impl.elem0.loc28_20: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc28_20.3: <bound method> = bound_method %b.ref.loc28, %impl.elem0.loc28_20
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc28_20: init %Cpp.long = call %bound_method.loc28_20.3(%b.ref.loc28)
-// CHECK:STDOUT:   %.loc28_20.4: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc28_20
-// CHECK:STDOUT:   %.loc28_20.5: %Cpp.long = converted %b.ref.loc28, %.loc28_20.4
-// CHECK:STDOUT:   %Cpp.long.as.LeftShiftWith.impl.Op.specific_fn.loc28: <specific function> = specific_function %Op.ref.loc28, @Cpp.long.as.LeftShiftWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.LeftShiftWith.impl.Op.specific_fn.1fda18.2]
-// CHECK:STDOUT:   %bound_method.loc28_20.4: <bound method> = bound_method %a.ref.loc28_18, %Cpp.long.as.LeftShiftWith.impl.Op.specific_fn.loc28
-// CHECK:STDOUT:   %impl.elem0.loc28_23: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc28_23: <bound method> = bound_method %b.ref.loc28, %impl.elem0.loc28_23
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc28_23: init %Cpp.long = call %bound_method.loc28_23(%b.ref.loc28)
-// CHECK:STDOUT:   %.loc28_23.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc28_23
-// CHECK:STDOUT:   %.loc28_23.2: %Cpp.long = converted %b.ref.loc28, %.loc28_23.1
-// CHECK:STDOUT:   %Cpp.long.as.LeftShiftWith.impl.Op.call.loc28: init %Cpp.long = call %bound_method.loc28_20.4(%a.ref.loc28_18, %.loc28_23.2)
-// CHECK:STDOUT:   %a.ref.loc28_26: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc28: <specific function> = specific_function %AssertSameType.ref.loc28, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc28_20.6: %Cpp.long = value_of_initializer %Cpp.long.as.LeftShiftWith.impl.Op.call.loc28
-// CHECK:STDOUT:   %.loc28_20.7: %Cpp.long = converted %Cpp.long.as.LeftShiftWith.impl.Op.call.loc28, %.loc28_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc28: init %empty_tuple.type = call %AssertSameType.specific_fn.loc28(%.loc28_20.7, %a.ref.loc28_26)
-// CHECK:STDOUT:   %AssertSameType.ref.loc29: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc29_18: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %b.ref.loc29: %i32 = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc29: %.dac = impl_witness_access constants.%RightShiftWith.impl_witness.ccb, element1 [concrete = constants.%Cpp.long.as.RightShiftWith.impl.Op.50edfc.2]
-// CHECK:STDOUT:   %bound_method.loc29_20.1: <bound method> = bound_method %a.ref.loc29_18, %impl.elem1.loc29
-// CHECK:STDOUT:   %ImplicitAs.facet.loc29_20.1: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc29_20.1: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc29_20.1 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc29_20.2: %ImplicitAs.type.819 = facet_value constants.%i32, (constants.%ImplicitAs.impl_witness.0fc) [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %.loc29_20.2: %ImplicitAs.type.819 = converted constants.%i32, %ImplicitAs.facet.loc29_20.2 [concrete = constants.%ImplicitAs.facet.174]
-// CHECK:STDOUT:   %specific_fn.loc29: <specific function> = specific_function %impl.elem1.loc29, @Cpp.long.as.RightShiftWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.RightShiftWith.impl.Op.specific_fn.012106.1]
-// CHECK:STDOUT:   %bound_method.loc29_20.2: <bound method> = bound_method %a.ref.loc29_18, %specific_fn.loc29
-// CHECK:STDOUT:   %.loc29_20.3: %Cpp.long.as.RightShiftWith.impl.Op.type.e35e06.1 = specific_constant imports.%Core.Op.330, @Cpp.long.as.RightShiftWith.impl.3d6(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.RightShiftWith.impl.Op.50edfc.1]
-// CHECK:STDOUT:   %Op.ref.loc29: %Cpp.long.as.RightShiftWith.impl.Op.type.e35e06.1 = name_ref Op, %.loc29_20.3 [concrete = constants.%Cpp.long.as.RightShiftWith.impl.Op.50edfc.1]
-// CHECK:STDOUT:   %Cpp.long.as.RightShiftWith.impl.Op.bound.loc29: <bound method> = bound_method %a.ref.loc29_18, %Op.ref.loc29
-// CHECK:STDOUT:   %impl.elem0.loc29_20: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc29_20.3: <bound method> = bound_method %b.ref.loc29, %impl.elem0.loc29_20
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc29_20: init %Cpp.long = call %bound_method.loc29_20.3(%b.ref.loc29)
-// CHECK:STDOUT:   %.loc29_20.4: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc29_20
-// CHECK:STDOUT:   %.loc29_20.5: %Cpp.long = converted %b.ref.loc29, %.loc29_20.4
-// CHECK:STDOUT:   %Cpp.long.as.RightShiftWith.impl.Op.specific_fn.loc29: <specific function> = specific_function %Op.ref.loc29, @Cpp.long.as.RightShiftWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%Cpp.long.as.RightShiftWith.impl.Op.specific_fn.012106.2]
-// CHECK:STDOUT:   %bound_method.loc29_20.4: <bound method> = bound_method %a.ref.loc29_18, %Cpp.long.as.RightShiftWith.impl.Op.specific_fn.loc29
-// CHECK:STDOUT:   %impl.elem0.loc29_23: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc29_23: <bound method> = bound_method %b.ref.loc29, %impl.elem0.loc29_23
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc29_23: init %Cpp.long = call %bound_method.loc29_23(%b.ref.loc29)
-// CHECK:STDOUT:   %.loc29_23.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc29_23
-// CHECK:STDOUT:   %.loc29_23.2: %Cpp.long = converted %b.ref.loc29, %.loc29_23.1
-// CHECK:STDOUT:   %Cpp.long.as.RightShiftWith.impl.Op.call.loc29: init %Cpp.long = call %bound_method.loc29_20.4(%a.ref.loc29_18, %.loc29_23.2)
-// CHECK:STDOUT:   %a.ref.loc29_26: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc29: <specific function> = specific_function %AssertSameType.ref.loc29, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc29_20.6: %Cpp.long = value_of_initializer %Cpp.long.as.RightShiftWith.impl.Op.call.loc29
-// CHECK:STDOUT:   %.loc29_20.7: %Cpp.long = converted %Cpp.long.as.RightShiftWith.impl.Op.call.loc29, %.loc29_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc29: init %empty_tuple.type = call %AssertSameType.specific_fn.loc29(%.loc29_20.7, %a.ref.loc29_26)
-// CHECK:STDOUT:   <elided>
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: --- bitwise_heterogeneous_long_right_side.carbon
-// CHECK:STDOUT:
-// CHECK:STDOUT: constants {
-// CHECK:STDOUT:   %AssertSameType.type: type = fn_type @AssertSameType [concrete]
-// CHECK:STDOUT:   %empty_tuple.type: type = tuple_type () [concrete]
-// CHECK:STDOUT:   %AssertSameType: %AssertSameType.type = struct_value () [concrete]
-// CHECK:STDOUT:   %int_32: Core.IntLiteral = int_value 32 [concrete]
-// CHECK:STDOUT:   %i32: type = class_type @Int, @Int(%int_32) [concrete]
-// CHECK:STDOUT:   %int_1.5b8: Core.IntLiteral = int_value 1 [concrete]
-// CHECK:STDOUT:   %Cpp.long: type = class_type @Long32 [concrete]
-// CHECK:STDOUT:   %pattern_type.68c: type = pattern_type %Cpp.long [concrete]
-// CHECK:STDOUT:   %ImplicitAs.type.819: type = facet_type <@ImplicitAs, @ImplicitAs(%Cpp.long)> [concrete]
-// CHECK:STDOUT:   %ImplicitAs.Convert.type.4c2: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Cpp.long) [concrete]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness.2ce: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.903 [concrete]
-// CHECK:STDOUT:   %ImplicitAs.facet.eed: %ImplicitAs.type.819 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.2ce) [concrete]
-// CHECK:STDOUT:   %.dad: type = fn_type_with_self_type %ImplicitAs.Convert.type.4c2, %ImplicitAs.facet.eed [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.b38: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.2 [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.b38 = struct_value () [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8: <bound method> = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a [concrete]
-// CHECK:STDOUT:   %int_1.5a4: %Cpp.long = int_value 1 [concrete]
-// CHECK:STDOUT:   %BitAndWith.type.0b5: type = facet_type <@BitAndWith, @BitAndWith(%Cpp.long)> [concrete]
-// CHECK:STDOUT:   %BitAndWith.Op.type.e13: type = fn_type @BitAndWith.Op, @BitAndWith(%Cpp.long) [concrete]
-// CHECK:STDOUT:   %T.57d: %ImplicitAs.type.819 = symbolic_binding T, 0 [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.type.b0dfa2.1: type = fn_type @T.binding.as_type.as.BitAndWith.impl.Op.1, @T.binding.as_type.as.BitAndWith.impl.2e8(%T.57d) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.ae0f20.1: %T.binding.as_type.as.BitAndWith.impl.Op.type.b0dfa2.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.type.b0dfa2.2: type = fn_type @T.binding.as_type.as.BitAndWith.impl.Op.2, @T.binding.as_type.as.BitAndWith.impl.2e8(%T.57d) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.ae0f20.2: %T.binding.as_type.as.BitAndWith.impl.Op.type.b0dfa2.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness.0fc: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.5ad [concrete]
-// CHECK:STDOUT:   %ImplicitAs.facet.174: %ImplicitAs.type.819 = facet_value %i32, (%ImplicitAs.impl_witness.0fc) [concrete]
-// CHECK:STDOUT:   %BitAndWith.impl_witness.a02: <witness> = impl_witness imports.%BitAndWith.impl_witness_table.1c0, @T.binding.as_type.as.BitAndWith.impl.2e8(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.type.f24b53.1: type = fn_type @T.binding.as_type.as.BitAndWith.impl.Op.2, @T.binding.as_type.as.BitAndWith.impl.2e8(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.3425be.1: %T.binding.as_type.as.BitAndWith.impl.Op.type.f24b53.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.type.f24b53.2: type = fn_type @T.binding.as_type.as.BitAndWith.impl.Op.1, @T.binding.as_type.as.BitAndWith.impl.2e8(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.3425be.2: %T.binding.as_type.as.BitAndWith.impl.Op.type.f24b53.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %BitAndWith.facet.2fb: %BitAndWith.type.0b5 = facet_value %i32, (%BitAndWith.impl_witness.a02) [concrete]
-// CHECK:STDOUT:   %.419: type = fn_type_with_self_type %BitAndWith.Op.type.e13, %BitAndWith.facet.2fb [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.f76196.1: <specific function> = specific_function %T.binding.as_type.as.BitAndWith.impl.Op.3425be.2, @T.binding.as_type.as.BitAndWith.impl.Op.1(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.f76196.2: <specific function> = specific_function %T.binding.as_type.as.BitAndWith.impl.Op.3425be.1, @T.binding.as_type.as.BitAndWith.impl.Op.2(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %.c45: type = fn_type_with_self_type %ImplicitAs.Convert.type.4c2, %ImplicitAs.facet.174 [concrete]
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.type: type = fn_type @i32.as.ImplicitAs.impl.Convert [concrete]
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert: %i32.as.ImplicitAs.impl.Convert.type = struct_value () [concrete]
-// CHECK:STDOUT:   %AssertSameType.specific_fn: <specific function> = specific_function %AssertSameType, @AssertSameType(%Cpp.long) [concrete]
-// CHECK:STDOUT:   %BitOrWith.type.b22: type = facet_type <@BitOrWith, @BitOrWith(%Cpp.long)> [concrete]
-// CHECK:STDOUT:   %BitOrWith.Op.type.a1b: type = fn_type @BitOrWith.Op, @BitOrWith(%Cpp.long) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.type.f4a873.1: type = fn_type @T.binding.as_type.as.BitOrWith.impl.Op.1, @T.binding.as_type.as.BitOrWith.impl.e42(%T.57d) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.53d67c.1: %T.binding.as_type.as.BitOrWith.impl.Op.type.f4a873.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.type.f4a873.2: type = fn_type @T.binding.as_type.as.BitOrWith.impl.Op.2, @T.binding.as_type.as.BitOrWith.impl.e42(%T.57d) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.53d67c.2: %T.binding.as_type.as.BitOrWith.impl.Op.type.f4a873.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %BitOrWith.impl_witness.d0a: <witness> = impl_witness imports.%BitOrWith.impl_witness_table.946, @T.binding.as_type.as.BitOrWith.impl.e42(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.type.c5501d.1: type = fn_type @T.binding.as_type.as.BitOrWith.impl.Op.2, @T.binding.as_type.as.BitOrWith.impl.e42(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.c9149f.1: %T.binding.as_type.as.BitOrWith.impl.Op.type.c5501d.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.type.c5501d.2: type = fn_type @T.binding.as_type.as.BitOrWith.impl.Op.1, @T.binding.as_type.as.BitOrWith.impl.e42(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.c9149f.2: %T.binding.as_type.as.BitOrWith.impl.Op.type.c5501d.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %BitOrWith.facet.ea7: %BitOrWith.type.b22 = facet_value %i32, (%BitOrWith.impl_witness.d0a) [concrete]
-// CHECK:STDOUT:   %.2e2: type = fn_type_with_self_type %BitOrWith.Op.type.a1b, %BitOrWith.facet.ea7 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.specific_fn.fbab3e.1: <specific function> = specific_function %T.binding.as_type.as.BitOrWith.impl.Op.c9149f.2, @T.binding.as_type.as.BitOrWith.impl.Op.1(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.specific_fn.fbab3e.2: <specific function> = specific_function %T.binding.as_type.as.BitOrWith.impl.Op.c9149f.1, @T.binding.as_type.as.BitOrWith.impl.Op.2(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %BitXorWith.type.87f: type = facet_type <@BitXorWith, @BitXorWith(%Cpp.long)> [concrete]
-// CHECK:STDOUT:   %BitXorWith.Op.type.5cf: type = fn_type @BitXorWith.Op, @BitXorWith(%Cpp.long) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.type.fdc423.1: type = fn_type @T.binding.as_type.as.BitXorWith.impl.Op.1, @T.binding.as_type.as.BitXorWith.impl.878(%T.57d) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.659e6b.1: %T.binding.as_type.as.BitXorWith.impl.Op.type.fdc423.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.type.fdc423.2: type = fn_type @T.binding.as_type.as.BitXorWith.impl.Op.2, @T.binding.as_type.as.BitXorWith.impl.878(%T.57d) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.659e6b.2: %T.binding.as_type.as.BitXorWith.impl.Op.type.fdc423.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %BitXorWith.impl_witness.e8e: <witness> = impl_witness imports.%BitXorWith.impl_witness_table.39f, @T.binding.as_type.as.BitXorWith.impl.878(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.type.42bd3d.1: type = fn_type @T.binding.as_type.as.BitXorWith.impl.Op.2, @T.binding.as_type.as.BitXorWith.impl.878(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.c338c8.1: %T.binding.as_type.as.BitXorWith.impl.Op.type.42bd3d.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.type.42bd3d.2: type = fn_type @T.binding.as_type.as.BitXorWith.impl.Op.1, @T.binding.as_type.as.BitXorWith.impl.878(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.c338c8.2: %T.binding.as_type.as.BitXorWith.impl.Op.type.42bd3d.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %BitXorWith.facet.19e: %BitXorWith.type.87f = facet_value %i32, (%BitXorWith.impl_witness.e8e) [concrete]
-// CHECK:STDOUT:   %.24d: type = fn_type_with_self_type %BitXorWith.Op.type.5cf, %BitXorWith.facet.19e [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.specific_fn.125c34.1: <specific function> = specific_function %T.binding.as_type.as.BitXorWith.impl.Op.c338c8.2, @T.binding.as_type.as.BitXorWith.impl.Op.1(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.specific_fn.125c34.2: <specific function> = specific_function %T.binding.as_type.as.BitXorWith.impl.Op.c338c8.1, @T.binding.as_type.as.BitXorWith.impl.Op.2(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %LeftShiftWith.type.3f9: type = facet_type <@LeftShiftWith, @LeftShiftWith(%Cpp.long)> [concrete]
-// CHECK:STDOUT:   %LeftShiftWith.Op.type.224: type = fn_type @LeftShiftWith.Op, @LeftShiftWith(%Cpp.long) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.type.278104.1: type = fn_type @T.binding.as_type.as.LeftShiftWith.impl.Op.1, @T.binding.as_type.as.LeftShiftWith.impl.b71(%T.57d) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.fdafb7.1: %T.binding.as_type.as.LeftShiftWith.impl.Op.type.278104.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.type.278104.2: type = fn_type @T.binding.as_type.as.LeftShiftWith.impl.Op.2, @T.binding.as_type.as.LeftShiftWith.impl.b71(%T.57d) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.fdafb7.2: %T.binding.as_type.as.LeftShiftWith.impl.Op.type.278104.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %LeftShiftWith.impl_witness.fb3: <witness> = impl_witness imports.%LeftShiftWith.impl_witness_table.ce8, @T.binding.as_type.as.LeftShiftWith.impl.b71(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.type.ab52f6.1: type = fn_type @T.binding.as_type.as.LeftShiftWith.impl.Op.2, @T.binding.as_type.as.LeftShiftWith.impl.b71(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.c3e103.1: %T.binding.as_type.as.LeftShiftWith.impl.Op.type.ab52f6.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.type.ab52f6.2: type = fn_type @T.binding.as_type.as.LeftShiftWith.impl.Op.1, @T.binding.as_type.as.LeftShiftWith.impl.b71(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.c3e103.2: %T.binding.as_type.as.LeftShiftWith.impl.Op.type.ab52f6.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %LeftShiftWith.facet.702: %LeftShiftWith.type.3f9 = facet_value %i32, (%LeftShiftWith.impl_witness.fb3) [concrete]
-// CHECK:STDOUT:   %.509: type = fn_type_with_self_type %LeftShiftWith.Op.type.224, %LeftShiftWith.facet.702 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.specific_fn.547c25.1: <specific function> = specific_function %T.binding.as_type.as.LeftShiftWith.impl.Op.c3e103.2, @T.binding.as_type.as.LeftShiftWith.impl.Op.1(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.specific_fn.547c25.2: <specific function> = specific_function %T.binding.as_type.as.LeftShiftWith.impl.Op.c3e103.1, @T.binding.as_type.as.LeftShiftWith.impl.Op.2(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %RightShiftWith.type.995: type = facet_type <@RightShiftWith, @RightShiftWith(%Cpp.long)> [concrete]
-// CHECK:STDOUT:   %RightShiftWith.Op.type.fd9: type = fn_type @RightShiftWith.Op, @RightShiftWith(%Cpp.long) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.type.8ef087.1: type = fn_type @T.binding.as_type.as.RightShiftWith.impl.Op.1, @T.binding.as_type.as.RightShiftWith.impl.28b(%T.57d) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.3f8b9d.1: %T.binding.as_type.as.RightShiftWith.impl.Op.type.8ef087.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.type.8ef087.2: type = fn_type @T.binding.as_type.as.RightShiftWith.impl.Op.2, @T.binding.as_type.as.RightShiftWith.impl.28b(%T.57d) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.3f8b9d.2: %T.binding.as_type.as.RightShiftWith.impl.Op.type.8ef087.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %RightShiftWith.impl_witness.7d0: <witness> = impl_witness imports.%RightShiftWith.impl_witness_table.050, @T.binding.as_type.as.RightShiftWith.impl.28b(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.type.2fe33f.1: type = fn_type @T.binding.as_type.as.RightShiftWith.impl.Op.2, @T.binding.as_type.as.RightShiftWith.impl.28b(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.44dea2.1: %T.binding.as_type.as.RightShiftWith.impl.Op.type.2fe33f.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.type.2fe33f.2: type = fn_type @T.binding.as_type.as.RightShiftWith.impl.Op.1, @T.binding.as_type.as.RightShiftWith.impl.28b(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.44dea2.2: %T.binding.as_type.as.RightShiftWith.impl.Op.type.2fe33f.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %RightShiftWith.facet.4bd: %RightShiftWith.type.995 = facet_value %i32, (%RightShiftWith.impl_witness.7d0) [concrete]
-// CHECK:STDOUT:   %.9db: type = fn_type_with_self_type %RightShiftWith.Op.type.fd9, %RightShiftWith.facet.4bd [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.specific_fn.888028.1: <specific function> = specific_function %T.binding.as_type.as.RightShiftWith.impl.Op.44dea2.2, @T.binding.as_type.as.RightShiftWith.impl.Op.1(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.specific_fn.888028.2: <specific function> = specific_function %T.binding.as_type.as.RightShiftWith.impl.Op.44dea2.1, @T.binding.as_type.as.RightShiftWith.impl.Op.2(%ImplicitAs.facet.174) [concrete]
-// CHECK:STDOUT:   %BitAndWith.impl_witness.11b: <witness> = impl_witness imports.%BitAndWith.impl_witness_table.1c0, @T.binding.as_type.as.BitAndWith.impl.2e8(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.type.371e74.1: type = fn_type @T.binding.as_type.as.BitAndWith.impl.Op.2, @T.binding.as_type.as.BitAndWith.impl.2e8(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.657411.1: %T.binding.as_type.as.BitAndWith.impl.Op.type.371e74.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.type.371e74.2: type = fn_type @T.binding.as_type.as.BitAndWith.impl.Op.1, @T.binding.as_type.as.BitAndWith.impl.2e8(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.657411.2: %T.binding.as_type.as.BitAndWith.impl.Op.type.371e74.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %BitAndWith.facet.c73: %BitAndWith.type.0b5 = facet_value Core.IntLiteral, (%BitAndWith.impl_witness.11b) [concrete]
-// CHECK:STDOUT:   %.e0e: type = fn_type_with_self_type %BitAndWith.Op.type.e13, %BitAndWith.facet.c73 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.bound.62b211.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.BitAndWith.impl.Op.657411.2 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.76feb8.1: <specific function> = specific_function %T.binding.as_type.as.BitAndWith.impl.Op.657411.2, @T.binding.as_type.as.BitAndWith.impl.Op.1(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %bound_method.284eaa.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.76feb8.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.bound.62b211.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.BitAndWith.impl.Op.657411.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.76feb8.2: <specific function> = specific_function %T.binding.as_type.as.BitAndWith.impl.Op.657411.1, @T.binding.as_type.as.BitAndWith.impl.Op.2(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %bound_method.284eaa.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.76feb8.2 [concrete]
-// CHECK:STDOUT:   %BitOrWith.impl_witness.f0b: <witness> = impl_witness imports.%BitOrWith.impl_witness_table.946, @T.binding.as_type.as.BitOrWith.impl.e42(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.type.6b5126.1: type = fn_type @T.binding.as_type.as.BitOrWith.impl.Op.2, @T.binding.as_type.as.BitOrWith.impl.e42(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.552722.1: %T.binding.as_type.as.BitOrWith.impl.Op.type.6b5126.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.type.6b5126.2: type = fn_type @T.binding.as_type.as.BitOrWith.impl.Op.1, @T.binding.as_type.as.BitOrWith.impl.e42(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.552722.2: %T.binding.as_type.as.BitOrWith.impl.Op.type.6b5126.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %BitOrWith.facet.c28: %BitOrWith.type.b22 = facet_value Core.IntLiteral, (%BitOrWith.impl_witness.f0b) [concrete]
-// CHECK:STDOUT:   %.9f3: type = fn_type_with_self_type %BitOrWith.Op.type.a1b, %BitOrWith.facet.c28 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.bound.0cc7c8.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.BitOrWith.impl.Op.552722.2 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.specific_fn.f5e026.1: <specific function> = specific_function %T.binding.as_type.as.BitOrWith.impl.Op.552722.2, @T.binding.as_type.as.BitOrWith.impl.Op.1(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %bound_method.ba7a8e.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.BitOrWith.impl.Op.specific_fn.f5e026.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.bound.0cc7c8.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.BitOrWith.impl.Op.552722.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.specific_fn.f5e026.2: <specific function> = specific_function %T.binding.as_type.as.BitOrWith.impl.Op.552722.1, @T.binding.as_type.as.BitOrWith.impl.Op.2(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %bound_method.ba7a8e.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.BitOrWith.impl.Op.specific_fn.f5e026.2 [concrete]
-// CHECK:STDOUT:   %BitXorWith.impl_witness.a75: <witness> = impl_witness imports.%BitXorWith.impl_witness_table.39f, @T.binding.as_type.as.BitXorWith.impl.878(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.type.c3bcf6.1: type = fn_type @T.binding.as_type.as.BitXorWith.impl.Op.2, @T.binding.as_type.as.BitXorWith.impl.878(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.c5dfcc.1: %T.binding.as_type.as.BitXorWith.impl.Op.type.c3bcf6.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.type.c3bcf6.2: type = fn_type @T.binding.as_type.as.BitXorWith.impl.Op.1, @T.binding.as_type.as.BitXorWith.impl.878(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.c5dfcc.2: %T.binding.as_type.as.BitXorWith.impl.Op.type.c3bcf6.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %BitXorWith.facet.b31: %BitXorWith.type.87f = facet_value Core.IntLiteral, (%BitXorWith.impl_witness.a75) [concrete]
-// CHECK:STDOUT:   %.498: type = fn_type_with_self_type %BitXorWith.Op.type.5cf, %BitXorWith.facet.b31 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.bound.8d10e0.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.BitXorWith.impl.Op.c5dfcc.2 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.specific_fn.9cdf74.1: <specific function> = specific_function %T.binding.as_type.as.BitXorWith.impl.Op.c5dfcc.2, @T.binding.as_type.as.BitXorWith.impl.Op.1(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %bound_method.91b787.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.BitXorWith.impl.Op.specific_fn.9cdf74.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.bound.8d10e0.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.BitXorWith.impl.Op.c5dfcc.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.specific_fn.9cdf74.2: <specific function> = specific_function %T.binding.as_type.as.BitXorWith.impl.Op.c5dfcc.1, @T.binding.as_type.as.BitXorWith.impl.Op.2(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %bound_method.91b787.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.BitXorWith.impl.Op.specific_fn.9cdf74.2 [concrete]
-// CHECK:STDOUT:   %LeftShiftWith.impl_witness.ad3: <witness> = impl_witness imports.%LeftShiftWith.impl_witness_table.ce8, @T.binding.as_type.as.LeftShiftWith.impl.b71(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.type.0d7d28.1: type = fn_type @T.binding.as_type.as.LeftShiftWith.impl.Op.2, @T.binding.as_type.as.LeftShiftWith.impl.b71(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.f0c7aa.1: %T.binding.as_type.as.LeftShiftWith.impl.Op.type.0d7d28.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.type.0d7d28.2: type = fn_type @T.binding.as_type.as.LeftShiftWith.impl.Op.1, @T.binding.as_type.as.LeftShiftWith.impl.b71(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.f0c7aa.2: %T.binding.as_type.as.LeftShiftWith.impl.Op.type.0d7d28.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %LeftShiftWith.facet.65b: %LeftShiftWith.type.3f9 = facet_value Core.IntLiteral, (%LeftShiftWith.impl_witness.ad3) [concrete]
-// CHECK:STDOUT:   %.468: type = fn_type_with_self_type %LeftShiftWith.Op.type.224, %LeftShiftWith.facet.65b [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.bound.df9a08.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.LeftShiftWith.impl.Op.f0c7aa.2 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.specific_fn.18a0d8.1: <specific function> = specific_function %T.binding.as_type.as.LeftShiftWith.impl.Op.f0c7aa.2, @T.binding.as_type.as.LeftShiftWith.impl.Op.1(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %bound_method.05d3ad.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.LeftShiftWith.impl.Op.specific_fn.18a0d8.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.bound.df9a08.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.LeftShiftWith.impl.Op.f0c7aa.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.specific_fn.18a0d8.2: <specific function> = specific_function %T.binding.as_type.as.LeftShiftWith.impl.Op.f0c7aa.1, @T.binding.as_type.as.LeftShiftWith.impl.Op.2(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %bound_method.05d3ad.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.LeftShiftWith.impl.Op.specific_fn.18a0d8.2 [concrete]
-// CHECK:STDOUT:   %RightShiftWith.impl_witness.269: <witness> = impl_witness imports.%RightShiftWith.impl_witness_table.050, @T.binding.as_type.as.RightShiftWith.impl.28b(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.type.b3fbc2.1: type = fn_type @T.binding.as_type.as.RightShiftWith.impl.Op.2, @T.binding.as_type.as.RightShiftWith.impl.28b(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.79036b.1: %T.binding.as_type.as.RightShiftWith.impl.Op.type.b3fbc2.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.type.b3fbc2.2: type = fn_type @T.binding.as_type.as.RightShiftWith.impl.Op.1, @T.binding.as_type.as.RightShiftWith.impl.28b(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.79036b.2: %T.binding.as_type.as.RightShiftWith.impl.Op.type.b3fbc2.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %RightShiftWith.facet.62c: %RightShiftWith.type.995 = facet_value Core.IntLiteral, (%RightShiftWith.impl_witness.269) [concrete]
-// CHECK:STDOUT:   %.dd3: type = fn_type_with_self_type %RightShiftWith.Op.type.fd9, %RightShiftWith.facet.62c [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.bound.2baaff.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.RightShiftWith.impl.Op.79036b.2 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.specific_fn.fe68a8.1: <specific function> = specific_function %T.binding.as_type.as.RightShiftWith.impl.Op.79036b.2, @T.binding.as_type.as.RightShiftWith.impl.Op.1(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %bound_method.fb5cd1.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.RightShiftWith.impl.Op.specific_fn.fe68a8.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.bound.2baaff.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.RightShiftWith.impl.Op.79036b.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.specific_fn.fe68a8.2: <specific function> = specific_function %T.binding.as_type.as.RightShiftWith.impl.Op.79036b.1, @T.binding.as_type.as.RightShiftWith.impl.Op.2(%ImplicitAs.facet.eed) [concrete]
-// CHECK:STDOUT:   %bound_method.fb5cd1.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.RightShiftWith.impl.Op.specific_fn.fe68a8.2 [concrete]
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %Cpp: <namespace> = namespace file.%Cpp.import_cpp, [concrete] {
-// CHECK:STDOUT:     .long = constants.%Cpp.long
-// CHECK:STDOUT:     import Cpp//...
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %Core.import_ref.b8a: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.b38 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness_table.903 = impl_witness_table (%Core.import_ref.b8a), @Core.IntLiteral.as.ImplicitAs.impl.052 [concrete]
-// CHECK:STDOUT:   %Core.import_ref.cb912f.2 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.eb9: @T.binding.as_type.as.BitAndWith.impl.2e8.%T.binding.as_type.as.BitAndWith.impl.Op.type.2 (%T.binding.as_type.as.BitAndWith.impl.Op.type.b0dfa2.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @T.binding.as_type.as.BitAndWith.impl.2e8.%T.binding.as_type.as.BitAndWith.impl.Op.2 (constants.%T.binding.as_type.as.BitAndWith.impl.Op.ae0f20.1)]
-// CHECK:STDOUT:   %BitAndWith.impl_witness_table.1c0 = impl_witness_table (%Core.import_ref.cb912f.2, %Core.import_ref.eb9), @T.binding.as_type.as.BitAndWith.impl.2e8 [concrete]
-// CHECK:STDOUT:   %Core.Op.36a: @T.binding.as_type.as.BitAndWith.impl.2e8.%T.binding.as_type.as.BitAndWith.impl.Op.type.1 (%T.binding.as_type.as.BitAndWith.impl.Op.type.b0dfa2.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @T.binding.as_type.as.BitAndWith.impl.2e8.%T.binding.as_type.as.BitAndWith.impl.Op.1 (constants.%T.binding.as_type.as.BitAndWith.impl.Op.ae0f20.2)]
-// CHECK:STDOUT:   %Core.import_ref.4fa: %i32.as.ImplicitAs.impl.Convert.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness_table.5ad = impl_witness_table (%Core.import_ref.4fa), @i32.as.ImplicitAs.impl [concrete]
-// CHECK:STDOUT:   %Core.import_ref.cb912f.4 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.d41: @T.binding.as_type.as.BitOrWith.impl.e42.%T.binding.as_type.as.BitOrWith.impl.Op.type.2 (%T.binding.as_type.as.BitOrWith.impl.Op.type.f4a873.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @T.binding.as_type.as.BitOrWith.impl.e42.%T.binding.as_type.as.BitOrWith.impl.Op.2 (constants.%T.binding.as_type.as.BitOrWith.impl.Op.53d67c.1)]
-// CHECK:STDOUT:   %BitOrWith.impl_witness_table.946 = impl_witness_table (%Core.import_ref.cb912f.4, %Core.import_ref.d41), @T.binding.as_type.as.BitOrWith.impl.e42 [concrete]
-// CHECK:STDOUT:   %Core.Op.e80: @T.binding.as_type.as.BitOrWith.impl.e42.%T.binding.as_type.as.BitOrWith.impl.Op.type.1 (%T.binding.as_type.as.BitOrWith.impl.Op.type.f4a873.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @T.binding.as_type.as.BitOrWith.impl.e42.%T.binding.as_type.as.BitOrWith.impl.Op.1 (constants.%T.binding.as_type.as.BitOrWith.impl.Op.53d67c.2)]
-// CHECK:STDOUT:   %Core.import_ref.cb912f.6 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.fef: @T.binding.as_type.as.BitXorWith.impl.878.%T.binding.as_type.as.BitXorWith.impl.Op.type.2 (%T.binding.as_type.as.BitXorWith.impl.Op.type.fdc423.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @T.binding.as_type.as.BitXorWith.impl.878.%T.binding.as_type.as.BitXorWith.impl.Op.2 (constants.%T.binding.as_type.as.BitXorWith.impl.Op.659e6b.1)]
-// CHECK:STDOUT:   %BitXorWith.impl_witness_table.39f = impl_witness_table (%Core.import_ref.cb912f.6, %Core.import_ref.fef), @T.binding.as_type.as.BitXorWith.impl.878 [concrete]
-// CHECK:STDOUT:   %Core.Op.a2d: @T.binding.as_type.as.BitXorWith.impl.878.%T.binding.as_type.as.BitXorWith.impl.Op.type.1 (%T.binding.as_type.as.BitXorWith.impl.Op.type.fdc423.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @T.binding.as_type.as.BitXorWith.impl.878.%T.binding.as_type.as.BitXorWith.impl.Op.1 (constants.%T.binding.as_type.as.BitXorWith.impl.Op.659e6b.2)]
-// CHECK:STDOUT:   %Core.import_ref.cb912f.8 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.4cb: @T.binding.as_type.as.LeftShiftWith.impl.b71.%T.binding.as_type.as.LeftShiftWith.impl.Op.type.2 (%T.binding.as_type.as.LeftShiftWith.impl.Op.type.278104.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @T.binding.as_type.as.LeftShiftWith.impl.b71.%T.binding.as_type.as.LeftShiftWith.impl.Op.2 (constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.fdafb7.1)]
-// CHECK:STDOUT:   %LeftShiftWith.impl_witness_table.ce8 = impl_witness_table (%Core.import_ref.cb912f.8, %Core.import_ref.4cb), @T.binding.as_type.as.LeftShiftWith.impl.b71 [concrete]
-// CHECK:STDOUT:   %Core.Op.79e: @T.binding.as_type.as.LeftShiftWith.impl.b71.%T.binding.as_type.as.LeftShiftWith.impl.Op.type.1 (%T.binding.as_type.as.LeftShiftWith.impl.Op.type.278104.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @T.binding.as_type.as.LeftShiftWith.impl.b71.%T.binding.as_type.as.LeftShiftWith.impl.Op.1 (constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.fdafb7.2)]
-// CHECK:STDOUT:   %Core.import_ref.cb912f.10 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.172: @T.binding.as_type.as.RightShiftWith.impl.28b.%T.binding.as_type.as.RightShiftWith.impl.Op.type.2 (%T.binding.as_type.as.RightShiftWith.impl.Op.type.8ef087.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @T.binding.as_type.as.RightShiftWith.impl.28b.%T.binding.as_type.as.RightShiftWith.impl.Op.2 (constants.%T.binding.as_type.as.RightShiftWith.impl.Op.3f8b9d.1)]
-// CHECK:STDOUT:   %RightShiftWith.impl_witness_table.050 = impl_witness_table (%Core.import_ref.cb912f.10, %Core.import_ref.172), @T.binding.as_type.as.RightShiftWith.impl.28b [concrete]
-// CHECK:STDOUT:   %Core.Op.f2f: @T.binding.as_type.as.RightShiftWith.impl.28b.%T.binding.as_type.as.RightShiftWith.impl.Op.type.1 (%T.binding.as_type.as.RightShiftWith.impl.Op.type.8ef087.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @T.binding.as_type.as.RightShiftWith.impl.28b.%T.binding.as_type.as.RightShiftWith.impl.Op.1 (constants.%T.binding.as_type.as.RightShiftWith.impl.Op.3f8b9d.2)]
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: fn @BitWiseHeterogeneousLongRightSide() {
-// CHECK:STDOUT: !entry:
-// CHECK:STDOUT:   <elided>
-// CHECK:STDOUT:   name_binding_decl {
-// CHECK:STDOUT:     %a.patt: %pattern_type.68c = value_binding_pattern a [concrete]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %int_1.loc11: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %.loc11_13: type = splice_block %long.ref [concrete = constants.%Cpp.long] {
-// CHECK:STDOUT:     %Cpp.ref: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
-// CHECK:STDOUT:     %long.ref: type = name_ref long, constants.%Cpp.long [concrete = constants.%Cpp.long]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %impl.elem0.loc11: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %bound_method.loc11: <bound method> = bound_method %int_1.loc11, %impl.elem0.loc11 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc11: init %Cpp.long = call %bound_method.loc11(%int_1.loc11) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc11_21.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc11 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc11_21.2: %Cpp.long = converted %int_1.loc11, %.loc11_21.1 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %a: %Cpp.long = value_binding a, %.loc11_21.2
-// CHECK:STDOUT:   %AssertSameType.ref.loc13: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %b.ref.loc13: %i32 = name_ref b, %b
-// CHECK:STDOUT:   %a.ref.loc13_22: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %impl.elem1.loc13: %.419 = impl_witness_access constants.%BitAndWith.impl_witness.a02, element1 [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.3425be.2]
-// CHECK:STDOUT:   %bound_method.loc13_20.1: <bound method> = bound_method %b.ref.loc13, %impl.elem1.loc13
-// CHECK:STDOUT:   %specific_fn.loc13: <specific function> = specific_function %impl.elem1.loc13, @T.binding.as_type.as.BitAndWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.f76196.1]
-// CHECK:STDOUT:   %bound_method.loc13_20.2: <bound method> = bound_method %b.ref.loc13, %specific_fn.loc13
-// CHECK:STDOUT:   %.loc13_20.1: %T.binding.as_type.as.BitAndWith.impl.Op.type.f24b53.1 = specific_constant imports.%Core.Op.36a, @T.binding.as_type.as.BitAndWith.impl.2e8(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.3425be.1]
-// CHECK:STDOUT:   %Op.ref.loc13: %T.binding.as_type.as.BitAndWith.impl.Op.type.f24b53.1 = name_ref Op, %.loc13_20.1 [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.3425be.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.bound.loc13: <bound method> = bound_method %b.ref.loc13, %Op.ref.loc13
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.loc13: <specific function> = specific_function %Op.ref.loc13, @T.binding.as_type.as.BitAndWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.f76196.2]
-// CHECK:STDOUT:   %bound_method.loc13_20.3: <bound method> = bound_method %b.ref.loc13, %T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.loc13
-// CHECK:STDOUT:   %impl.elem0.loc13: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc13_18: <bound method> = bound_method %b.ref.loc13, %impl.elem0.loc13
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc13: init %Cpp.long = call %bound_method.loc13_18(%b.ref.loc13)
-// CHECK:STDOUT:   %.loc13_18.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc13
-// CHECK:STDOUT:   %.loc13_18.2: %Cpp.long = converted %b.ref.loc13, %.loc13_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.call.loc13: init %Cpp.long = call %bound_method.loc13_20.3(%.loc13_18.2, %a.ref.loc13_22)
-// CHECK:STDOUT:   %a.ref.loc13_25: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc13: <specific function> = specific_function %AssertSameType.ref.loc13, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc13_20.2: %Cpp.long = value_of_initializer %T.binding.as_type.as.BitAndWith.impl.Op.call.loc13
-// CHECK:STDOUT:   %.loc13_20.3: %Cpp.long = converted %T.binding.as_type.as.BitAndWith.impl.Op.call.loc13, %.loc13_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc13: init %empty_tuple.type = call %AssertSameType.specific_fn.loc13(%.loc13_20.3, %a.ref.loc13_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc14: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %b.ref.loc14: %i32 = name_ref b, %b
-// CHECK:STDOUT:   %a.ref.loc14_22: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %impl.elem1.loc14: %.2e2 = impl_witness_access constants.%BitOrWith.impl_witness.d0a, element1 [concrete = constants.%T.binding.as_type.as.BitOrWith.impl.Op.c9149f.2]
-// CHECK:STDOUT:   %bound_method.loc14_20.1: <bound method> = bound_method %b.ref.loc14, %impl.elem1.loc14
-// CHECK:STDOUT:   %specific_fn.loc14: <specific function> = specific_function %impl.elem1.loc14, @T.binding.as_type.as.BitOrWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.BitOrWith.impl.Op.specific_fn.fbab3e.1]
-// CHECK:STDOUT:   %bound_method.loc14_20.2: <bound method> = bound_method %b.ref.loc14, %specific_fn.loc14
-// CHECK:STDOUT:   %.loc14_20.1: %T.binding.as_type.as.BitOrWith.impl.Op.type.c5501d.1 = specific_constant imports.%Core.Op.e80, @T.binding.as_type.as.BitOrWith.impl.e42(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.BitOrWith.impl.Op.c9149f.1]
-// CHECK:STDOUT:   %Op.ref.loc14: %T.binding.as_type.as.BitOrWith.impl.Op.type.c5501d.1 = name_ref Op, %.loc14_20.1 [concrete = constants.%T.binding.as_type.as.BitOrWith.impl.Op.c9149f.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.bound.loc14: <bound method> = bound_method %b.ref.loc14, %Op.ref.loc14
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.specific_fn.loc14: <specific function> = specific_function %Op.ref.loc14, @T.binding.as_type.as.BitOrWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.BitOrWith.impl.Op.specific_fn.fbab3e.2]
-// CHECK:STDOUT:   %bound_method.loc14_20.3: <bound method> = bound_method %b.ref.loc14, %T.binding.as_type.as.BitOrWith.impl.Op.specific_fn.loc14
-// CHECK:STDOUT:   %impl.elem0.loc14: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc14_18: <bound method> = bound_method %b.ref.loc14, %impl.elem0.loc14
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc14: init %Cpp.long = call %bound_method.loc14_18(%b.ref.loc14)
-// CHECK:STDOUT:   %.loc14_18.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc14
-// CHECK:STDOUT:   %.loc14_18.2: %Cpp.long = converted %b.ref.loc14, %.loc14_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.call.loc14: init %Cpp.long = call %bound_method.loc14_20.3(%.loc14_18.2, %a.ref.loc14_22)
-// CHECK:STDOUT:   %a.ref.loc14_25: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc14: <specific function> = specific_function %AssertSameType.ref.loc14, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc14_20.2: %Cpp.long = value_of_initializer %T.binding.as_type.as.BitOrWith.impl.Op.call.loc14
-// CHECK:STDOUT:   %.loc14_20.3: %Cpp.long = converted %T.binding.as_type.as.BitOrWith.impl.Op.call.loc14, %.loc14_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc14: init %empty_tuple.type = call %AssertSameType.specific_fn.loc14(%.loc14_20.3, %a.ref.loc14_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc15: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %b.ref.loc15: %i32 = name_ref b, %b
-// CHECK:STDOUT:   %a.ref.loc15_22: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %impl.elem1.loc15: %.24d = impl_witness_access constants.%BitXorWith.impl_witness.e8e, element1 [concrete = constants.%T.binding.as_type.as.BitXorWith.impl.Op.c338c8.2]
-// CHECK:STDOUT:   %bound_method.loc15_20.1: <bound method> = bound_method %b.ref.loc15, %impl.elem1.loc15
-// CHECK:STDOUT:   %specific_fn.loc15: <specific function> = specific_function %impl.elem1.loc15, @T.binding.as_type.as.BitXorWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.BitXorWith.impl.Op.specific_fn.125c34.1]
-// CHECK:STDOUT:   %bound_method.loc15_20.2: <bound method> = bound_method %b.ref.loc15, %specific_fn.loc15
-// CHECK:STDOUT:   %.loc15_20.1: %T.binding.as_type.as.BitXorWith.impl.Op.type.42bd3d.1 = specific_constant imports.%Core.Op.a2d, @T.binding.as_type.as.BitXorWith.impl.878(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.BitXorWith.impl.Op.c338c8.1]
-// CHECK:STDOUT:   %Op.ref.loc15: %T.binding.as_type.as.BitXorWith.impl.Op.type.42bd3d.1 = name_ref Op, %.loc15_20.1 [concrete = constants.%T.binding.as_type.as.BitXorWith.impl.Op.c338c8.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.bound.loc15: <bound method> = bound_method %b.ref.loc15, %Op.ref.loc15
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.specific_fn.loc15: <specific function> = specific_function %Op.ref.loc15, @T.binding.as_type.as.BitXorWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.BitXorWith.impl.Op.specific_fn.125c34.2]
-// CHECK:STDOUT:   %bound_method.loc15_20.3: <bound method> = bound_method %b.ref.loc15, %T.binding.as_type.as.BitXorWith.impl.Op.specific_fn.loc15
-// CHECK:STDOUT:   %impl.elem0.loc15: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc15_18: <bound method> = bound_method %b.ref.loc15, %impl.elem0.loc15
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc15: init %Cpp.long = call %bound_method.loc15_18(%b.ref.loc15)
-// CHECK:STDOUT:   %.loc15_18.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc15
-// CHECK:STDOUT:   %.loc15_18.2: %Cpp.long = converted %b.ref.loc15, %.loc15_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.call.loc15: init %Cpp.long = call %bound_method.loc15_20.3(%.loc15_18.2, %a.ref.loc15_22)
-// CHECK:STDOUT:   %a.ref.loc15_25: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc15: <specific function> = specific_function %AssertSameType.ref.loc15, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc15_20.2: %Cpp.long = value_of_initializer %T.binding.as_type.as.BitXorWith.impl.Op.call.loc15
-// CHECK:STDOUT:   %.loc15_20.3: %Cpp.long = converted %T.binding.as_type.as.BitXorWith.impl.Op.call.loc15, %.loc15_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc15: init %empty_tuple.type = call %AssertSameType.specific_fn.loc15(%.loc15_20.3, %a.ref.loc15_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc16: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %b.ref.loc16: %i32 = name_ref b, %b
-// CHECK:STDOUT:   %a.ref.loc16_23: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %impl.elem1.loc16: %.509 = impl_witness_access constants.%LeftShiftWith.impl_witness.fb3, element1 [concrete = constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.c3e103.2]
-// CHECK:STDOUT:   %bound_method.loc16_20.1: <bound method> = bound_method %b.ref.loc16, %impl.elem1.loc16
-// CHECK:STDOUT:   %specific_fn.loc16: <specific function> = specific_function %impl.elem1.loc16, @T.binding.as_type.as.LeftShiftWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.specific_fn.547c25.1]
-// CHECK:STDOUT:   %bound_method.loc16_20.2: <bound method> = bound_method %b.ref.loc16, %specific_fn.loc16
-// CHECK:STDOUT:   %.loc16_20.1: %T.binding.as_type.as.LeftShiftWith.impl.Op.type.ab52f6.1 = specific_constant imports.%Core.Op.79e, @T.binding.as_type.as.LeftShiftWith.impl.b71(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.c3e103.1]
-// CHECK:STDOUT:   %Op.ref.loc16: %T.binding.as_type.as.LeftShiftWith.impl.Op.type.ab52f6.1 = name_ref Op, %.loc16_20.1 [concrete = constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.c3e103.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.bound.loc16: <bound method> = bound_method %b.ref.loc16, %Op.ref.loc16
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.specific_fn.loc16: <specific function> = specific_function %Op.ref.loc16, @T.binding.as_type.as.LeftShiftWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.specific_fn.547c25.2]
-// CHECK:STDOUT:   %bound_method.loc16_20.3: <bound method> = bound_method %b.ref.loc16, %T.binding.as_type.as.LeftShiftWith.impl.Op.specific_fn.loc16
-// CHECK:STDOUT:   %impl.elem0.loc16: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc16_18: <bound method> = bound_method %b.ref.loc16, %impl.elem0.loc16
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc16: init %Cpp.long = call %bound_method.loc16_18(%b.ref.loc16)
-// CHECK:STDOUT:   %.loc16_18.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc16
-// CHECK:STDOUT:   %.loc16_18.2: %Cpp.long = converted %b.ref.loc16, %.loc16_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.call.loc16: init %Cpp.long = call %bound_method.loc16_20.3(%.loc16_18.2, %a.ref.loc16_23)
-// CHECK:STDOUT:   %a.ref.loc16_26: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc16: <specific function> = specific_function %AssertSameType.ref.loc16, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc16_20.2: %Cpp.long = value_of_initializer %T.binding.as_type.as.LeftShiftWith.impl.Op.call.loc16
-// CHECK:STDOUT:   %.loc16_20.3: %Cpp.long = converted %T.binding.as_type.as.LeftShiftWith.impl.Op.call.loc16, %.loc16_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc16: init %empty_tuple.type = call %AssertSameType.specific_fn.loc16(%.loc16_20.3, %a.ref.loc16_26)
-// CHECK:STDOUT:   %AssertSameType.ref.loc17: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %b.ref.loc17: %i32 = name_ref b, %b
-// CHECK:STDOUT:   %a.ref.loc17_23: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %impl.elem1.loc17: %.9db = impl_witness_access constants.%RightShiftWith.impl_witness.7d0, element1 [concrete = constants.%T.binding.as_type.as.RightShiftWith.impl.Op.44dea2.2]
-// CHECK:STDOUT:   %bound_method.loc17_20.1: <bound method> = bound_method %b.ref.loc17, %impl.elem1.loc17
-// CHECK:STDOUT:   %specific_fn.loc17: <specific function> = specific_function %impl.elem1.loc17, @T.binding.as_type.as.RightShiftWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.RightShiftWith.impl.Op.specific_fn.888028.1]
-// CHECK:STDOUT:   %bound_method.loc17_20.2: <bound method> = bound_method %b.ref.loc17, %specific_fn.loc17
-// CHECK:STDOUT:   %.loc17_20.1: %T.binding.as_type.as.RightShiftWith.impl.Op.type.2fe33f.1 = specific_constant imports.%Core.Op.f2f, @T.binding.as_type.as.RightShiftWith.impl.28b(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.RightShiftWith.impl.Op.44dea2.1]
-// CHECK:STDOUT:   %Op.ref.loc17: %T.binding.as_type.as.RightShiftWith.impl.Op.type.2fe33f.1 = name_ref Op, %.loc17_20.1 [concrete = constants.%T.binding.as_type.as.RightShiftWith.impl.Op.44dea2.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.bound.loc17: <bound method> = bound_method %b.ref.loc17, %Op.ref.loc17
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.specific_fn.loc17: <specific function> = specific_function %Op.ref.loc17, @T.binding.as_type.as.RightShiftWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.RightShiftWith.impl.Op.specific_fn.888028.2]
-// CHECK:STDOUT:   %bound_method.loc17_20.3: <bound method> = bound_method %b.ref.loc17, %T.binding.as_type.as.RightShiftWith.impl.Op.specific_fn.loc17
-// CHECK:STDOUT:   %impl.elem0.loc17: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc17_18: <bound method> = bound_method %b.ref.loc17, %impl.elem0.loc17
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc17: init %Cpp.long = call %bound_method.loc17_18(%b.ref.loc17)
-// CHECK:STDOUT:   %.loc17_18.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc17
-// CHECK:STDOUT:   %.loc17_18.2: %Cpp.long = converted %b.ref.loc17, %.loc17_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.call.loc17: init %Cpp.long = call %bound_method.loc17_20.3(%.loc17_18.2, %a.ref.loc17_23)
-// CHECK:STDOUT:   %a.ref.loc17_26: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc17: <specific function> = specific_function %AssertSameType.ref.loc17, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc17_20.2: %Cpp.long = value_of_initializer %T.binding.as_type.as.RightShiftWith.impl.Op.call.loc17
-// CHECK:STDOUT:   %.loc17_20.3: %Cpp.long = converted %T.binding.as_type.as.RightShiftWith.impl.Op.call.loc17, %.loc17_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc17: init %empty_tuple.type = call %AssertSameType.specific_fn.loc17(%.loc17_20.3, %a.ref.loc17_26)
-// CHECK:STDOUT:   %AssertSameType.ref.loc19: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %int_1.loc19: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %a.ref.loc19_22: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %impl.elem1.loc19: %.e0e = impl_witness_access constants.%BitAndWith.impl_witness.11b, element1 [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.657411.2]
-// CHECK:STDOUT:   %bound_method.loc19_20.1: <bound method> = bound_method %int_1.loc19, %impl.elem1.loc19 [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.bound.62b211.1]
-// CHECK:STDOUT:   %specific_fn.loc19: <specific function> = specific_function %impl.elem1.loc19, @T.binding.as_type.as.BitAndWith.impl.Op.1(constants.%ImplicitAs.facet.eed) [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.76feb8.1]
-// CHECK:STDOUT:   %bound_method.loc19_20.2: <bound method> = bound_method %int_1.loc19, %specific_fn.loc19 [concrete = constants.%bound_method.284eaa.1]
-// CHECK:STDOUT:   %.loc19_20.1: %T.binding.as_type.as.BitAndWith.impl.Op.type.371e74.1 = specific_constant imports.%Core.Op.36a, @T.binding.as_type.as.BitAndWith.impl.2e8(constants.%ImplicitAs.facet.eed) [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.657411.1]
-// CHECK:STDOUT:   %Op.ref.loc19: %T.binding.as_type.as.BitAndWith.impl.Op.type.371e74.1 = name_ref Op, %.loc19_20.1 [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.657411.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.bound.loc19: <bound method> = bound_method %int_1.loc19, %Op.ref.loc19 [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.bound.62b211.2]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.loc19: <specific function> = specific_function %Op.ref.loc19, @T.binding.as_type.as.BitAndWith.impl.Op.2(constants.%ImplicitAs.facet.eed) [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.76feb8.2]
-// CHECK:STDOUT:   %bound_method.loc19_20.3: <bound method> = bound_method %int_1.loc19, %T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.loc19 [concrete = constants.%bound_method.284eaa.2]
-// CHECK:STDOUT:   %impl.elem0.loc19: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %bound_method.loc19_18: <bound method> = bound_method %int_1.loc19, %impl.elem0.loc19 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19: init %Cpp.long = call %bound_method.loc19_18(%int_1.loc19) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc19_18.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc19_18.2: %Cpp.long = converted %int_1.loc19, %.loc19_18.1 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.call.loc19: init %Cpp.long = call %bound_method.loc19_20.3(%.loc19_18.2, %a.ref.loc19_22)
-// CHECK:STDOUT:   %a.ref.loc19_25: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc19: <specific function> = specific_function %AssertSameType.ref.loc19, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc19_20.2: %Cpp.long = value_of_initializer %T.binding.as_type.as.BitAndWith.impl.Op.call.loc19
-// CHECK:STDOUT:   %.loc19_20.3: %Cpp.long = converted %T.binding.as_type.as.BitAndWith.impl.Op.call.loc19, %.loc19_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc19: init %empty_tuple.type = call %AssertSameType.specific_fn.loc19(%.loc19_20.3, %a.ref.loc19_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc20: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %int_1.loc20: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %a.ref.loc20_22: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %impl.elem1.loc20: %.9f3 = impl_witness_access constants.%BitOrWith.impl_witness.f0b, element1 [concrete = constants.%T.binding.as_type.as.BitOrWith.impl.Op.552722.2]
-// CHECK:STDOUT:   %bound_method.loc20_20.1: <bound method> = bound_method %int_1.loc20, %impl.elem1.loc20 [concrete = constants.%T.binding.as_type.as.BitOrWith.impl.Op.bound.0cc7c8.1]
-// CHECK:STDOUT:   %specific_fn.loc20: <specific function> = specific_function %impl.elem1.loc20, @T.binding.as_type.as.BitOrWith.impl.Op.1(constants.%ImplicitAs.facet.eed) [concrete = constants.%T.binding.as_type.as.BitOrWith.impl.Op.specific_fn.f5e026.1]
-// CHECK:STDOUT:   %bound_method.loc20_20.2: <bound method> = bound_method %int_1.loc20, %specific_fn.loc20 [concrete = constants.%bound_method.ba7a8e.1]
-// CHECK:STDOUT:   %.loc20_20.1: %T.binding.as_type.as.BitOrWith.impl.Op.type.6b5126.1 = specific_constant imports.%Core.Op.e80, @T.binding.as_type.as.BitOrWith.impl.e42(constants.%ImplicitAs.facet.eed) [concrete = constants.%T.binding.as_type.as.BitOrWith.impl.Op.552722.1]
-// CHECK:STDOUT:   %Op.ref.loc20: %T.binding.as_type.as.BitOrWith.impl.Op.type.6b5126.1 = name_ref Op, %.loc20_20.1 [concrete = constants.%T.binding.as_type.as.BitOrWith.impl.Op.552722.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.bound.loc20: <bound method> = bound_method %int_1.loc20, %Op.ref.loc20 [concrete = constants.%T.binding.as_type.as.BitOrWith.impl.Op.bound.0cc7c8.2]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.specific_fn.loc20: <specific function> = specific_function %Op.ref.loc20, @T.binding.as_type.as.BitOrWith.impl.Op.2(constants.%ImplicitAs.facet.eed) [concrete = constants.%T.binding.as_type.as.BitOrWith.impl.Op.specific_fn.f5e026.2]
-// CHECK:STDOUT:   %bound_method.loc20_20.3: <bound method> = bound_method %int_1.loc20, %T.binding.as_type.as.BitOrWith.impl.Op.specific_fn.loc20 [concrete = constants.%bound_method.ba7a8e.2]
-// CHECK:STDOUT:   %impl.elem0.loc20: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %bound_method.loc20_18: <bound method> = bound_method %int_1.loc20, %impl.elem0.loc20 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20: init %Cpp.long = call %bound_method.loc20_18(%int_1.loc20) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc20_18.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc20_18.2: %Cpp.long = converted %int_1.loc20, %.loc20_18.1 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.call.loc20: init %Cpp.long = call %bound_method.loc20_20.3(%.loc20_18.2, %a.ref.loc20_22)
-// CHECK:STDOUT:   %a.ref.loc20_25: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc20: <specific function> = specific_function %AssertSameType.ref.loc20, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc20_20.2: %Cpp.long = value_of_initializer %T.binding.as_type.as.BitOrWith.impl.Op.call.loc20
-// CHECK:STDOUT:   %.loc20_20.3: %Cpp.long = converted %T.binding.as_type.as.BitOrWith.impl.Op.call.loc20, %.loc20_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc20: init %empty_tuple.type = call %AssertSameType.specific_fn.loc20(%.loc20_20.3, %a.ref.loc20_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc21: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %int_1.loc21: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %a.ref.loc21_22: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %impl.elem1.loc21: %.498 = impl_witness_access constants.%BitXorWith.impl_witness.a75, element1 [concrete = constants.%T.binding.as_type.as.BitXorWith.impl.Op.c5dfcc.2]
-// CHECK:STDOUT:   %bound_method.loc21_20.1: <bound method> = bound_method %int_1.loc21, %impl.elem1.loc21 [concrete = constants.%T.binding.as_type.as.BitXorWith.impl.Op.bound.8d10e0.1]
-// CHECK:STDOUT:   %specific_fn.loc21: <specific function> = specific_function %impl.elem1.loc21, @T.binding.as_type.as.BitXorWith.impl.Op.1(constants.%ImplicitAs.facet.eed) [concrete = constants.%T.binding.as_type.as.BitXorWith.impl.Op.specific_fn.9cdf74.1]
-// CHECK:STDOUT:   %bound_method.loc21_20.2: <bound method> = bound_method %int_1.loc21, %specific_fn.loc21 [concrete = constants.%bound_method.91b787.1]
-// CHECK:STDOUT:   %.loc21_20.1: %T.binding.as_type.as.BitXorWith.impl.Op.type.c3bcf6.1 = specific_constant imports.%Core.Op.a2d, @T.binding.as_type.as.BitXorWith.impl.878(constants.%ImplicitAs.facet.eed) [concrete = constants.%T.binding.as_type.as.BitXorWith.impl.Op.c5dfcc.1]
-// CHECK:STDOUT:   %Op.ref.loc21: %T.binding.as_type.as.BitXorWith.impl.Op.type.c3bcf6.1 = name_ref Op, %.loc21_20.1 [concrete = constants.%T.binding.as_type.as.BitXorWith.impl.Op.c5dfcc.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.bound.loc21: <bound method> = bound_method %int_1.loc21, %Op.ref.loc21 [concrete = constants.%T.binding.as_type.as.BitXorWith.impl.Op.bound.8d10e0.2]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.specific_fn.loc21: <specific function> = specific_function %Op.ref.loc21, @T.binding.as_type.as.BitXorWith.impl.Op.2(constants.%ImplicitAs.facet.eed) [concrete = constants.%T.binding.as_type.as.BitXorWith.impl.Op.specific_fn.9cdf74.2]
-// CHECK:STDOUT:   %bound_method.loc21_20.3: <bound method> = bound_method %int_1.loc21, %T.binding.as_type.as.BitXorWith.impl.Op.specific_fn.loc21 [concrete = constants.%bound_method.91b787.2]
-// CHECK:STDOUT:   %impl.elem0.loc21: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %bound_method.loc21_18: <bound method> = bound_method %int_1.loc21, %impl.elem0.loc21 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21: init %Cpp.long = call %bound_method.loc21_18(%int_1.loc21) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc21_18.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc21_18.2: %Cpp.long = converted %int_1.loc21, %.loc21_18.1 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.call.loc21: init %Cpp.long = call %bound_method.loc21_20.3(%.loc21_18.2, %a.ref.loc21_22)
-// CHECK:STDOUT:   %a.ref.loc21_25: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc21: <specific function> = specific_function %AssertSameType.ref.loc21, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc21_20.2: %Cpp.long = value_of_initializer %T.binding.as_type.as.BitXorWith.impl.Op.call.loc21
-// CHECK:STDOUT:   %.loc21_20.3: %Cpp.long = converted %T.binding.as_type.as.BitXorWith.impl.Op.call.loc21, %.loc21_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc21: init %empty_tuple.type = call %AssertSameType.specific_fn.loc21(%.loc21_20.3, %a.ref.loc21_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc22: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %int_1.loc22: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %a.ref.loc22_23: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %impl.elem1.loc22: %.468 = impl_witness_access constants.%LeftShiftWith.impl_witness.ad3, element1 [concrete = constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.f0c7aa.2]
-// CHECK:STDOUT:   %bound_method.loc22_20.1: <bound method> = bound_method %int_1.loc22, %impl.elem1.loc22 [concrete = constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.bound.df9a08.1]
-// CHECK:STDOUT:   %specific_fn.loc22: <specific function> = specific_function %impl.elem1.loc22, @T.binding.as_type.as.LeftShiftWith.impl.Op.1(constants.%ImplicitAs.facet.eed) [concrete = constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.specific_fn.18a0d8.1]
-// CHECK:STDOUT:   %bound_method.loc22_20.2: <bound method> = bound_method %int_1.loc22, %specific_fn.loc22 [concrete = constants.%bound_method.05d3ad.1]
-// CHECK:STDOUT:   %.loc22_20.1: %T.binding.as_type.as.LeftShiftWith.impl.Op.type.0d7d28.1 = specific_constant imports.%Core.Op.79e, @T.binding.as_type.as.LeftShiftWith.impl.b71(constants.%ImplicitAs.facet.eed) [concrete = constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.f0c7aa.1]
-// CHECK:STDOUT:   %Op.ref.loc22: %T.binding.as_type.as.LeftShiftWith.impl.Op.type.0d7d28.1 = name_ref Op, %.loc22_20.1 [concrete = constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.f0c7aa.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.bound.loc22: <bound method> = bound_method %int_1.loc22, %Op.ref.loc22 [concrete = constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.bound.df9a08.2]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.specific_fn.loc22: <specific function> = specific_function %Op.ref.loc22, @T.binding.as_type.as.LeftShiftWith.impl.Op.2(constants.%ImplicitAs.facet.eed) [concrete = constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.specific_fn.18a0d8.2]
-// CHECK:STDOUT:   %bound_method.loc22_20.3: <bound method> = bound_method %int_1.loc22, %T.binding.as_type.as.LeftShiftWith.impl.Op.specific_fn.loc22 [concrete = constants.%bound_method.05d3ad.2]
-// CHECK:STDOUT:   %impl.elem0.loc22: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %bound_method.loc22_18: <bound method> = bound_method %int_1.loc22, %impl.elem0.loc22 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22: init %Cpp.long = call %bound_method.loc22_18(%int_1.loc22) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc22_18.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc22_18.2: %Cpp.long = converted %int_1.loc22, %.loc22_18.1 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.call.loc22: init %Cpp.long = call %bound_method.loc22_20.3(%.loc22_18.2, %a.ref.loc22_23)
-// CHECK:STDOUT:   %a.ref.loc22_26: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc22: <specific function> = specific_function %AssertSameType.ref.loc22, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc22_20.2: %Cpp.long = value_of_initializer %T.binding.as_type.as.LeftShiftWith.impl.Op.call.loc22
-// CHECK:STDOUT:   %.loc22_20.3: %Cpp.long = converted %T.binding.as_type.as.LeftShiftWith.impl.Op.call.loc22, %.loc22_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc22: init %empty_tuple.type = call %AssertSameType.specific_fn.loc22(%.loc22_20.3, %a.ref.loc22_26)
-// CHECK:STDOUT:   %AssertSameType.ref.loc23: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %int_1.loc23: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %a.ref.loc23_23: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %impl.elem1.loc23: %.dd3 = impl_witness_access constants.%RightShiftWith.impl_witness.269, element1 [concrete = constants.%T.binding.as_type.as.RightShiftWith.impl.Op.79036b.2]
-// CHECK:STDOUT:   %bound_method.loc23_20.1: <bound method> = bound_method %int_1.loc23, %impl.elem1.loc23 [concrete = constants.%T.binding.as_type.as.RightShiftWith.impl.Op.bound.2baaff.1]
-// CHECK:STDOUT:   %specific_fn.loc23: <specific function> = specific_function %impl.elem1.loc23, @T.binding.as_type.as.RightShiftWith.impl.Op.1(constants.%ImplicitAs.facet.eed) [concrete = constants.%T.binding.as_type.as.RightShiftWith.impl.Op.specific_fn.fe68a8.1]
-// CHECK:STDOUT:   %bound_method.loc23_20.2: <bound method> = bound_method %int_1.loc23, %specific_fn.loc23 [concrete = constants.%bound_method.fb5cd1.1]
-// CHECK:STDOUT:   %.loc23_20.1: %T.binding.as_type.as.RightShiftWith.impl.Op.type.b3fbc2.1 = specific_constant imports.%Core.Op.f2f, @T.binding.as_type.as.RightShiftWith.impl.28b(constants.%ImplicitAs.facet.eed) [concrete = constants.%T.binding.as_type.as.RightShiftWith.impl.Op.79036b.1]
-// CHECK:STDOUT:   %Op.ref.loc23: %T.binding.as_type.as.RightShiftWith.impl.Op.type.b3fbc2.1 = name_ref Op, %.loc23_20.1 [concrete = constants.%T.binding.as_type.as.RightShiftWith.impl.Op.79036b.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.bound.loc23: <bound method> = bound_method %int_1.loc23, %Op.ref.loc23 [concrete = constants.%T.binding.as_type.as.RightShiftWith.impl.Op.bound.2baaff.2]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.specific_fn.loc23: <specific function> = specific_function %Op.ref.loc23, @T.binding.as_type.as.RightShiftWith.impl.Op.2(constants.%ImplicitAs.facet.eed) [concrete = constants.%T.binding.as_type.as.RightShiftWith.impl.Op.specific_fn.fe68a8.2]
-// CHECK:STDOUT:   %bound_method.loc23_20.3: <bound method> = bound_method %int_1.loc23, %T.binding.as_type.as.RightShiftWith.impl.Op.specific_fn.loc23 [concrete = constants.%bound_method.fb5cd1.2]
-// CHECK:STDOUT:   %impl.elem0.loc23: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %bound_method.loc23_18: <bound method> = bound_method %int_1.loc23, %impl.elem0.loc23 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc23: init %Cpp.long = call %bound_method.loc23_18(%int_1.loc23) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc23_18.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc23 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc23_18.2: %Cpp.long = converted %int_1.loc23, %.loc23_18.1 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.call.loc23: init %Cpp.long = call %bound_method.loc23_20.3(%.loc23_18.2, %a.ref.loc23_23)
-// CHECK:STDOUT:   %a.ref.loc23_26: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc23: <specific function> = specific_function %AssertSameType.ref.loc23, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc23_20.2: %Cpp.long = value_of_initializer %T.binding.as_type.as.RightShiftWith.impl.Op.call.loc23
-// CHECK:STDOUT:   %.loc23_20.3: %Cpp.long = converted %T.binding.as_type.as.RightShiftWith.impl.Op.call.loc23, %.loc23_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc23: init %empty_tuple.type = call %AssertSameType.specific_fn.loc23(%.loc23_20.3, %a.ref.loc23_26)
-// CHECK:STDOUT:   %AssertSameType.ref.loc25: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %b.ref.loc25: %i32 = name_ref b, %b
-// CHECK:STDOUT:   %a.ref.loc25_22: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %impl.elem1.loc25: %.419 = impl_witness_access constants.%BitAndWith.impl_witness.a02, element1 [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.3425be.2]
-// CHECK:STDOUT:   %bound_method.loc25_20.1: <bound method> = bound_method %b.ref.loc25, %impl.elem1.loc25
-// CHECK:STDOUT:   %specific_fn.loc25: <specific function> = specific_function %impl.elem1.loc25, @T.binding.as_type.as.BitAndWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.f76196.1]
-// CHECK:STDOUT:   %bound_method.loc25_20.2: <bound method> = bound_method %b.ref.loc25, %specific_fn.loc25
-// CHECK:STDOUT:   %.loc25_20.1: %T.binding.as_type.as.BitAndWith.impl.Op.type.f24b53.1 = specific_constant imports.%Core.Op.36a, @T.binding.as_type.as.BitAndWith.impl.2e8(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.3425be.1]
-// CHECK:STDOUT:   %Op.ref.loc25: %T.binding.as_type.as.BitAndWith.impl.Op.type.f24b53.1 = name_ref Op, %.loc25_20.1 [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.3425be.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.bound.loc25: <bound method> = bound_method %b.ref.loc25, %Op.ref.loc25
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.loc25: <specific function> = specific_function %Op.ref.loc25, @T.binding.as_type.as.BitAndWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.f76196.2]
-// CHECK:STDOUT:   %bound_method.loc25_20.3: <bound method> = bound_method %b.ref.loc25, %T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.loc25
-// CHECK:STDOUT:   %impl.elem0.loc25: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc25_18: <bound method> = bound_method %b.ref.loc25, %impl.elem0.loc25
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc25: init %Cpp.long = call %bound_method.loc25_18(%b.ref.loc25)
-// CHECK:STDOUT:   %.loc25_18.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc25
-// CHECK:STDOUT:   %.loc25_18.2: %Cpp.long = converted %b.ref.loc25, %.loc25_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.call.loc25: init %Cpp.long = call %bound_method.loc25_20.3(%.loc25_18.2, %a.ref.loc25_22)
-// CHECK:STDOUT:   %a.ref.loc25_25: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc25: <specific function> = specific_function %AssertSameType.ref.loc25, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc25_20.2: %Cpp.long = value_of_initializer %T.binding.as_type.as.BitAndWith.impl.Op.call.loc25
-// CHECK:STDOUT:   %.loc25_20.3: %Cpp.long = converted %T.binding.as_type.as.BitAndWith.impl.Op.call.loc25, %.loc25_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc25: init %empty_tuple.type = call %AssertSameType.specific_fn.loc25(%.loc25_20.3, %a.ref.loc25_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc26: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %b.ref.loc26: %i32 = name_ref b, %b
-// CHECK:STDOUT:   %a.ref.loc26_22: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %impl.elem1.loc26: %.2e2 = impl_witness_access constants.%BitOrWith.impl_witness.d0a, element1 [concrete = constants.%T.binding.as_type.as.BitOrWith.impl.Op.c9149f.2]
-// CHECK:STDOUT:   %bound_method.loc26_20.1: <bound method> = bound_method %b.ref.loc26, %impl.elem1.loc26
-// CHECK:STDOUT:   %specific_fn.loc26: <specific function> = specific_function %impl.elem1.loc26, @T.binding.as_type.as.BitOrWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.BitOrWith.impl.Op.specific_fn.fbab3e.1]
-// CHECK:STDOUT:   %bound_method.loc26_20.2: <bound method> = bound_method %b.ref.loc26, %specific_fn.loc26
-// CHECK:STDOUT:   %.loc26_20.1: %T.binding.as_type.as.BitOrWith.impl.Op.type.c5501d.1 = specific_constant imports.%Core.Op.e80, @T.binding.as_type.as.BitOrWith.impl.e42(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.BitOrWith.impl.Op.c9149f.1]
-// CHECK:STDOUT:   %Op.ref.loc26: %T.binding.as_type.as.BitOrWith.impl.Op.type.c5501d.1 = name_ref Op, %.loc26_20.1 [concrete = constants.%T.binding.as_type.as.BitOrWith.impl.Op.c9149f.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.bound.loc26: <bound method> = bound_method %b.ref.loc26, %Op.ref.loc26
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.specific_fn.loc26: <specific function> = specific_function %Op.ref.loc26, @T.binding.as_type.as.BitOrWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.BitOrWith.impl.Op.specific_fn.fbab3e.2]
-// CHECK:STDOUT:   %bound_method.loc26_20.3: <bound method> = bound_method %b.ref.loc26, %T.binding.as_type.as.BitOrWith.impl.Op.specific_fn.loc26
-// CHECK:STDOUT:   %impl.elem0.loc26: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc26_18: <bound method> = bound_method %b.ref.loc26, %impl.elem0.loc26
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc26: init %Cpp.long = call %bound_method.loc26_18(%b.ref.loc26)
-// CHECK:STDOUT:   %.loc26_18.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc26
-// CHECK:STDOUT:   %.loc26_18.2: %Cpp.long = converted %b.ref.loc26, %.loc26_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.call.loc26: init %Cpp.long = call %bound_method.loc26_20.3(%.loc26_18.2, %a.ref.loc26_22)
-// CHECK:STDOUT:   %a.ref.loc26_25: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc26: <specific function> = specific_function %AssertSameType.ref.loc26, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc26_20.2: %Cpp.long = value_of_initializer %T.binding.as_type.as.BitOrWith.impl.Op.call.loc26
-// CHECK:STDOUT:   %.loc26_20.3: %Cpp.long = converted %T.binding.as_type.as.BitOrWith.impl.Op.call.loc26, %.loc26_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc26: init %empty_tuple.type = call %AssertSameType.specific_fn.loc26(%.loc26_20.3, %a.ref.loc26_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc27: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %b.ref.loc27: %i32 = name_ref b, %b
-// CHECK:STDOUT:   %a.ref.loc27_22: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %impl.elem1.loc27: %.24d = impl_witness_access constants.%BitXorWith.impl_witness.e8e, element1 [concrete = constants.%T.binding.as_type.as.BitXorWith.impl.Op.c338c8.2]
-// CHECK:STDOUT:   %bound_method.loc27_20.1: <bound method> = bound_method %b.ref.loc27, %impl.elem1.loc27
-// CHECK:STDOUT:   %specific_fn.loc27: <specific function> = specific_function %impl.elem1.loc27, @T.binding.as_type.as.BitXorWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.BitXorWith.impl.Op.specific_fn.125c34.1]
-// CHECK:STDOUT:   %bound_method.loc27_20.2: <bound method> = bound_method %b.ref.loc27, %specific_fn.loc27
-// CHECK:STDOUT:   %.loc27_20.1: %T.binding.as_type.as.BitXorWith.impl.Op.type.42bd3d.1 = specific_constant imports.%Core.Op.a2d, @T.binding.as_type.as.BitXorWith.impl.878(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.BitXorWith.impl.Op.c338c8.1]
-// CHECK:STDOUT:   %Op.ref.loc27: %T.binding.as_type.as.BitXorWith.impl.Op.type.42bd3d.1 = name_ref Op, %.loc27_20.1 [concrete = constants.%T.binding.as_type.as.BitXorWith.impl.Op.c338c8.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.bound.loc27: <bound method> = bound_method %b.ref.loc27, %Op.ref.loc27
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.specific_fn.loc27: <specific function> = specific_function %Op.ref.loc27, @T.binding.as_type.as.BitXorWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.BitXorWith.impl.Op.specific_fn.125c34.2]
-// CHECK:STDOUT:   %bound_method.loc27_20.3: <bound method> = bound_method %b.ref.loc27, %T.binding.as_type.as.BitXorWith.impl.Op.specific_fn.loc27
-// CHECK:STDOUT:   %impl.elem0.loc27: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc27_18: <bound method> = bound_method %b.ref.loc27, %impl.elem0.loc27
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc27: init %Cpp.long = call %bound_method.loc27_18(%b.ref.loc27)
-// CHECK:STDOUT:   %.loc27_18.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc27
-// CHECK:STDOUT:   %.loc27_18.2: %Cpp.long = converted %b.ref.loc27, %.loc27_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.call.loc27: init %Cpp.long = call %bound_method.loc27_20.3(%.loc27_18.2, %a.ref.loc27_22)
-// CHECK:STDOUT:   %a.ref.loc27_25: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc27: <specific function> = specific_function %AssertSameType.ref.loc27, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc27_20.2: %Cpp.long = value_of_initializer %T.binding.as_type.as.BitXorWith.impl.Op.call.loc27
-// CHECK:STDOUT:   %.loc27_20.3: %Cpp.long = converted %T.binding.as_type.as.BitXorWith.impl.Op.call.loc27, %.loc27_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc27: init %empty_tuple.type = call %AssertSameType.specific_fn.loc27(%.loc27_20.3, %a.ref.loc27_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc28: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %b.ref.loc28: %i32 = name_ref b, %b
-// CHECK:STDOUT:   %a.ref.loc28_23: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %impl.elem1.loc28: %.509 = impl_witness_access constants.%LeftShiftWith.impl_witness.fb3, element1 [concrete = constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.c3e103.2]
-// CHECK:STDOUT:   %bound_method.loc28_20.1: <bound method> = bound_method %b.ref.loc28, %impl.elem1.loc28
-// CHECK:STDOUT:   %specific_fn.loc28: <specific function> = specific_function %impl.elem1.loc28, @T.binding.as_type.as.LeftShiftWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.specific_fn.547c25.1]
-// CHECK:STDOUT:   %bound_method.loc28_20.2: <bound method> = bound_method %b.ref.loc28, %specific_fn.loc28
-// CHECK:STDOUT:   %.loc28_20.1: %T.binding.as_type.as.LeftShiftWith.impl.Op.type.ab52f6.1 = specific_constant imports.%Core.Op.79e, @T.binding.as_type.as.LeftShiftWith.impl.b71(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.c3e103.1]
-// CHECK:STDOUT:   %Op.ref.loc28: %T.binding.as_type.as.LeftShiftWith.impl.Op.type.ab52f6.1 = name_ref Op, %.loc28_20.1 [concrete = constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.c3e103.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.bound.loc28: <bound method> = bound_method %b.ref.loc28, %Op.ref.loc28
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.specific_fn.loc28: <specific function> = specific_function %Op.ref.loc28, @T.binding.as_type.as.LeftShiftWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.specific_fn.547c25.2]
-// CHECK:STDOUT:   %bound_method.loc28_20.3: <bound method> = bound_method %b.ref.loc28, %T.binding.as_type.as.LeftShiftWith.impl.Op.specific_fn.loc28
-// CHECK:STDOUT:   %impl.elem0.loc28: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc28_18: <bound method> = bound_method %b.ref.loc28, %impl.elem0.loc28
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc28: init %Cpp.long = call %bound_method.loc28_18(%b.ref.loc28)
-// CHECK:STDOUT:   %.loc28_18.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc28
-// CHECK:STDOUT:   %.loc28_18.2: %Cpp.long = converted %b.ref.loc28, %.loc28_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.call.loc28: init %Cpp.long = call %bound_method.loc28_20.3(%.loc28_18.2, %a.ref.loc28_23)
-// CHECK:STDOUT:   %a.ref.loc28_26: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc28: <specific function> = specific_function %AssertSameType.ref.loc28, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc28_20.2: %Cpp.long = value_of_initializer %T.binding.as_type.as.LeftShiftWith.impl.Op.call.loc28
-// CHECK:STDOUT:   %.loc28_20.3: %Cpp.long = converted %T.binding.as_type.as.LeftShiftWith.impl.Op.call.loc28, %.loc28_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc28: init %empty_tuple.type = call %AssertSameType.specific_fn.loc28(%.loc28_20.3, %a.ref.loc28_26)
-// CHECK:STDOUT:   %AssertSameType.ref.loc29: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %b.ref.loc29: %i32 = name_ref b, %b
-// CHECK:STDOUT:   %a.ref.loc29_23: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %impl.elem1.loc29: %.9db = impl_witness_access constants.%RightShiftWith.impl_witness.7d0, element1 [concrete = constants.%T.binding.as_type.as.RightShiftWith.impl.Op.44dea2.2]
-// CHECK:STDOUT:   %bound_method.loc29_20.1: <bound method> = bound_method %b.ref.loc29, %impl.elem1.loc29
-// CHECK:STDOUT:   %specific_fn.loc29: <specific function> = specific_function %impl.elem1.loc29, @T.binding.as_type.as.RightShiftWith.impl.Op.1(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.RightShiftWith.impl.Op.specific_fn.888028.1]
-// CHECK:STDOUT:   %bound_method.loc29_20.2: <bound method> = bound_method %b.ref.loc29, %specific_fn.loc29
-// CHECK:STDOUT:   %.loc29_20.1: %T.binding.as_type.as.RightShiftWith.impl.Op.type.2fe33f.1 = specific_constant imports.%Core.Op.f2f, @T.binding.as_type.as.RightShiftWith.impl.28b(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.RightShiftWith.impl.Op.44dea2.1]
-// CHECK:STDOUT:   %Op.ref.loc29: %T.binding.as_type.as.RightShiftWith.impl.Op.type.2fe33f.1 = name_ref Op, %.loc29_20.1 [concrete = constants.%T.binding.as_type.as.RightShiftWith.impl.Op.44dea2.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.bound.loc29: <bound method> = bound_method %b.ref.loc29, %Op.ref.loc29
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.specific_fn.loc29: <specific function> = specific_function %Op.ref.loc29, @T.binding.as_type.as.RightShiftWith.impl.Op.2(constants.%ImplicitAs.facet.174) [concrete = constants.%T.binding.as_type.as.RightShiftWith.impl.Op.specific_fn.888028.2]
-// CHECK:STDOUT:   %bound_method.loc29_20.3: <bound method> = bound_method %b.ref.loc29, %T.binding.as_type.as.RightShiftWith.impl.Op.specific_fn.loc29
-// CHECK:STDOUT:   %impl.elem0.loc29: %.c45 = impl_witness_access constants.%ImplicitAs.impl_witness.0fc, element0 [concrete = constants.%i32.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc29_18: <bound method> = bound_method %b.ref.loc29, %impl.elem0.loc29
-// CHECK:STDOUT:   %i32.as.ImplicitAs.impl.Convert.call.loc29: init %Cpp.long = call %bound_method.loc29_18(%b.ref.loc29)
-// CHECK:STDOUT:   %.loc29_18.1: %Cpp.long = value_of_initializer %i32.as.ImplicitAs.impl.Convert.call.loc29
-// CHECK:STDOUT:   %.loc29_18.2: %Cpp.long = converted %b.ref.loc29, %.loc29_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.call.loc29: init %Cpp.long = call %bound_method.loc29_20.3(%.loc29_18.2, %a.ref.loc29_23)
-// CHECK:STDOUT:   %a.ref.loc29_26: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc29: <specific function> = specific_function %AssertSameType.ref.loc29, @AssertSameType(constants.%Cpp.long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc29_20.2: %Cpp.long = value_of_initializer %T.binding.as_type.as.RightShiftWith.impl.Op.call.loc29
-// CHECK:STDOUT:   %.loc29_20.3: %Cpp.long = converted %T.binding.as_type.as.RightShiftWith.impl.Op.call.loc29, %.loc29_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc29: init %empty_tuple.type = call %AssertSameType.specific_fn.loc29(%.loc29_20.3, %a.ref.loc29_26)
-// CHECK:STDOUT:   <elided>
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: --- bitwise_heterogeneous_long_and_i64.carbon
-// CHECK:STDOUT:
-// CHECK:STDOUT: constants {
-// CHECK:STDOUT:   %AssertSameType.type: type = fn_type @AssertSameType [concrete]
-// CHECK:STDOUT:   %empty_tuple.type: type = tuple_type () [concrete]
-// CHECK:STDOUT:   %AssertSameType: %AssertSameType.type = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long: type = class_type @Long32 [concrete]
-// CHECK:STDOUT:   %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic]
-// CHECK:STDOUT:   %Int.fc6021.1: type = class_type @Int, @Int(%N) [symbolic]
-// CHECK:STDOUT:   %pattern_type.68c: type = pattern_type %Cpp.long [concrete]
-// CHECK:STDOUT:   %int_1.5b8: Core.IntLiteral = int_value 1 [concrete]
-// CHECK:STDOUT:   %ImplicitAs.type.819: type = facet_type <@ImplicitAs, @ImplicitAs(%Cpp.long)> [concrete]
-// CHECK:STDOUT:   %ImplicitAs.Convert.type.4c2: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Cpp.long) [concrete]
-// CHECK:STDOUT:   %int_64: Core.IntLiteral = int_value 64 [concrete]
-// CHECK:STDOUT:   %i64: type = class_type @Int, @Int(%int_64) [concrete]
-// CHECK:STDOUT:   %ImplicitAs.type.2ad: type = facet_type <@ImplicitAs, @ImplicitAs(%i64)> [concrete]
-// CHECK:STDOUT:   %ImplicitAs.Convert.type.94e: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i64) [concrete]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness.2ce: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.903 [concrete]
-// CHECK:STDOUT:   %ImplicitAs.facet.eed: %ImplicitAs.type.819 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.2ce) [concrete]
-// CHECK:STDOUT:   %.dad: type = fn_type_with_self_type %ImplicitAs.Convert.type.4c2, %ImplicitAs.facet.eed [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.b38: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.1 [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.b38 = struct_value () [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8: <bound method> = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a [concrete]
-// CHECK:STDOUT:   %int_1.5a4: %Cpp.long = int_value 1 [concrete]
-// CHECK:STDOUT:   %pattern_type.95b: type = pattern_type %i64 [concrete]
-// CHECK:STDOUT:   %To: Core.IntLiteral = symbolic_binding To, 0 [symbolic]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.4e6: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.2, @Core.IntLiteral.as.ImplicitAs.impl.b2d(%To) [symbolic]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.3c2: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.4e6 = struct_value () [symbolic]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness.556: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.74f, @Core.IntLiteral.as.ImplicitAs.impl.b2d(%int_64) [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.b78: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.2, @Core.IntLiteral.as.ImplicitAs.impl.b2d(%int_64) [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.57d: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.b78 = struct_value () [concrete]
-// CHECK:STDOUT:   %ImplicitAs.facet.d48: %ImplicitAs.type.2ad = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.556) [concrete]
-// CHECK:STDOUT:   %.567: type = fn_type_with_self_type %ImplicitAs.Convert.type.94e, %ImplicitAs.facet.d48 [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.102: <bound method> = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.57d [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: <specific function> = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.57d, @Core.IntLiteral.as.ImplicitAs.impl.Convert.2(%int_64) [concrete]
-// CHECK:STDOUT:   %bound_method: <bound method> = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete]
-// CHECK:STDOUT:   %int_1.41a: %i64 = int_value 1 [concrete]
-// CHECK:STDOUT:   %BitAndWith.type.46b: type = facet_type <@BitAndWith, @BitAndWith(%i64)> [concrete]
-// CHECK:STDOUT:   %BitAndWith.Op.type.2e7: type = fn_type @BitAndWith.Op, @BitAndWith(%i64) [concrete]
-// CHECK:STDOUT:   %BitAndWith.type.0b5: type = facet_type <@BitAndWith, @BitAndWith(%Cpp.long)> [concrete]
-// CHECK:STDOUT:   %BitAndWith.Op.type.e13: type = fn_type @BitAndWith.Op, @BitAndWith(%Cpp.long) [concrete]
-// CHECK:STDOUT:   %ImplicitAs.type.39a54f.2: type = facet_type <@ImplicitAs, @ImplicitAs(%Int.fc6021.1)> [symbolic]
-// CHECK:STDOUT:   %U.354: %ImplicitAs.type.39a54f.2 = symbolic_binding U, 1 [symbolic]
-// CHECK:STDOUT:   %Int.as.BitAndWith.impl.Op.type.1b6537.1: type = fn_type @Int.as.BitAndWith.impl.Op.2, @Int.as.BitAndWith.impl.4ac(%N, %U.354) [symbolic]
-// CHECK:STDOUT:   %Int.as.BitAndWith.impl.Op.b9569a.1: %Int.as.BitAndWith.impl.Op.type.1b6537.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %Int.as.BitAndWith.impl.Op.type.1b6537.2: type = fn_type @Int.as.BitAndWith.impl.Op.3, @Int.as.BitAndWith.impl.4ac(%N, %U.354) [symbolic]
-// CHECK:STDOUT:   %Int.as.BitAndWith.impl.Op.b9569a.2: %Int.as.BitAndWith.impl.Op.type.1b6537.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %T.354: %ImplicitAs.type.39a54f.2 = symbolic_binding T, 1 [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.type.e95062.1: type = fn_type @T.binding.as_type.as.BitAndWith.impl.Op.5, @T.binding.as_type.as.BitAndWith.impl.96d(%N, %T.354) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.892c6d.1: %T.binding.as_type.as.BitAndWith.impl.Op.type.e95062.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.type.e95062.2: type = fn_type @T.binding.as_type.as.BitAndWith.impl.Op.6, @T.binding.as_type.as.BitAndWith.impl.96d(%N, %T.354) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.892c6d.2: %T.binding.as_type.as.BitAndWith.impl.Op.type.e95062.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness.bbc: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.cb1 [concrete]
-// CHECK:STDOUT:   %ImplicitAs.facet.ba4: %ImplicitAs.type.2ad = facet_value %Cpp.long, (%ImplicitAs.impl_witness.bbc) [concrete]
-// CHECK:STDOUT:   %BitAndWith.impl_witness.c6a: <witness> = impl_witness imports.%BitAndWith.impl_witness_table.5e7, @T.binding.as_type.as.BitAndWith.impl.96d(%int_64, %ImplicitAs.facet.ba4) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.type.7732f0.1: type = fn_type @T.binding.as_type.as.BitAndWith.impl.Op.6, @T.binding.as_type.as.BitAndWith.impl.96d(%int_64, %ImplicitAs.facet.ba4) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.12fb91.1: %T.binding.as_type.as.BitAndWith.impl.Op.type.7732f0.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.type.7732f0.2: type = fn_type @T.binding.as_type.as.BitAndWith.impl.Op.5, @T.binding.as_type.as.BitAndWith.impl.96d(%int_64, %ImplicitAs.facet.ba4) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.12fb91.2: %T.binding.as_type.as.BitAndWith.impl.Op.type.7732f0.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %BitAndWith.facet.bc4: %BitAndWith.type.46b = facet_value %Cpp.long, (%BitAndWith.impl_witness.c6a) [concrete]
-// CHECK:STDOUT:   %.656: type = fn_type_with_self_type %BitAndWith.Op.type.2e7, %BitAndWith.facet.bc4 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.d9a57f.1: <specific function> = specific_function %T.binding.as_type.as.BitAndWith.impl.Op.12fb91.2, @T.binding.as_type.as.BitAndWith.impl.Op.5(%int_64, %ImplicitAs.facet.ba4) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.d9a57f.2: <specific function> = specific_function %T.binding.as_type.as.BitAndWith.impl.Op.12fb91.1, @T.binding.as_type.as.BitAndWith.impl.Op.6(%int_64, %ImplicitAs.facet.ba4) [concrete]
-// CHECK:STDOUT:   %.8a2: type = fn_type_with_self_type %ImplicitAs.Convert.type.94e, %ImplicitAs.facet.ba4 [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.ImplicitAs.impl.Convert.type: type = fn_type @Cpp.long.as.ImplicitAs.impl.Convert [concrete]
-// CHECK:STDOUT:   %Cpp.long.as.ImplicitAs.impl.Convert: %Cpp.long.as.ImplicitAs.impl.Convert.type = struct_value () [concrete]
-// CHECK:STDOUT:   %AssertSameType.specific_fn: <specific function> = specific_function %AssertSameType, @AssertSameType(%i64) [concrete]
-// CHECK:STDOUT:   %BitAndWith.impl_witness.c34: <witness> = impl_witness imports.%BitAndWith.impl_witness_table.ebf, @Int.as.BitAndWith.impl.4ac(%int_64, %ImplicitAs.facet.ba4) [concrete]
-// CHECK:STDOUT:   %Int.as.BitAndWith.impl.Op.type.871ddc.1: type = fn_type @Int.as.BitAndWith.impl.Op.3, @Int.as.BitAndWith.impl.4ac(%int_64, %ImplicitAs.facet.ba4) [concrete]
-// CHECK:STDOUT:   %Int.as.BitAndWith.impl.Op.740875.1: %Int.as.BitAndWith.impl.Op.type.871ddc.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Int.as.BitAndWith.impl.Op.type.871ddc.2: type = fn_type @Int.as.BitAndWith.impl.Op.2, @Int.as.BitAndWith.impl.4ac(%int_64, %ImplicitAs.facet.ba4) [concrete]
-// CHECK:STDOUT:   %Int.as.BitAndWith.impl.Op.740875.2: %Int.as.BitAndWith.impl.Op.type.871ddc.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %BitAndWith.facet.a93: %BitAndWith.type.0b5 = facet_value %i64, (%BitAndWith.impl_witness.c34) [concrete]
-// CHECK:STDOUT:   %.29c: type = fn_type_with_self_type %BitAndWith.Op.type.e13, %BitAndWith.facet.a93 [concrete]
-// CHECK:STDOUT:   %Int.as.BitAndWith.impl.Op.specific_fn.7b1efb.1: <specific function> = specific_function %Int.as.BitAndWith.impl.Op.740875.2, @Int.as.BitAndWith.impl.Op.2(%int_64, %ImplicitAs.facet.ba4) [concrete]
-// CHECK:STDOUT:   %Int.as.BitAndWith.impl.Op.specific_fn.7b1efb.2: <specific function> = specific_function %Int.as.BitAndWith.impl.Op.740875.1, @Int.as.BitAndWith.impl.Op.3(%int_64, %ImplicitAs.facet.ba4) [concrete]
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %Cpp: <namespace> = namespace file.%Cpp.import_cpp, [concrete] {
-// CHECK:STDOUT:     .long = constants.%Cpp.long
-// CHECK:STDOUT:     import Cpp//...
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %Core.import_ref.b8a: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.b38 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness_table.903 = impl_witness_table (%Core.import_ref.b8a), @Core.IntLiteral.as.ImplicitAs.impl.052 [concrete]
-// CHECK:STDOUT:   %Core.import_ref.42d: @Core.IntLiteral.as.ImplicitAs.impl.b2d.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.4e6) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.b2d.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3c2)]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness_table.74f = impl_witness_table (%Core.import_ref.42d), @Core.IntLiteral.as.ImplicitAs.impl.b2d [concrete]
-// CHECK:STDOUT:   %Core.import_ref.475cb3.2 = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.611: @Int.as.BitAndWith.impl.4ac.%Int.as.BitAndWith.impl.Op.type.2 (%Int.as.BitAndWith.impl.Op.type.1b6537.1) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.BitAndWith.impl.4ac.%Int.as.BitAndWith.impl.Op.2 (constants.%Int.as.BitAndWith.impl.Op.b9569a.1)]
-// CHECK:STDOUT:   %BitAndWith.impl_witness_table.ebf = impl_witness_table (%Core.import_ref.475cb3.2, %Core.import_ref.611), @Int.as.BitAndWith.impl.4ac [concrete]
-// CHECK:STDOUT:   %Core.Op.36f: @Int.as.BitAndWith.impl.4ac.%Int.as.BitAndWith.impl.Op.type.1 (%Int.as.BitAndWith.impl.Op.type.1b6537.2) = import_ref Core//prelude/types/int, Op, loaded [symbolic = @Int.as.BitAndWith.impl.4ac.%Int.as.BitAndWith.impl.Op.1 (constants.%Int.as.BitAndWith.impl.Op.b9569a.2)]
-// CHECK:STDOUT:   %Core.import_ref.475cb3.3 = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.29d: @T.binding.as_type.as.BitAndWith.impl.96d.%T.binding.as_type.as.BitAndWith.impl.Op.type.2 (%T.binding.as_type.as.BitAndWith.impl.Op.type.e95062.1) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @T.binding.as_type.as.BitAndWith.impl.96d.%T.binding.as_type.as.BitAndWith.impl.Op.2 (constants.%T.binding.as_type.as.BitAndWith.impl.Op.892c6d.1)]
-// CHECK:STDOUT:   %BitAndWith.impl_witness_table.5e7 = impl_witness_table (%Core.import_ref.475cb3.3, %Core.import_ref.29d), @T.binding.as_type.as.BitAndWith.impl.96d [concrete]
-// CHECK:STDOUT:   %Core.Op.944: @T.binding.as_type.as.BitAndWith.impl.96d.%T.binding.as_type.as.BitAndWith.impl.Op.type.1 (%T.binding.as_type.as.BitAndWith.impl.Op.type.e95062.2) = import_ref Core//prelude/types/int, Op, loaded [symbolic = @T.binding.as_type.as.BitAndWith.impl.96d.%T.binding.as_type.as.BitAndWith.impl.Op.1 (constants.%T.binding.as_type.as.BitAndWith.impl.Op.892c6d.2)]
-// CHECK:STDOUT:   %Core.import_ref.297: %Cpp.long.as.ImplicitAs.impl.Convert.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness_table.cb1 = impl_witness_table (%Core.import_ref.297), @Cpp.long.as.ImplicitAs.impl.e6d [concrete]
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: fn @BitWiseHeterogeneousLongAndI64() {
-// CHECK:STDOUT: !entry:
-// CHECK:STDOUT:   name_binding_decl {
-// CHECK:STDOUT:     %a.patt: %pattern_type.68c = value_binding_pattern a [concrete]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %int_1.loc10: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %.loc10_13: type = splice_block %long.ref [concrete = constants.%Cpp.long] {
-// CHECK:STDOUT:     %Cpp.ref: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
-// CHECK:STDOUT:     %long.ref: type = name_ref long, constants.%Cpp.long [concrete = constants.%Cpp.long]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %impl.elem0.loc10: %.dad = impl_witness_access constants.%ImplicitAs.impl_witness.2ce, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f2a]
-// CHECK:STDOUT:   %bound_method.loc10: <bound method> = bound_method %int_1.loc10, %impl.elem0.loc10 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.cc8]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10: init %Cpp.long = call %bound_method.loc10(%int_1.loc10) [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc10_21.1: %Cpp.long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %.loc10_21.2: %Cpp.long = converted %int_1.loc10, %.loc10_21.1 [concrete = constants.%int_1.5a4]
-// CHECK:STDOUT:   %a: %Cpp.long = value_binding a, %.loc10_21.2
-// CHECK:STDOUT:   name_binding_decl {
-// CHECK:STDOUT:     %b.patt: %pattern_type.95b = value_binding_pattern b [concrete]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %int_1.loc11: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %.loc11_10: type = splice_block %i64 [concrete = constants.%i64] {
-// CHECK:STDOUT:     %int_64: Core.IntLiteral = int_value 64 [concrete = constants.%int_64]
-// CHECK:STDOUT:     %i64: type = class_type @Int, @Int(constants.%int_64) [concrete = constants.%i64]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %impl.elem0.loc11: %.567 = impl_witness_access constants.%ImplicitAs.impl_witness.556, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.57d]
-// CHECK:STDOUT:   %bound_method.loc11_16.1: <bound method> = bound_method %int_1.loc11, %impl.elem0.loc11 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.102]
-// CHECK:STDOUT:   %specific_fn.loc11: <specific function> = specific_function %impl.elem0.loc11, @Core.IntLiteral.as.ImplicitAs.impl.Convert.2(constants.%int_64) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn]
-// CHECK:STDOUT:   %bound_method.loc11_16.2: <bound method> = bound_method %int_1.loc11, %specific_fn.loc11 [concrete = constants.%bound_method]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc11: init %i64 = call %bound_method.loc11_16.2(%int_1.loc11) [concrete = constants.%int_1.41a]
-// CHECK:STDOUT:   %.loc11_16.1: %i64 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc11 [concrete = constants.%int_1.41a]
-// CHECK:STDOUT:   %.loc11_16.2: %i64 = converted %int_1.loc11, %.loc11_16.1 [concrete = constants.%int_1.41a]
-// CHECK:STDOUT:   %b: %i64 = value_binding b, %.loc11_16.2
-// CHECK:STDOUT:   %AssertSameType.ref.loc13: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc13: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %b.ref.loc13_22: %i64 = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc13: %.656 = impl_witness_access constants.%BitAndWith.impl_witness.c6a, element1 [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.12fb91.2]
-// CHECK:STDOUT:   %bound_method.loc13_20.1: <bound method> = bound_method %a.ref.loc13, %impl.elem1.loc13
-// CHECK:STDOUT:   %specific_fn.loc13: <specific function> = specific_function %impl.elem1.loc13, @T.binding.as_type.as.BitAndWith.impl.Op.5(constants.%int_64, constants.%ImplicitAs.facet.ba4) [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.d9a57f.1]
-// CHECK:STDOUT:   %bound_method.loc13_20.2: <bound method> = bound_method %a.ref.loc13, %specific_fn.loc13
-// CHECK:STDOUT:   %.loc13_20.1: %T.binding.as_type.as.BitAndWith.impl.Op.type.7732f0.1 = specific_constant imports.%Core.Op.944, @T.binding.as_type.as.BitAndWith.impl.96d(constants.%int_64, constants.%ImplicitAs.facet.ba4) [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.12fb91.1]
-// CHECK:STDOUT:   %Op.ref.loc13: %T.binding.as_type.as.BitAndWith.impl.Op.type.7732f0.1 = name_ref Op, %.loc13_20.1 [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.12fb91.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.bound: <bound method> = bound_method %a.ref.loc13, %Op.ref.loc13
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.specific_fn: <specific function> = specific_function %Op.ref.loc13, @T.binding.as_type.as.BitAndWith.impl.Op.6(constants.%int_64, constants.%ImplicitAs.facet.ba4) [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.d9a57f.2]
-// CHECK:STDOUT:   %bound_method.loc13_20.3: <bound method> = bound_method %a.ref.loc13, %T.binding.as_type.as.BitAndWith.impl.Op.specific_fn
-// CHECK:STDOUT:   %impl.elem0.loc13: %.8a2 = impl_witness_access constants.%ImplicitAs.impl_witness.bbc, element0 [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc13_18: <bound method> = bound_method %a.ref.loc13, %impl.elem0.loc13
-// CHECK:STDOUT:   %Cpp.long.as.ImplicitAs.impl.Convert.call.loc13: init %i64 = call %bound_method.loc13_18(%a.ref.loc13)
-// CHECK:STDOUT:   %.loc13_18.1: %i64 = value_of_initializer %Cpp.long.as.ImplicitAs.impl.Convert.call.loc13
-// CHECK:STDOUT:   %.loc13_18.2: %i64 = converted %a.ref.loc13, %.loc13_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.call: init %i64 = call %bound_method.loc13_20.3(%.loc13_18.2, %b.ref.loc13_22)
-// CHECK:STDOUT:   %b.ref.loc13_25: %i64 = name_ref b, %b
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc13: <specific function> = specific_function %AssertSameType.ref.loc13, @AssertSameType(constants.%i64) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc13_20.2: %i64 = value_of_initializer %T.binding.as_type.as.BitAndWith.impl.Op.call
-// CHECK:STDOUT:   %.loc13_20.3: %i64 = converted %T.binding.as_type.as.BitAndWith.impl.Op.call, %.loc13_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc13: init %empty_tuple.type = call %AssertSameType.specific_fn.loc13(%.loc13_20.3, %b.ref.loc13_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc14: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %b.ref.loc14_18: %i64 = name_ref b, %b
-// CHECK:STDOUT:   %a.ref.loc14: %Cpp.long = name_ref a, %a
-// CHECK:STDOUT:   %impl.elem1.loc14: %.29c = impl_witness_access constants.%BitAndWith.impl_witness.c34, element1 [concrete = constants.%Int.as.BitAndWith.impl.Op.740875.2]
-// CHECK:STDOUT:   %bound_method.loc14_20.1: <bound method> = bound_method %b.ref.loc14_18, %impl.elem1.loc14
-// CHECK:STDOUT:   %specific_fn.loc14: <specific function> = specific_function %impl.elem1.loc14, @Int.as.BitAndWith.impl.Op.2(constants.%int_64, constants.%ImplicitAs.facet.ba4) [concrete = constants.%Int.as.BitAndWith.impl.Op.specific_fn.7b1efb.1]
-// CHECK:STDOUT:   %bound_method.loc14_20.2: <bound method> = bound_method %b.ref.loc14_18, %specific_fn.loc14
-// CHECK:STDOUT:   %.loc14_20.1: %Int.as.BitAndWith.impl.Op.type.871ddc.1 = specific_constant imports.%Core.Op.36f, @Int.as.BitAndWith.impl.4ac(constants.%int_64, constants.%ImplicitAs.facet.ba4) [concrete = constants.%Int.as.BitAndWith.impl.Op.740875.1]
-// CHECK:STDOUT:   %Op.ref.loc14: %Int.as.BitAndWith.impl.Op.type.871ddc.1 = name_ref Op, %.loc14_20.1 [concrete = constants.%Int.as.BitAndWith.impl.Op.740875.1]
-// CHECK:STDOUT:   %Int.as.BitAndWith.impl.Op.bound: <bound method> = bound_method %b.ref.loc14_18, %Op.ref.loc14
-// CHECK:STDOUT:   %Int.as.BitAndWith.impl.Op.specific_fn: <specific function> = specific_function %Op.ref.loc14, @Int.as.BitAndWith.impl.Op.3(constants.%int_64, constants.%ImplicitAs.facet.ba4) [concrete = constants.%Int.as.BitAndWith.impl.Op.specific_fn.7b1efb.2]
-// CHECK:STDOUT:   %bound_method.loc14_20.3: <bound method> = bound_method %b.ref.loc14_18, %Int.as.BitAndWith.impl.Op.specific_fn
-// CHECK:STDOUT:   %impl.elem0.loc14: %.8a2 = impl_witness_access constants.%ImplicitAs.impl_witness.bbc, element0 [concrete = constants.%Cpp.long.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc14_22: <bound method> = bound_method %a.ref.loc14, %impl.elem0.loc14
-// CHECK:STDOUT:   %Cpp.long.as.ImplicitAs.impl.Convert.call.loc14: init %i64 = call %bound_method.loc14_22(%a.ref.loc14)
-// CHECK:STDOUT:   %.loc14_22.1: %i64 = value_of_initializer %Cpp.long.as.ImplicitAs.impl.Convert.call.loc14
-// CHECK:STDOUT:   %.loc14_22.2: %i64 = converted %a.ref.loc14, %.loc14_22.1
-// CHECK:STDOUT:   %Int.as.BitAndWith.impl.Op.call: init %i64 = call %bound_method.loc14_20.3(%b.ref.loc14_18, %.loc14_22.2)
-// CHECK:STDOUT:   %b.ref.loc14_25: %i64 = name_ref b, %b
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc14: <specific function> = specific_function %AssertSameType.ref.loc14, @AssertSameType(constants.%i64) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc14_20.2: %i64 = value_of_initializer %Int.as.BitAndWith.impl.Op.call
-// CHECK:STDOUT:   %.loc14_20.3: %i64 = converted %Int.as.BitAndWith.impl.Op.call, %.loc14_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc14: init %empty_tuple.type = call %AssertSameType.specific_fn.loc14(%.loc14_20.3, %b.ref.loc14_25)
-// CHECK:STDOUT:   <elided>
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
 // CHECK:STDOUT: --- compound_assignment_homogeneous_long.carbon
 // CHECK:STDOUT:
 // CHECK:STDOUT: constants {

+ 0 - 3328
toolchain/check/testdata/interop/cpp/builtins.lp64.carbon

@@ -250,7 +250,6 @@ import Cpp;
 fn AssertSameType[T:! type](a: T, b: T) {}
 
 fn ArithmeticHomogeneousLongLong() {
-  //@dump-sem-ir-begin
   let x: Cpp.long_long = 1;
   let y: Cpp.long_long = 1;
 
@@ -260,7 +259,6 @@ fn ArithmeticHomogeneousLongLong() {
   AssertSameType(x * y, x);
   AssertSameType(x / y, x);
   AssertSameType(x % y, x);
-  //@dump-sem-ir-end
 }
 
 // --- arithmetic_heterogeneous_long_long_left_side.carbon
@@ -273,7 +271,6 @@ fn AssertSameType[T:! type](a: T, b: T) {}
 
 fn ArithmeticHeterogeneousLongLongLeftSide() {
   let b: i64 = 1;
-  //@dump-sem-ir-begin
   let x: Cpp.long_long = 1;
 
   AssertSameType(x + b, x);
@@ -294,7 +291,6 @@ fn ArithmeticHeterogeneousLongLongLeftSide() {
   AssertSameType(x * y, x);
   AssertSameType(x / y, x);
   AssertSameType(x % y, x);
-  //@dump-sem-ir-end
 }
 
 // --- arithmetic_heterogeneous_long_long_right_side.carbon
@@ -307,7 +303,6 @@ fn AssertSameType[T:! type](a: T, b: T) {}
 
 fn ArithmeticHeterogeneousLongLongRightSide() {
   let b: i64 = 1;
-  //@dump-sem-ir-begin
   let x: Cpp.long_long = 1;
   AssertSameType(b + x, x);
   AssertSameType(b - x, x);
@@ -327,7 +322,6 @@ fn ArithmeticHeterogeneousLongLongRightSide() {
   AssertSameType(y * x, x);
   AssertSameType(y / x, x);
   AssertSameType(y % x, x);
-  //@dump-sem-ir-end
 }
 
 // --- fail_todo_arithmetic_heterogeneous_long_long_and_i32.carbon
@@ -363,12 +357,10 @@ import Cpp;
 fn AssertSameType[T:! type](a: T, b: T) {}
 
 fn ArithmeticHeterogeneousLongLongAndI128() {
-  //@dump-sem-ir-begin
   let x: Cpp.long_long = 1;
   let y: i128 = 1;
   AssertSameType(x + y, y);
   AssertSameType(y + x, y);
-  //@dump-sem-ir-end
 }
 
 // --- bitwise_homogeneous_long_long.carbon
@@ -380,7 +372,6 @@ import Cpp;
 fn AssertSameType[T:! type](a: T, b: T) {}
 
 fn BitWiseHomogeneousLongLong() {
-  //@dump-sem-ir-begin
   let a: Cpp.long_long = 1;
   let b: Cpp.long_long = 1;
 
@@ -390,7 +381,6 @@ fn BitWiseHomogeneousLongLong() {
   AssertSameType(a ^ b, a);
   AssertSameType(a << b, a);
   AssertSameType(a >> b, a);
-  //@dump-sem-ir-end
 }
 
 // --- bitwise_heterogeneous_long_long_left_side.carbon
@@ -403,7 +393,6 @@ fn AssertSameType[T:! type](a: T, b: T) {}
 
 fn BitWiseHeterogeneousLongLongLeftSide() {
   let b: i64 = 1;
-  //@dump-sem-ir-begin
   let a: Cpp.long_long = 1;
 
   AssertSameType(a & b, a);
@@ -423,7 +412,6 @@ fn BitWiseHeterogeneousLongLongLeftSide() {
   AssertSameType(a ^ b, a);
   AssertSameType(a << b, a);
   AssertSameType(a >> b, a);
-  //@dump-sem-ir-end
 }
 
 // --- bitwise_heterogeneous_long_long_right_side.carbon
@@ -436,7 +424,6 @@ fn AssertSameType[T:! type](a: T, b: T) {}
 
 fn BitWiseHeterogeneousLongLongRightSide() {
   let b: i64 = 1;
-  //@dump-sem-ir-begin
   let a: Cpp.long_long = 1;
 
   AssertSameType(b & a, a);
@@ -456,7 +443,6 @@ fn BitWiseHeterogeneousLongLongRightSide() {
   AssertSameType(b ^ a, a);
   AssertSameType(b << a, a);
   AssertSameType(b >> a, a);
-  //@dump-sem-ir-end
 }
 
 // --- fail_todo_bitwise_heterogeneous_long_long_and_i32.carbon
@@ -492,13 +478,11 @@ import Cpp;
 fn AssertSameType[T:! type](a: T, b: T) {}
 
 fn BitWiseHeterogeneousLongLongAndI128() {
-  //@dump-sem-ir-begin
   let a: Cpp.long_long = 1;
   let b: i128 = 1;
 
   AssertSameType(a & b, b);
   AssertSameType(b & a, b);
-  //@dump-sem-ir-end
 }
 
 // --- compound_assignment_homogeneous_long_long.carbon
@@ -2681,3318 +2665,6 @@ fn CopyUnsignedLongLong() {
 // CHECK:STDOUT:   <elided>
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
-// CHECK:STDOUT: --- arithmetic_homogeneous_long_long.carbon
-// CHECK:STDOUT:
-// CHECK:STDOUT: constants {
-// CHECK:STDOUT:   %AssertSameType.type: type = fn_type @AssertSameType [concrete]
-// CHECK:STDOUT:   %empty_tuple.type: type = tuple_type () [concrete]
-// CHECK:STDOUT:   %AssertSameType: %AssertSameType.type = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long_long: type = class_type @LongLong64 [concrete]
-// CHECK:STDOUT:   %pattern_type.76e: type = pattern_type %Cpp.long_long [concrete]
-// CHECK:STDOUT:   %int_1.5b8: Core.IntLiteral = int_value 1 [concrete]
-// CHECK:STDOUT:   %ImplicitAs.type.a03: type = facet_type <@ImplicitAs, @ImplicitAs(%Cpp.long_long)> [concrete]
-// CHECK:STDOUT:   %ImplicitAs.Convert.type.6e4: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Cpp.long_long) [concrete]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness.82e: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.896 [concrete]
-// CHECK:STDOUT:   %ImplicitAs.facet: %ImplicitAs.type.a03 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.82e) [concrete]
-// CHECK:STDOUT:   %.a93: type = fn_type_with_self_type %ImplicitAs.Convert.type.6e4, %ImplicitAs.facet [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.type: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type = struct_value () [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: <bound method> = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert [concrete]
-// CHECK:STDOUT:   %int_1.092: %Cpp.long_long = int_value 1 [concrete]
-// CHECK:STDOUT:   %Negate.type: type = facet_type <@Negate> [concrete]
-// CHECK:STDOUT:   %Negate.Op.type: type = fn_type @Negate.Op [concrete]
-// CHECK:STDOUT:   %Negate.impl_witness: <witness> = impl_witness imports.%Negate.impl_witness_table [concrete]
-// CHECK:STDOUT:   %Negate.facet: %Negate.type = facet_value %Cpp.long_long, (%Negate.impl_witness) [concrete]
-// CHECK:STDOUT:   %.b75: type = fn_type_with_self_type %Negate.Op.type, %Negate.facet [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.Negate.impl.Op.type: type = fn_type @Cpp.long_long.as.Negate.impl.Op [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.Negate.impl.Op: %Cpp.long_long.as.Negate.impl.Op.type = struct_value () [concrete]
-// CHECK:STDOUT:   %AssertSameType.specific_fn: <specific function> = specific_function %AssertSameType, @AssertSameType(%Cpp.long_long) [concrete]
-// CHECK:STDOUT:   %AddWith.type.e97: type = facet_type <@AddWith, @AddWith(%Cpp.long_long)> [concrete]
-// CHECK:STDOUT:   %AddWith.Op.type.4a8: type = fn_type @AddWith.Op, @AddWith(%Cpp.long_long) [concrete]
-// CHECK:STDOUT:   %AddWith.impl_witness.006: <witness> = impl_witness imports.%AddWith.impl_witness_table.820 [concrete]
-// CHECK:STDOUT:   %AddWith.facet: %AddWith.type.e97 = facet_value %Cpp.long_long, (%AddWith.impl_witness.006) [concrete]
-// CHECK:STDOUT:   %.ea0: type = fn_type_with_self_type %AddWith.Op.type.4a8, %AddWith.facet [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.AddWith.impl.Op.type.4c8: type = fn_type @Cpp.long_long.as.AddWith.impl.Op.3 [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.AddWith.impl.Op.bab: %Cpp.long_long.as.AddWith.impl.Op.type.4c8 = struct_value () [concrete]
-// CHECK:STDOUT:   %SubWith.type.172: type = facet_type <@SubWith, @SubWith(%Cpp.long_long)> [concrete]
-// CHECK:STDOUT:   %SubWith.Op.type.929: type = fn_type @SubWith.Op, @SubWith(%Cpp.long_long) [concrete]
-// CHECK:STDOUT:   %SubWith.impl_witness.653: <witness> = impl_witness imports.%SubWith.impl_witness_table.ea2 [concrete]
-// CHECK:STDOUT:   %SubWith.facet: %SubWith.type.172 = facet_value %Cpp.long_long, (%SubWith.impl_witness.653) [concrete]
-// CHECK:STDOUT:   %.134: type = fn_type_with_self_type %SubWith.Op.type.929, %SubWith.facet [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.SubWith.impl.Op.type.d1e: type = fn_type @Cpp.long_long.as.SubWith.impl.Op.3 [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.SubWith.impl.Op.d4c: %Cpp.long_long.as.SubWith.impl.Op.type.d1e = struct_value () [concrete]
-// CHECK:STDOUT:   %MulWith.type.693: type = facet_type <@MulWith, @MulWith(%Cpp.long_long)> [concrete]
-// CHECK:STDOUT:   %MulWith.Op.type.1a1: type = fn_type @MulWith.Op, @MulWith(%Cpp.long_long) [concrete]
-// CHECK:STDOUT:   %MulWith.impl_witness.655: <witness> = impl_witness imports.%MulWith.impl_witness_table.4c5 [concrete]
-// CHECK:STDOUT:   %MulWith.facet: %MulWith.type.693 = facet_value %Cpp.long_long, (%MulWith.impl_witness.655) [concrete]
-// CHECK:STDOUT:   %.1c5: type = fn_type_with_self_type %MulWith.Op.type.1a1, %MulWith.facet [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.MulWith.impl.Op.type.bae: type = fn_type @Cpp.long_long.as.MulWith.impl.Op.3 [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.MulWith.impl.Op.48e: %Cpp.long_long.as.MulWith.impl.Op.type.bae = struct_value () [concrete]
-// CHECK:STDOUT:   %DivWith.type.f07: type = facet_type <@DivWith, @DivWith(%Cpp.long_long)> [concrete]
-// CHECK:STDOUT:   %DivWith.Op.type.ccd: type = fn_type @DivWith.Op, @DivWith(%Cpp.long_long) [concrete]
-// CHECK:STDOUT:   %DivWith.impl_witness.d45: <witness> = impl_witness imports.%DivWith.impl_witness_table.552 [concrete]
-// CHECK:STDOUT:   %DivWith.facet: %DivWith.type.f07 = facet_value %Cpp.long_long, (%DivWith.impl_witness.d45) [concrete]
-// CHECK:STDOUT:   %.3ea: type = fn_type_with_self_type %DivWith.Op.type.ccd, %DivWith.facet [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.DivWith.impl.Op.type.29d: type = fn_type @Cpp.long_long.as.DivWith.impl.Op.3 [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.DivWith.impl.Op.8e4: %Cpp.long_long.as.DivWith.impl.Op.type.29d = struct_value () [concrete]
-// CHECK:STDOUT:   %ModWith.type.b3d: type = facet_type <@ModWith, @ModWith(%Cpp.long_long)> [concrete]
-// CHECK:STDOUT:   %ModWith.Op.type.9b8: type = fn_type @ModWith.Op, @ModWith(%Cpp.long_long) [concrete]
-// CHECK:STDOUT:   %ModWith.impl_witness.32d: <witness> = impl_witness imports.%ModWith.impl_witness_table.568 [concrete]
-// CHECK:STDOUT:   %ModWith.facet: %ModWith.type.b3d = facet_value %Cpp.long_long, (%ModWith.impl_witness.32d) [concrete]
-// CHECK:STDOUT:   %.161: type = fn_type_with_self_type %ModWith.Op.type.9b8, %ModWith.facet [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.ModWith.impl.Op.type.176: type = fn_type @Cpp.long_long.as.ModWith.impl.Op.3 [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.ModWith.impl.Op.d4a: %Cpp.long_long.as.ModWith.impl.Op.type.176 = struct_value () [concrete]
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %Cpp: <namespace> = namespace file.%Cpp.import_cpp, [concrete] {
-// CHECK:STDOUT:     .long_long = constants.%Cpp.long_long
-// CHECK:STDOUT:     import Cpp//...
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %Core.import_ref.d64: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness_table.896 = impl_witness_table (%Core.import_ref.d64), @Core.IntLiteral.as.ImplicitAs.impl.a26 [concrete]
-// CHECK:STDOUT:   %Core.import_ref.ce3a05.1 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.db2: %Cpp.long_long.as.Negate.impl.Op.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long_long.as.Negate.impl.Op]
-// CHECK:STDOUT:   %Negate.impl_witness_table = impl_witness_table (%Core.import_ref.ce3a05.1, %Core.import_ref.db2), @Cpp.long_long.as.Negate.impl [concrete]
-// CHECK:STDOUT:   %Core.import_ref.ce3a05.4 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.c5f: %Cpp.long_long.as.AddWith.impl.Op.type.4c8 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long_long.as.AddWith.impl.Op.bab]
-// CHECK:STDOUT:   %AddWith.impl_witness_table.820 = impl_witness_table (%Core.import_ref.ce3a05.4, %Core.import_ref.c5f), @Cpp.long_long.as.AddWith.impl.085 [concrete]
-// CHECK:STDOUT:   %Core.import_ref.ce3a05.7 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.4c0: %Cpp.long_long.as.SubWith.impl.Op.type.d1e = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long_long.as.SubWith.impl.Op.d4c]
-// CHECK:STDOUT:   %SubWith.impl_witness_table.ea2 = impl_witness_table (%Core.import_ref.ce3a05.7, %Core.import_ref.4c0), @Cpp.long_long.as.SubWith.impl.996 [concrete]
-// CHECK:STDOUT:   %Core.import_ref.ce3a05.10 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.243: %Cpp.long_long.as.MulWith.impl.Op.type.bae = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long_long.as.MulWith.impl.Op.48e]
-// CHECK:STDOUT:   %MulWith.impl_witness_table.4c5 = impl_witness_table (%Core.import_ref.ce3a05.10, %Core.import_ref.243), @Cpp.long_long.as.MulWith.impl.03b [concrete]
-// CHECK:STDOUT:   %Core.import_ref.ce3a05.13 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.44c: %Cpp.long_long.as.DivWith.impl.Op.type.29d = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long_long.as.DivWith.impl.Op.8e4]
-// CHECK:STDOUT:   %DivWith.impl_witness_table.552 = impl_witness_table (%Core.import_ref.ce3a05.13, %Core.import_ref.44c), @Cpp.long_long.as.DivWith.impl.0e8 [concrete]
-// CHECK:STDOUT:   %Core.import_ref.ce3a05.16 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.302: %Cpp.long_long.as.ModWith.impl.Op.type.176 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long_long.as.ModWith.impl.Op.d4a]
-// CHECK:STDOUT:   %ModWith.impl_witness_table.568 = impl_witness_table (%Core.import_ref.ce3a05.16, %Core.import_ref.302), @Cpp.long_long.as.ModWith.impl.0e9 [concrete]
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: fn @ArithmeticHomogeneousLongLong() {
-// CHECK:STDOUT: !entry:
-// CHECK:STDOUT:   name_binding_decl {
-// CHECK:STDOUT:     %x.patt: %pattern_type.76e = value_binding_pattern x [concrete]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %int_1.loc10: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %.loc10_13: type = splice_block %long_long.ref.loc10 [concrete = constants.%Cpp.long_long] {
-// CHECK:STDOUT:     %Cpp.ref.loc10: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
-// CHECK:STDOUT:     %long_long.ref.loc10: type = name_ref long_long, constants.%Cpp.long_long [concrete = constants.%Cpp.long_long]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %impl.elem0.loc10: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc10: <bound method> = bound_method %int_1.loc10, %impl.elem0.loc10 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10: init %Cpp.long_long = call %bound_method.loc10(%int_1.loc10) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc10_26.1: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc10_26.2: %Cpp.long_long = converted %int_1.loc10, %.loc10_26.1 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %x: %Cpp.long_long = value_binding x, %.loc10_26.2
-// CHECK:STDOUT:   name_binding_decl {
-// CHECK:STDOUT:     %y.patt: %pattern_type.76e = value_binding_pattern y [concrete]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %int_1.loc11: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %.loc11_13: type = splice_block %long_long.ref.loc11 [concrete = constants.%Cpp.long_long] {
-// CHECK:STDOUT:     %Cpp.ref.loc11: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
-// CHECK:STDOUT:     %long_long.ref.loc11: type = name_ref long_long, constants.%Cpp.long_long [concrete = constants.%Cpp.long_long]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %impl.elem0.loc11: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc11: <bound method> = bound_method %int_1.loc11, %impl.elem0.loc11 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc11: init %Cpp.long_long = call %bound_method.loc11(%int_1.loc11) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc11_26.1: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc11 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc11_26.2: %Cpp.long_long = converted %int_1.loc11, %.loc11_26.1 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %y: %Cpp.long_long = value_binding y, %.loc11_26.2
-// CHECK:STDOUT:   %AssertSameType.ref.loc13: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc13_19: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %impl.elem1.loc13: %.b75 = impl_witness_access constants.%Negate.impl_witness, element1 [concrete = constants.%Cpp.long_long.as.Negate.impl.Op]
-// CHECK:STDOUT:   %bound_method.loc13: <bound method> = bound_method %x.ref.loc13_19, %impl.elem1.loc13
-// CHECK:STDOUT:   %Cpp.long_long.as.Negate.impl.Op.call: init %Cpp.long_long = call %bound_method.loc13(%x.ref.loc13_19)
-// CHECK:STDOUT:   %x.ref.loc13_22: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc13: <specific function> = specific_function %AssertSameType.ref.loc13, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc13_18.1: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.Negate.impl.Op.call
-// CHECK:STDOUT:   %.loc13_18.2: %Cpp.long_long = converted %Cpp.long_long.as.Negate.impl.Op.call, %.loc13_18.1
-// CHECK:STDOUT:   %AssertSameType.call.loc13: init %empty_tuple.type = call %AssertSameType.specific_fn.loc13(%.loc13_18.2, %x.ref.loc13_22)
-// CHECK:STDOUT:   %AssertSameType.ref.loc14: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc14_18: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %y.ref.loc14: %Cpp.long_long = name_ref y, %y
-// CHECK:STDOUT:   %impl.elem1.loc14: %.ea0 = impl_witness_access constants.%AddWith.impl_witness.006, element1 [concrete = constants.%Cpp.long_long.as.AddWith.impl.Op.bab]
-// CHECK:STDOUT:   %bound_method.loc14: <bound method> = bound_method %x.ref.loc14_18, %impl.elem1.loc14
-// CHECK:STDOUT:   %Cpp.long_long.as.AddWith.impl.Op.call: init %Cpp.long_long = call %bound_method.loc14(%x.ref.loc14_18, %y.ref.loc14)
-// CHECK:STDOUT:   %x.ref.loc14_25: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc14: <specific function> = specific_function %AssertSameType.ref.loc14, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc14_20.1: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.AddWith.impl.Op.call
-// CHECK:STDOUT:   %.loc14_20.2: %Cpp.long_long = converted %Cpp.long_long.as.AddWith.impl.Op.call, %.loc14_20.1
-// CHECK:STDOUT:   %AssertSameType.call.loc14: init %empty_tuple.type = call %AssertSameType.specific_fn.loc14(%.loc14_20.2, %x.ref.loc14_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc15: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc15_18: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %y.ref.loc15: %Cpp.long_long = name_ref y, %y
-// CHECK:STDOUT:   %impl.elem1.loc15: %.134 = impl_witness_access constants.%SubWith.impl_witness.653, element1 [concrete = constants.%Cpp.long_long.as.SubWith.impl.Op.d4c]
-// CHECK:STDOUT:   %bound_method.loc15: <bound method> = bound_method %x.ref.loc15_18, %impl.elem1.loc15
-// CHECK:STDOUT:   %Cpp.long_long.as.SubWith.impl.Op.call: init %Cpp.long_long = call %bound_method.loc15(%x.ref.loc15_18, %y.ref.loc15)
-// CHECK:STDOUT:   %x.ref.loc15_25: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc15: <specific function> = specific_function %AssertSameType.ref.loc15, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc15_20.1: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.SubWith.impl.Op.call
-// CHECK:STDOUT:   %.loc15_20.2: %Cpp.long_long = converted %Cpp.long_long.as.SubWith.impl.Op.call, %.loc15_20.1
-// CHECK:STDOUT:   %AssertSameType.call.loc15: init %empty_tuple.type = call %AssertSameType.specific_fn.loc15(%.loc15_20.2, %x.ref.loc15_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc16: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc16_18: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %y.ref.loc16: %Cpp.long_long = name_ref y, %y
-// CHECK:STDOUT:   %impl.elem1.loc16: %.1c5 = impl_witness_access constants.%MulWith.impl_witness.655, element1 [concrete = constants.%Cpp.long_long.as.MulWith.impl.Op.48e]
-// CHECK:STDOUT:   %bound_method.loc16: <bound method> = bound_method %x.ref.loc16_18, %impl.elem1.loc16
-// CHECK:STDOUT:   %Cpp.long_long.as.MulWith.impl.Op.call: init %Cpp.long_long = call %bound_method.loc16(%x.ref.loc16_18, %y.ref.loc16)
-// CHECK:STDOUT:   %x.ref.loc16_25: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc16: <specific function> = specific_function %AssertSameType.ref.loc16, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc16_20.1: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.MulWith.impl.Op.call
-// CHECK:STDOUT:   %.loc16_20.2: %Cpp.long_long = converted %Cpp.long_long.as.MulWith.impl.Op.call, %.loc16_20.1
-// CHECK:STDOUT:   %AssertSameType.call.loc16: init %empty_tuple.type = call %AssertSameType.specific_fn.loc16(%.loc16_20.2, %x.ref.loc16_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc17: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc17_18: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %y.ref.loc17: %Cpp.long_long = name_ref y, %y
-// CHECK:STDOUT:   %impl.elem1.loc17: %.3ea = impl_witness_access constants.%DivWith.impl_witness.d45, element1 [concrete = constants.%Cpp.long_long.as.DivWith.impl.Op.8e4]
-// CHECK:STDOUT:   %bound_method.loc17: <bound method> = bound_method %x.ref.loc17_18, %impl.elem1.loc17
-// CHECK:STDOUT:   %Cpp.long_long.as.DivWith.impl.Op.call: init %Cpp.long_long = call %bound_method.loc17(%x.ref.loc17_18, %y.ref.loc17)
-// CHECK:STDOUT:   %x.ref.loc17_25: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc17: <specific function> = specific_function %AssertSameType.ref.loc17, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc17_20.1: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.DivWith.impl.Op.call
-// CHECK:STDOUT:   %.loc17_20.2: %Cpp.long_long = converted %Cpp.long_long.as.DivWith.impl.Op.call, %.loc17_20.1
-// CHECK:STDOUT:   %AssertSameType.call.loc17: init %empty_tuple.type = call %AssertSameType.specific_fn.loc17(%.loc17_20.2, %x.ref.loc17_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc18: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc18_18: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %y.ref.loc18: %Cpp.long_long = name_ref y, %y
-// CHECK:STDOUT:   %impl.elem1.loc18: %.161 = impl_witness_access constants.%ModWith.impl_witness.32d, element1 [concrete = constants.%Cpp.long_long.as.ModWith.impl.Op.d4a]
-// CHECK:STDOUT:   %bound_method.loc18: <bound method> = bound_method %x.ref.loc18_18, %impl.elem1.loc18
-// CHECK:STDOUT:   %Cpp.long_long.as.ModWith.impl.Op.call: init %Cpp.long_long = call %bound_method.loc18(%x.ref.loc18_18, %y.ref.loc18)
-// CHECK:STDOUT:   %x.ref.loc18_25: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc18: <specific function> = specific_function %AssertSameType.ref.loc18, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc18_20.1: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.ModWith.impl.Op.call
-// CHECK:STDOUT:   %.loc18_20.2: %Cpp.long_long = converted %Cpp.long_long.as.ModWith.impl.Op.call, %.loc18_20.1
-// CHECK:STDOUT:   %AssertSameType.call.loc18: init %empty_tuple.type = call %AssertSameType.specific_fn.loc18(%.loc18_20.2, %x.ref.loc18_25)
-// CHECK:STDOUT:   <elided>
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: --- arithmetic_heterogeneous_long_long_left_side.carbon
-// CHECK:STDOUT:
-// CHECK:STDOUT: constants {
-// CHECK:STDOUT:   %AssertSameType.type: type = fn_type @AssertSameType [concrete]
-// CHECK:STDOUT:   %empty_tuple.type: type = tuple_type () [concrete]
-// CHECK:STDOUT:   %AssertSameType: %AssertSameType.type = struct_value () [concrete]
-// CHECK:STDOUT:   %int_64: Core.IntLiteral = int_value 64 [concrete]
-// CHECK:STDOUT:   %i64: type = class_type @Int, @Int(%int_64) [concrete]
-// CHECK:STDOUT:   %pattern_type.95b: type = pattern_type %i64 [concrete]
-// CHECK:STDOUT:   %int_1.5b8: Core.IntLiteral = int_value 1 [concrete]
-// CHECK:STDOUT:   %ImplicitAs.type.2ad: type = facet_type <@ImplicitAs, @ImplicitAs(%i64)> [concrete]
-// CHECK:STDOUT:   %ImplicitAs.Convert.type.94e: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i64) [concrete]
-// CHECK:STDOUT:   %To: Core.IntLiteral = symbolic_binding To, 0 [symbolic]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.4e6: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.1, @Core.IntLiteral.as.ImplicitAs.impl.b2d(%To) [symbolic]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.3c2: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.4e6 = struct_value () [symbolic]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness.556: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.74f, @Core.IntLiteral.as.ImplicitAs.impl.b2d(%int_64) [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.b78: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.1, @Core.IntLiteral.as.ImplicitAs.impl.b2d(%int_64) [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.57d: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.b78 = struct_value () [concrete]
-// CHECK:STDOUT:   %ImplicitAs.facet.d48: %ImplicitAs.type.2ad = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.556) [concrete]
-// CHECK:STDOUT:   %.567: type = fn_type_with_self_type %ImplicitAs.Convert.type.94e, %ImplicitAs.facet.d48 [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.102: <bound method> = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.57d [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: <specific function> = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.57d, @Core.IntLiteral.as.ImplicitAs.impl.Convert.1(%int_64) [concrete]
-// CHECK:STDOUT:   %bound_method: <bound method> = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete]
-// CHECK:STDOUT:   %int_1.41a: %i64 = int_value 1 [concrete]
-// CHECK:STDOUT:   %Cpp.long_long: type = class_type @LongLong64 [concrete]
-// CHECK:STDOUT:   %pattern_type.76e: type = pattern_type %Cpp.long_long [concrete]
-// CHECK:STDOUT:   %ImplicitAs.type.a03: type = facet_type <@ImplicitAs, @ImplicitAs(%Cpp.long_long)> [concrete]
-// CHECK:STDOUT:   %ImplicitAs.Convert.type.6e4: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Cpp.long_long) [concrete]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness.82e: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.896 [concrete]
-// CHECK:STDOUT:   %ImplicitAs.facet.d52: %ImplicitAs.type.a03 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.82e) [concrete]
-// CHECK:STDOUT:   %.a93: type = fn_type_with_self_type %ImplicitAs.Convert.type.6e4, %ImplicitAs.facet.d52 [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.aba: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.2 [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.a20: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.aba = struct_value () [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae: <bound method> = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.a20 [concrete]
-// CHECK:STDOUT:   %int_1.092: %Cpp.long_long = int_value 1 [concrete]
-// CHECK:STDOUT:   %AddWith.type.f83: type = facet_type <@AddWith, @AddWith(%i64)> [concrete]
-// CHECK:STDOUT:   %AddWith.Op.type.c7f: type = fn_type @AddWith.Op, @AddWith(%i64) [concrete]
-// CHECK:STDOUT:   %T.ea5: %ImplicitAs.type.a03 = symbolic_binding T, 0 [symbolic]
-// CHECK:STDOUT:   %Cpp.long_long.as.AddWith.impl.Op.type.b32b60.1: type = fn_type @Cpp.long_long.as.AddWith.impl.Op.1, @Cpp.long_long.as.AddWith.impl.2ad(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %Cpp.long_long.as.AddWith.impl.Op.8cdaa8.1: %Cpp.long_long.as.AddWith.impl.Op.type.b32b60.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %Cpp.long_long.as.AddWith.impl.Op.type.b32b60.2: type = fn_type @Cpp.long_long.as.AddWith.impl.Op.2, @Cpp.long_long.as.AddWith.impl.2ad(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %Cpp.long_long.as.AddWith.impl.Op.8cdaa8.2: %Cpp.long_long.as.AddWith.impl.Op.type.b32b60.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %AddWith.type.4c0: type = facet_type <@AddWith, @AddWith(Core.IntLiteral)> [concrete]
-// CHECK:STDOUT:   %AddWith.Op.type.0ee: type = fn_type @AddWith.Op, @AddWith(Core.IntLiteral) [concrete]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness.1b3: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.b19 [concrete]
-// CHECK:STDOUT:   %ImplicitAs.facet.c59: %ImplicitAs.type.a03 = facet_value %i64, (%ImplicitAs.impl_witness.1b3) [concrete]
-// CHECK:STDOUT:   %AddWith.impl_witness.24c: <witness> = impl_witness imports.%AddWith.impl_witness_table.a7c, @Cpp.long_long.as.AddWith.impl.2ad(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.AddWith.impl.Op.type.f5b88b.1: type = fn_type @Cpp.long_long.as.AddWith.impl.Op.2, @Cpp.long_long.as.AddWith.impl.2ad(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.AddWith.impl.Op.f65668.1: %Cpp.long_long.as.AddWith.impl.Op.type.f5b88b.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.AddWith.impl.Op.type.f5b88b.2: type = fn_type @Cpp.long_long.as.AddWith.impl.Op.1, @Cpp.long_long.as.AddWith.impl.2ad(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.AddWith.impl.Op.f65668.2: %Cpp.long_long.as.AddWith.impl.Op.type.f5b88b.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %AddWith.facet.275: %AddWith.type.f83 = facet_value %Cpp.long_long, (%AddWith.impl_witness.24c) [concrete]
-// CHECK:STDOUT:   %.1e9: type = fn_type_with_self_type %AddWith.Op.type.c7f, %AddWith.facet.275 [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.AddWith.impl.Op.specific_fn.be49b1.1: <specific function> = specific_function %Cpp.long_long.as.AddWith.impl.Op.f65668.2, @Cpp.long_long.as.AddWith.impl.Op.1(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %.b29: type = fn_type_with_self_type %ImplicitAs.Convert.type.6e4, %ImplicitAs.facet.c59 [concrete]
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.type: type = fn_type @i64.as.ImplicitAs.impl.Convert [concrete]
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert: %i64.as.ImplicitAs.impl.Convert.type = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.AddWith.impl.Op.specific_fn.be49b1.2: <specific function> = specific_function %Cpp.long_long.as.AddWith.impl.Op.f65668.1, @Cpp.long_long.as.AddWith.impl.Op.2(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %AssertSameType.specific_fn: <specific function> = specific_function %AssertSameType, @AssertSameType(%Cpp.long_long) [concrete]
-// CHECK:STDOUT:   %SubWith.type.089: type = facet_type <@SubWith, @SubWith(%i64)> [concrete]
-// CHECK:STDOUT:   %SubWith.Op.type.344: type = fn_type @SubWith.Op, @SubWith(%i64) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.SubWith.impl.Op.type.8c27c7.1: type = fn_type @Cpp.long_long.as.SubWith.impl.Op.1, @Cpp.long_long.as.SubWith.impl.182(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %Cpp.long_long.as.SubWith.impl.Op.58d0ca.1: %Cpp.long_long.as.SubWith.impl.Op.type.8c27c7.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %Cpp.long_long.as.SubWith.impl.Op.type.8c27c7.2: type = fn_type @Cpp.long_long.as.SubWith.impl.Op.2, @Cpp.long_long.as.SubWith.impl.182(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %Cpp.long_long.as.SubWith.impl.Op.58d0ca.2: %Cpp.long_long.as.SubWith.impl.Op.type.8c27c7.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %SubWith.type.a89: type = facet_type <@SubWith, @SubWith(Core.IntLiteral)> [concrete]
-// CHECK:STDOUT:   %SubWith.Op.type.95d: type = fn_type @SubWith.Op, @SubWith(Core.IntLiteral) [concrete]
-// CHECK:STDOUT:   %SubWith.impl_witness.07a: <witness> = impl_witness imports.%SubWith.impl_witness_table.741, @Cpp.long_long.as.SubWith.impl.182(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.SubWith.impl.Op.type.e1aaf1.1: type = fn_type @Cpp.long_long.as.SubWith.impl.Op.2, @Cpp.long_long.as.SubWith.impl.182(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.SubWith.impl.Op.85827a.1: %Cpp.long_long.as.SubWith.impl.Op.type.e1aaf1.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.SubWith.impl.Op.type.e1aaf1.2: type = fn_type @Cpp.long_long.as.SubWith.impl.Op.1, @Cpp.long_long.as.SubWith.impl.182(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.SubWith.impl.Op.85827a.2: %Cpp.long_long.as.SubWith.impl.Op.type.e1aaf1.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %SubWith.facet.8b1: %SubWith.type.089 = facet_value %Cpp.long_long, (%SubWith.impl_witness.07a) [concrete]
-// CHECK:STDOUT:   %.036: type = fn_type_with_self_type %SubWith.Op.type.344, %SubWith.facet.8b1 [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.SubWith.impl.Op.specific_fn.8f1b07.1: <specific function> = specific_function %Cpp.long_long.as.SubWith.impl.Op.85827a.2, @Cpp.long_long.as.SubWith.impl.Op.1(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.SubWith.impl.Op.specific_fn.8f1b07.2: <specific function> = specific_function %Cpp.long_long.as.SubWith.impl.Op.85827a.1, @Cpp.long_long.as.SubWith.impl.Op.2(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %MulWith.type.884: type = facet_type <@MulWith, @MulWith(%i64)> [concrete]
-// CHECK:STDOUT:   %MulWith.Op.type.fcc: type = fn_type @MulWith.Op, @MulWith(%i64) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.MulWith.impl.Op.type.68c2bf.1: type = fn_type @Cpp.long_long.as.MulWith.impl.Op.1, @Cpp.long_long.as.MulWith.impl.eea(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %Cpp.long_long.as.MulWith.impl.Op.4cb78c.1: %Cpp.long_long.as.MulWith.impl.Op.type.68c2bf.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %Cpp.long_long.as.MulWith.impl.Op.type.68c2bf.2: type = fn_type @Cpp.long_long.as.MulWith.impl.Op.2, @Cpp.long_long.as.MulWith.impl.eea(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %Cpp.long_long.as.MulWith.impl.Op.4cb78c.2: %Cpp.long_long.as.MulWith.impl.Op.type.68c2bf.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %MulWith.type.4ce: type = facet_type <@MulWith, @MulWith(Core.IntLiteral)> [concrete]
-// CHECK:STDOUT:   %MulWith.Op.type.ff6: type = fn_type @MulWith.Op, @MulWith(Core.IntLiteral) [concrete]
-// CHECK:STDOUT:   %MulWith.impl_witness.0f5: <witness> = impl_witness imports.%MulWith.impl_witness_table.75e, @Cpp.long_long.as.MulWith.impl.eea(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.MulWith.impl.Op.type.0f8803.1: type = fn_type @Cpp.long_long.as.MulWith.impl.Op.2, @Cpp.long_long.as.MulWith.impl.eea(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.MulWith.impl.Op.dd0f62.1: %Cpp.long_long.as.MulWith.impl.Op.type.0f8803.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.MulWith.impl.Op.type.0f8803.2: type = fn_type @Cpp.long_long.as.MulWith.impl.Op.1, @Cpp.long_long.as.MulWith.impl.eea(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.MulWith.impl.Op.dd0f62.2: %Cpp.long_long.as.MulWith.impl.Op.type.0f8803.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %MulWith.facet.73a: %MulWith.type.884 = facet_value %Cpp.long_long, (%MulWith.impl_witness.0f5) [concrete]
-// CHECK:STDOUT:   %.830: type = fn_type_with_self_type %MulWith.Op.type.fcc, %MulWith.facet.73a [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.MulWith.impl.Op.specific_fn.f1361f.1: <specific function> = specific_function %Cpp.long_long.as.MulWith.impl.Op.dd0f62.2, @Cpp.long_long.as.MulWith.impl.Op.1(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.MulWith.impl.Op.specific_fn.f1361f.2: <specific function> = specific_function %Cpp.long_long.as.MulWith.impl.Op.dd0f62.1, @Cpp.long_long.as.MulWith.impl.Op.2(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %DivWith.type.4ca: type = facet_type <@DivWith, @DivWith(%i64)> [concrete]
-// CHECK:STDOUT:   %DivWith.Op.type.246: type = fn_type @DivWith.Op, @DivWith(%i64) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.DivWith.impl.Op.type.3de041.1: type = fn_type @Cpp.long_long.as.DivWith.impl.Op.1, @Cpp.long_long.as.DivWith.impl.543(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %Cpp.long_long.as.DivWith.impl.Op.bff666.1: %Cpp.long_long.as.DivWith.impl.Op.type.3de041.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %Cpp.long_long.as.DivWith.impl.Op.type.3de041.2: type = fn_type @Cpp.long_long.as.DivWith.impl.Op.2, @Cpp.long_long.as.DivWith.impl.543(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %Cpp.long_long.as.DivWith.impl.Op.bff666.2: %Cpp.long_long.as.DivWith.impl.Op.type.3de041.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %DivWith.type.234: type = facet_type <@DivWith, @DivWith(Core.IntLiteral)> [concrete]
-// CHECK:STDOUT:   %DivWith.Op.type.c64: type = fn_type @DivWith.Op, @DivWith(Core.IntLiteral) [concrete]
-// CHECK:STDOUT:   %DivWith.impl_witness.4d9: <witness> = impl_witness imports.%DivWith.impl_witness_table.e78, @Cpp.long_long.as.DivWith.impl.543(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.DivWith.impl.Op.type.c562f2.1: type = fn_type @Cpp.long_long.as.DivWith.impl.Op.2, @Cpp.long_long.as.DivWith.impl.543(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.DivWith.impl.Op.306cec.1: %Cpp.long_long.as.DivWith.impl.Op.type.c562f2.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.DivWith.impl.Op.type.c562f2.2: type = fn_type @Cpp.long_long.as.DivWith.impl.Op.1, @Cpp.long_long.as.DivWith.impl.543(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.DivWith.impl.Op.306cec.2: %Cpp.long_long.as.DivWith.impl.Op.type.c562f2.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %DivWith.facet.5ad: %DivWith.type.4ca = facet_value %Cpp.long_long, (%DivWith.impl_witness.4d9) [concrete]
-// CHECK:STDOUT:   %.310: type = fn_type_with_self_type %DivWith.Op.type.246, %DivWith.facet.5ad [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.DivWith.impl.Op.specific_fn.eb685a.1: <specific function> = specific_function %Cpp.long_long.as.DivWith.impl.Op.306cec.2, @Cpp.long_long.as.DivWith.impl.Op.1(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.DivWith.impl.Op.specific_fn.eb685a.2: <specific function> = specific_function %Cpp.long_long.as.DivWith.impl.Op.306cec.1, @Cpp.long_long.as.DivWith.impl.Op.2(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %ModWith.type.e0d: type = facet_type <@ModWith, @ModWith(%i64)> [concrete]
-// CHECK:STDOUT:   %ModWith.Op.type.227: type = fn_type @ModWith.Op, @ModWith(%i64) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.ModWith.impl.Op.type.95fc8a.1: type = fn_type @Cpp.long_long.as.ModWith.impl.Op.1, @Cpp.long_long.as.ModWith.impl.18e(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %Cpp.long_long.as.ModWith.impl.Op.3ec9be.1: %Cpp.long_long.as.ModWith.impl.Op.type.95fc8a.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %Cpp.long_long.as.ModWith.impl.Op.type.95fc8a.2: type = fn_type @Cpp.long_long.as.ModWith.impl.Op.2, @Cpp.long_long.as.ModWith.impl.18e(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %Cpp.long_long.as.ModWith.impl.Op.3ec9be.2: %Cpp.long_long.as.ModWith.impl.Op.type.95fc8a.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %ModWith.type.920: type = facet_type <@ModWith, @ModWith(Core.IntLiteral)> [concrete]
-// CHECK:STDOUT:   %ModWith.Op.type.295: type = fn_type @ModWith.Op, @ModWith(Core.IntLiteral) [concrete]
-// CHECK:STDOUT:   %ModWith.impl_witness.87d: <witness> = impl_witness imports.%ModWith.impl_witness_table.b3a, @Cpp.long_long.as.ModWith.impl.18e(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.ModWith.impl.Op.type.d806b7.1: type = fn_type @Cpp.long_long.as.ModWith.impl.Op.2, @Cpp.long_long.as.ModWith.impl.18e(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.ModWith.impl.Op.2a70b6.1: %Cpp.long_long.as.ModWith.impl.Op.type.d806b7.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.ModWith.impl.Op.type.d806b7.2: type = fn_type @Cpp.long_long.as.ModWith.impl.Op.1, @Cpp.long_long.as.ModWith.impl.18e(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.ModWith.impl.Op.2a70b6.2: %Cpp.long_long.as.ModWith.impl.Op.type.d806b7.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %ModWith.facet.31b: %ModWith.type.e0d = facet_value %Cpp.long_long, (%ModWith.impl_witness.87d) [concrete]
-// CHECK:STDOUT:   %.7be: type = fn_type_with_self_type %ModWith.Op.type.227, %ModWith.facet.31b [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.ModWith.impl.Op.specific_fn.0712c6.1: <specific function> = specific_function %Cpp.long_long.as.ModWith.impl.Op.2a70b6.2, @Cpp.long_long.as.ModWith.impl.Op.1(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.ModWith.impl.Op.specific_fn.0712c6.2: <specific function> = specific_function %Cpp.long_long.as.ModWith.impl.Op.2a70b6.1, @Cpp.long_long.as.ModWith.impl.Op.2(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %AddWith.impl_witness.3da: <witness> = impl_witness imports.%AddWith.impl_witness_table.a7c, @Cpp.long_long.as.AddWith.impl.2ad(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.AddWith.impl.Op.type.993564.1: type = fn_type @Cpp.long_long.as.AddWith.impl.Op.2, @Cpp.long_long.as.AddWith.impl.2ad(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.AddWith.impl.Op.ca408b.1: %Cpp.long_long.as.AddWith.impl.Op.type.993564.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.AddWith.impl.Op.type.993564.2: type = fn_type @Cpp.long_long.as.AddWith.impl.Op.1, @Cpp.long_long.as.AddWith.impl.2ad(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.AddWith.impl.Op.ca408b.2: %Cpp.long_long.as.AddWith.impl.Op.type.993564.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %AddWith.facet.df3: %AddWith.type.4c0 = facet_value %Cpp.long_long, (%AddWith.impl_witness.3da) [concrete]
-// CHECK:STDOUT:   %.83b: type = fn_type_with_self_type %AddWith.Op.type.0ee, %AddWith.facet.df3 [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.AddWith.impl.Op.specific_fn.843525.1: <specific function> = specific_function %Cpp.long_long.as.AddWith.impl.Op.ca408b.2, @Cpp.long_long.as.AddWith.impl.Op.1(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.AddWith.impl.Op.specific_fn.843525.2: <specific function> = specific_function %Cpp.long_long.as.AddWith.impl.Op.ca408b.1, @Cpp.long_long.as.AddWith.impl.Op.2(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %SubWith.impl_witness.e45: <witness> = impl_witness imports.%SubWith.impl_witness_table.741, @Cpp.long_long.as.SubWith.impl.182(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.SubWith.impl.Op.type.d8fc6c.1: type = fn_type @Cpp.long_long.as.SubWith.impl.Op.2, @Cpp.long_long.as.SubWith.impl.182(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.SubWith.impl.Op.a0f7a7.1: %Cpp.long_long.as.SubWith.impl.Op.type.d8fc6c.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.SubWith.impl.Op.type.d8fc6c.2: type = fn_type @Cpp.long_long.as.SubWith.impl.Op.1, @Cpp.long_long.as.SubWith.impl.182(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.SubWith.impl.Op.a0f7a7.2: %Cpp.long_long.as.SubWith.impl.Op.type.d8fc6c.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %SubWith.facet.326: %SubWith.type.a89 = facet_value %Cpp.long_long, (%SubWith.impl_witness.e45) [concrete]
-// CHECK:STDOUT:   %.70c: type = fn_type_with_self_type %SubWith.Op.type.95d, %SubWith.facet.326 [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.SubWith.impl.Op.specific_fn.b28cbd.1: <specific function> = specific_function %Cpp.long_long.as.SubWith.impl.Op.a0f7a7.2, @Cpp.long_long.as.SubWith.impl.Op.1(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.SubWith.impl.Op.specific_fn.b28cbd.2: <specific function> = specific_function %Cpp.long_long.as.SubWith.impl.Op.a0f7a7.1, @Cpp.long_long.as.SubWith.impl.Op.2(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %MulWith.impl_witness.e35: <witness> = impl_witness imports.%MulWith.impl_witness_table.75e, @Cpp.long_long.as.MulWith.impl.eea(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.MulWith.impl.Op.type.1463e0.1: type = fn_type @Cpp.long_long.as.MulWith.impl.Op.2, @Cpp.long_long.as.MulWith.impl.eea(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.MulWith.impl.Op.d9ae5b.1: %Cpp.long_long.as.MulWith.impl.Op.type.1463e0.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.MulWith.impl.Op.type.1463e0.2: type = fn_type @Cpp.long_long.as.MulWith.impl.Op.1, @Cpp.long_long.as.MulWith.impl.eea(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.MulWith.impl.Op.d9ae5b.2: %Cpp.long_long.as.MulWith.impl.Op.type.1463e0.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %MulWith.facet.004: %MulWith.type.4ce = facet_value %Cpp.long_long, (%MulWith.impl_witness.e35) [concrete]
-// CHECK:STDOUT:   %.10e: type = fn_type_with_self_type %MulWith.Op.type.ff6, %MulWith.facet.004 [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.MulWith.impl.Op.specific_fn.e6b65e.1: <specific function> = specific_function %Cpp.long_long.as.MulWith.impl.Op.d9ae5b.2, @Cpp.long_long.as.MulWith.impl.Op.1(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.MulWith.impl.Op.specific_fn.e6b65e.2: <specific function> = specific_function %Cpp.long_long.as.MulWith.impl.Op.d9ae5b.1, @Cpp.long_long.as.MulWith.impl.Op.2(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %DivWith.impl_witness.591: <witness> = impl_witness imports.%DivWith.impl_witness_table.e78, @Cpp.long_long.as.DivWith.impl.543(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.DivWith.impl.Op.type.0e5a2e.1: type = fn_type @Cpp.long_long.as.DivWith.impl.Op.2, @Cpp.long_long.as.DivWith.impl.543(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.DivWith.impl.Op.16569a.1: %Cpp.long_long.as.DivWith.impl.Op.type.0e5a2e.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.DivWith.impl.Op.type.0e5a2e.2: type = fn_type @Cpp.long_long.as.DivWith.impl.Op.1, @Cpp.long_long.as.DivWith.impl.543(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.DivWith.impl.Op.16569a.2: %Cpp.long_long.as.DivWith.impl.Op.type.0e5a2e.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %DivWith.facet.e43: %DivWith.type.234 = facet_value %Cpp.long_long, (%DivWith.impl_witness.591) [concrete]
-// CHECK:STDOUT:   %.e74: type = fn_type_with_self_type %DivWith.Op.type.c64, %DivWith.facet.e43 [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.DivWith.impl.Op.specific_fn.9f24e4.1: <specific function> = specific_function %Cpp.long_long.as.DivWith.impl.Op.16569a.2, @Cpp.long_long.as.DivWith.impl.Op.1(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.DivWith.impl.Op.specific_fn.9f24e4.2: <specific function> = specific_function %Cpp.long_long.as.DivWith.impl.Op.16569a.1, @Cpp.long_long.as.DivWith.impl.Op.2(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %ModWith.impl_witness.f74: <witness> = impl_witness imports.%ModWith.impl_witness_table.b3a, @Cpp.long_long.as.ModWith.impl.18e(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.ModWith.impl.Op.type.3b4b62.1: type = fn_type @Cpp.long_long.as.ModWith.impl.Op.2, @Cpp.long_long.as.ModWith.impl.18e(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.ModWith.impl.Op.7eaa96.1: %Cpp.long_long.as.ModWith.impl.Op.type.3b4b62.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.ModWith.impl.Op.type.3b4b62.2: type = fn_type @Cpp.long_long.as.ModWith.impl.Op.1, @Cpp.long_long.as.ModWith.impl.18e(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.ModWith.impl.Op.7eaa96.2: %Cpp.long_long.as.ModWith.impl.Op.type.3b4b62.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %ModWith.facet.b9f: %ModWith.type.920 = facet_value %Cpp.long_long, (%ModWith.impl_witness.f74) [concrete]
-// CHECK:STDOUT:   %.c35: type = fn_type_with_self_type %ModWith.Op.type.295, %ModWith.facet.b9f [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.ModWith.impl.Op.specific_fn.b95c4a.1: <specific function> = specific_function %Cpp.long_long.as.ModWith.impl.Op.7eaa96.2, @Cpp.long_long.as.ModWith.impl.Op.1(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.ModWith.impl.Op.specific_fn.b95c4a.2: <specific function> = specific_function %Cpp.long_long.as.ModWith.impl.Op.7eaa96.1, @Cpp.long_long.as.ModWith.impl.Op.2(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %Cpp: <namespace> = namespace file.%Cpp.import_cpp, [concrete] {
-// CHECK:STDOUT:     .long_long = constants.%Cpp.long_long
-// CHECK:STDOUT:     import Cpp//...
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %Core.import_ref.42d: @Core.IntLiteral.as.ImplicitAs.impl.b2d.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.4e6) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.b2d.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3c2)]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness_table.74f = impl_witness_table (%Core.import_ref.42d), @Core.IntLiteral.as.ImplicitAs.impl.b2d [concrete]
-// CHECK:STDOUT:   %Core.import_ref.d64: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.aba = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness_table.896 = impl_witness_table (%Core.import_ref.d64), @Core.IntLiteral.as.ImplicitAs.impl.a26 [concrete]
-// CHECK:STDOUT:   %Core.import_ref.ce3a05.1 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.809: @Cpp.long_long.as.AddWith.impl.2ad.%Cpp.long_long.as.AddWith.impl.Op.type.2 (%Cpp.long_long.as.AddWith.impl.Op.type.b32b60.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long_long.as.AddWith.impl.2ad.%Cpp.long_long.as.AddWith.impl.Op.2 (constants.%Cpp.long_long.as.AddWith.impl.Op.8cdaa8.1)]
-// CHECK:STDOUT:   %AddWith.impl_witness_table.a7c = impl_witness_table (%Core.import_ref.ce3a05.1, %Core.import_ref.809), @Cpp.long_long.as.AddWith.impl.2ad [concrete]
-// CHECK:STDOUT:   %Core.Op.b7d: @Cpp.long_long.as.AddWith.impl.2ad.%Cpp.long_long.as.AddWith.impl.Op.type.1 (%Cpp.long_long.as.AddWith.impl.Op.type.b32b60.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @Cpp.long_long.as.AddWith.impl.2ad.%Cpp.long_long.as.AddWith.impl.Op.1 (constants.%Cpp.long_long.as.AddWith.impl.Op.8cdaa8.2)]
-// CHECK:STDOUT:   %Core.import_ref.4f4b: %i64.as.ImplicitAs.impl.Convert.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness_table.b19 = impl_witness_table (%Core.import_ref.4f4b), @i64.as.ImplicitAs.impl [concrete]
-// CHECK:STDOUT:   %Core.import_ref.ce3a05.3 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.a31: @Cpp.long_long.as.SubWith.impl.182.%Cpp.long_long.as.SubWith.impl.Op.type.2 (%Cpp.long_long.as.SubWith.impl.Op.type.8c27c7.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long_long.as.SubWith.impl.182.%Cpp.long_long.as.SubWith.impl.Op.2 (constants.%Cpp.long_long.as.SubWith.impl.Op.58d0ca.1)]
-// CHECK:STDOUT:   %SubWith.impl_witness_table.741 = impl_witness_table (%Core.import_ref.ce3a05.3, %Core.import_ref.a31), @Cpp.long_long.as.SubWith.impl.182 [concrete]
-// CHECK:STDOUT:   %Core.Op.15a: @Cpp.long_long.as.SubWith.impl.182.%Cpp.long_long.as.SubWith.impl.Op.type.1 (%Cpp.long_long.as.SubWith.impl.Op.type.8c27c7.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @Cpp.long_long.as.SubWith.impl.182.%Cpp.long_long.as.SubWith.impl.Op.1 (constants.%Cpp.long_long.as.SubWith.impl.Op.58d0ca.2)]
-// CHECK:STDOUT:   %Core.import_ref.ce3a05.5 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.02d: @Cpp.long_long.as.MulWith.impl.eea.%Cpp.long_long.as.MulWith.impl.Op.type.2 (%Cpp.long_long.as.MulWith.impl.Op.type.68c2bf.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long_long.as.MulWith.impl.eea.%Cpp.long_long.as.MulWith.impl.Op.2 (constants.%Cpp.long_long.as.MulWith.impl.Op.4cb78c.1)]
-// CHECK:STDOUT:   %MulWith.impl_witness_table.75e = impl_witness_table (%Core.import_ref.ce3a05.5, %Core.import_ref.02d), @Cpp.long_long.as.MulWith.impl.eea [concrete]
-// CHECK:STDOUT:   %Core.Op.bb0: @Cpp.long_long.as.MulWith.impl.eea.%Cpp.long_long.as.MulWith.impl.Op.type.1 (%Cpp.long_long.as.MulWith.impl.Op.type.68c2bf.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @Cpp.long_long.as.MulWith.impl.eea.%Cpp.long_long.as.MulWith.impl.Op.1 (constants.%Cpp.long_long.as.MulWith.impl.Op.4cb78c.2)]
-// CHECK:STDOUT:   %Core.import_ref.ce3a05.7 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.bd4: @Cpp.long_long.as.DivWith.impl.543.%Cpp.long_long.as.DivWith.impl.Op.type.2 (%Cpp.long_long.as.DivWith.impl.Op.type.3de041.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long_long.as.DivWith.impl.543.%Cpp.long_long.as.DivWith.impl.Op.2 (constants.%Cpp.long_long.as.DivWith.impl.Op.bff666.1)]
-// CHECK:STDOUT:   %DivWith.impl_witness_table.e78 = impl_witness_table (%Core.import_ref.ce3a05.7, %Core.import_ref.bd4), @Cpp.long_long.as.DivWith.impl.543 [concrete]
-// CHECK:STDOUT:   %Core.Op.ac1: @Cpp.long_long.as.DivWith.impl.543.%Cpp.long_long.as.DivWith.impl.Op.type.1 (%Cpp.long_long.as.DivWith.impl.Op.type.3de041.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @Cpp.long_long.as.DivWith.impl.543.%Cpp.long_long.as.DivWith.impl.Op.1 (constants.%Cpp.long_long.as.DivWith.impl.Op.bff666.2)]
-// CHECK:STDOUT:   %Core.import_ref.ce3a05.9 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.a84: @Cpp.long_long.as.ModWith.impl.18e.%Cpp.long_long.as.ModWith.impl.Op.type.2 (%Cpp.long_long.as.ModWith.impl.Op.type.95fc8a.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long_long.as.ModWith.impl.18e.%Cpp.long_long.as.ModWith.impl.Op.2 (constants.%Cpp.long_long.as.ModWith.impl.Op.3ec9be.1)]
-// CHECK:STDOUT:   %ModWith.impl_witness_table.b3a = impl_witness_table (%Core.import_ref.ce3a05.9, %Core.import_ref.a84), @Cpp.long_long.as.ModWith.impl.18e [concrete]
-// CHECK:STDOUT:   %Core.Op.a7a: @Cpp.long_long.as.ModWith.impl.18e.%Cpp.long_long.as.ModWith.impl.Op.type.1 (%Cpp.long_long.as.ModWith.impl.Op.type.95fc8a.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @Cpp.long_long.as.ModWith.impl.18e.%Cpp.long_long.as.ModWith.impl.Op.1 (constants.%Cpp.long_long.as.ModWith.impl.Op.3ec9be.2)]
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: fn @ArithmeticHeterogeneousLongLongLeftSide() {
-// CHECK:STDOUT: !entry:
-// CHECK:STDOUT:   <elided>
-// CHECK:STDOUT:   name_binding_decl {
-// CHECK:STDOUT:     %x.patt: %pattern_type.76e = value_binding_pattern x [concrete]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %int_1.loc11: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %.loc11_13: type = splice_block %long_long.ref [concrete = constants.%Cpp.long_long] {
-// CHECK:STDOUT:     %Cpp.ref: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
-// CHECK:STDOUT:     %long_long.ref: type = name_ref long_long, constants.%Cpp.long_long [concrete = constants.%Cpp.long_long]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %impl.elem0.loc11: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %bound_method.loc11: <bound method> = bound_method %int_1.loc11, %impl.elem0.loc11 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc11: init %Cpp.long_long = call %bound_method.loc11(%int_1.loc11) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc11_26.1: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc11 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc11_26.2: %Cpp.long_long = converted %int_1.loc11, %.loc11_26.1 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %x: %Cpp.long_long = value_binding x, %.loc11_26.2
-// CHECK:STDOUT:   %AssertSameType.ref.loc13: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc13_18: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %b.ref.loc13: %i64 = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc13: %.1e9 = impl_witness_access constants.%AddWith.impl_witness.24c, element1 [concrete = constants.%Cpp.long_long.as.AddWith.impl.Op.f65668.2]
-// CHECK:STDOUT:   %bound_method.loc13_20.1: <bound method> = bound_method %x.ref.loc13_18, %impl.elem1.loc13
-// CHECK:STDOUT:   %ImplicitAs.facet.loc13_20.1: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc13_20.1: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc13_20.1 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc13_20.2: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc13_20.2: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc13_20.2 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %specific_fn.loc13: <specific function> = specific_function %impl.elem1.loc13, @Cpp.long_long.as.AddWith.impl.Op.1(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.AddWith.impl.Op.specific_fn.be49b1.1]
-// CHECK:STDOUT:   %bound_method.loc13_20.2: <bound method> = bound_method %x.ref.loc13_18, %specific_fn.loc13
-// CHECK:STDOUT:   %.loc13_20.3: %Cpp.long_long.as.AddWith.impl.Op.type.f5b88b.1 = specific_constant imports.%Core.Op.b7d, @Cpp.long_long.as.AddWith.impl.2ad(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.AddWith.impl.Op.f65668.1]
-// CHECK:STDOUT:   %Op.ref.loc13: %Cpp.long_long.as.AddWith.impl.Op.type.f5b88b.1 = name_ref Op, %.loc13_20.3 [concrete = constants.%Cpp.long_long.as.AddWith.impl.Op.f65668.1]
-// CHECK:STDOUT:   %Cpp.long_long.as.AddWith.impl.Op.bound.loc13: <bound method> = bound_method %x.ref.loc13_18, %Op.ref.loc13
-// CHECK:STDOUT:   %impl.elem0.loc13_20: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc13_20.3: <bound method> = bound_method %b.ref.loc13, %impl.elem0.loc13_20
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc13_20: init %Cpp.long_long = call %bound_method.loc13_20.3(%b.ref.loc13)
-// CHECK:STDOUT:   %.loc13_20.4: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc13_20
-// CHECK:STDOUT:   %.loc13_20.5: %Cpp.long_long = converted %b.ref.loc13, %.loc13_20.4
-// CHECK:STDOUT:   %Cpp.long_long.as.AddWith.impl.Op.specific_fn.loc13: <specific function> = specific_function %Op.ref.loc13, @Cpp.long_long.as.AddWith.impl.Op.2(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.AddWith.impl.Op.specific_fn.be49b1.2]
-// CHECK:STDOUT:   %bound_method.loc13_20.4: <bound method> = bound_method %x.ref.loc13_18, %Cpp.long_long.as.AddWith.impl.Op.specific_fn.loc13
-// CHECK:STDOUT:   %impl.elem0.loc13_22: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc13_22: <bound method> = bound_method %b.ref.loc13, %impl.elem0.loc13_22
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc13_22: init %Cpp.long_long = call %bound_method.loc13_22(%b.ref.loc13)
-// CHECK:STDOUT:   %.loc13_22.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc13_22
-// CHECK:STDOUT:   %.loc13_22.2: %Cpp.long_long = converted %b.ref.loc13, %.loc13_22.1
-// CHECK:STDOUT:   %Cpp.long_long.as.AddWith.impl.Op.call.loc13: init %Cpp.long_long = call %bound_method.loc13_20.4(%x.ref.loc13_18, %.loc13_22.2)
-// CHECK:STDOUT:   %x.ref.loc13_25: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc13: <specific function> = specific_function %AssertSameType.ref.loc13, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc13_20.6: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.AddWith.impl.Op.call.loc13
-// CHECK:STDOUT:   %.loc13_20.7: %Cpp.long_long = converted %Cpp.long_long.as.AddWith.impl.Op.call.loc13, %.loc13_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc13: init %empty_tuple.type = call %AssertSameType.specific_fn.loc13(%.loc13_20.7, %x.ref.loc13_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc14: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc14_18: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %b.ref.loc14: %i64 = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc14: %.036 = impl_witness_access constants.%SubWith.impl_witness.07a, element1 [concrete = constants.%Cpp.long_long.as.SubWith.impl.Op.85827a.2]
-// CHECK:STDOUT:   %bound_method.loc14_20.1: <bound method> = bound_method %x.ref.loc14_18, %impl.elem1.loc14
-// CHECK:STDOUT:   %ImplicitAs.facet.loc14_20.1: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc14_20.1: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc14_20.1 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc14_20.2: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc14_20.2: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc14_20.2 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %specific_fn.loc14: <specific function> = specific_function %impl.elem1.loc14, @Cpp.long_long.as.SubWith.impl.Op.1(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.SubWith.impl.Op.specific_fn.8f1b07.1]
-// CHECK:STDOUT:   %bound_method.loc14_20.2: <bound method> = bound_method %x.ref.loc14_18, %specific_fn.loc14
-// CHECK:STDOUT:   %.loc14_20.3: %Cpp.long_long.as.SubWith.impl.Op.type.e1aaf1.1 = specific_constant imports.%Core.Op.15a, @Cpp.long_long.as.SubWith.impl.182(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.SubWith.impl.Op.85827a.1]
-// CHECK:STDOUT:   %Op.ref.loc14: %Cpp.long_long.as.SubWith.impl.Op.type.e1aaf1.1 = name_ref Op, %.loc14_20.3 [concrete = constants.%Cpp.long_long.as.SubWith.impl.Op.85827a.1]
-// CHECK:STDOUT:   %Cpp.long_long.as.SubWith.impl.Op.bound.loc14: <bound method> = bound_method %x.ref.loc14_18, %Op.ref.loc14
-// CHECK:STDOUT:   %impl.elem0.loc14_20: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc14_20.3: <bound method> = bound_method %b.ref.loc14, %impl.elem0.loc14_20
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc14_20: init %Cpp.long_long = call %bound_method.loc14_20.3(%b.ref.loc14)
-// CHECK:STDOUT:   %.loc14_20.4: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc14_20
-// CHECK:STDOUT:   %.loc14_20.5: %Cpp.long_long = converted %b.ref.loc14, %.loc14_20.4
-// CHECK:STDOUT:   %Cpp.long_long.as.SubWith.impl.Op.specific_fn.loc14: <specific function> = specific_function %Op.ref.loc14, @Cpp.long_long.as.SubWith.impl.Op.2(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.SubWith.impl.Op.specific_fn.8f1b07.2]
-// CHECK:STDOUT:   %bound_method.loc14_20.4: <bound method> = bound_method %x.ref.loc14_18, %Cpp.long_long.as.SubWith.impl.Op.specific_fn.loc14
-// CHECK:STDOUT:   %impl.elem0.loc14_22: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc14_22: <bound method> = bound_method %b.ref.loc14, %impl.elem0.loc14_22
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc14_22: init %Cpp.long_long = call %bound_method.loc14_22(%b.ref.loc14)
-// CHECK:STDOUT:   %.loc14_22.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc14_22
-// CHECK:STDOUT:   %.loc14_22.2: %Cpp.long_long = converted %b.ref.loc14, %.loc14_22.1
-// CHECK:STDOUT:   %Cpp.long_long.as.SubWith.impl.Op.call.loc14: init %Cpp.long_long = call %bound_method.loc14_20.4(%x.ref.loc14_18, %.loc14_22.2)
-// CHECK:STDOUT:   %x.ref.loc14_25: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc14: <specific function> = specific_function %AssertSameType.ref.loc14, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc14_20.6: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.SubWith.impl.Op.call.loc14
-// CHECK:STDOUT:   %.loc14_20.7: %Cpp.long_long = converted %Cpp.long_long.as.SubWith.impl.Op.call.loc14, %.loc14_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc14: init %empty_tuple.type = call %AssertSameType.specific_fn.loc14(%.loc14_20.7, %x.ref.loc14_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc15: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc15_18: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %b.ref.loc15: %i64 = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc15: %.830 = impl_witness_access constants.%MulWith.impl_witness.0f5, element1 [concrete = constants.%Cpp.long_long.as.MulWith.impl.Op.dd0f62.2]
-// CHECK:STDOUT:   %bound_method.loc15_20.1: <bound method> = bound_method %x.ref.loc15_18, %impl.elem1.loc15
-// CHECK:STDOUT:   %ImplicitAs.facet.loc15_20.1: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc15_20.1: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc15_20.1 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc15_20.2: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc15_20.2: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc15_20.2 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %specific_fn.loc15: <specific function> = specific_function %impl.elem1.loc15, @Cpp.long_long.as.MulWith.impl.Op.1(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.MulWith.impl.Op.specific_fn.f1361f.1]
-// CHECK:STDOUT:   %bound_method.loc15_20.2: <bound method> = bound_method %x.ref.loc15_18, %specific_fn.loc15
-// CHECK:STDOUT:   %.loc15_20.3: %Cpp.long_long.as.MulWith.impl.Op.type.0f8803.1 = specific_constant imports.%Core.Op.bb0, @Cpp.long_long.as.MulWith.impl.eea(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.MulWith.impl.Op.dd0f62.1]
-// CHECK:STDOUT:   %Op.ref.loc15: %Cpp.long_long.as.MulWith.impl.Op.type.0f8803.1 = name_ref Op, %.loc15_20.3 [concrete = constants.%Cpp.long_long.as.MulWith.impl.Op.dd0f62.1]
-// CHECK:STDOUT:   %Cpp.long_long.as.MulWith.impl.Op.bound.loc15: <bound method> = bound_method %x.ref.loc15_18, %Op.ref.loc15
-// CHECK:STDOUT:   %impl.elem0.loc15_20: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc15_20.3: <bound method> = bound_method %b.ref.loc15, %impl.elem0.loc15_20
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc15_20: init %Cpp.long_long = call %bound_method.loc15_20.3(%b.ref.loc15)
-// CHECK:STDOUT:   %.loc15_20.4: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc15_20
-// CHECK:STDOUT:   %.loc15_20.5: %Cpp.long_long = converted %b.ref.loc15, %.loc15_20.4
-// CHECK:STDOUT:   %Cpp.long_long.as.MulWith.impl.Op.specific_fn.loc15: <specific function> = specific_function %Op.ref.loc15, @Cpp.long_long.as.MulWith.impl.Op.2(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.MulWith.impl.Op.specific_fn.f1361f.2]
-// CHECK:STDOUT:   %bound_method.loc15_20.4: <bound method> = bound_method %x.ref.loc15_18, %Cpp.long_long.as.MulWith.impl.Op.specific_fn.loc15
-// CHECK:STDOUT:   %impl.elem0.loc15_22: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc15_22: <bound method> = bound_method %b.ref.loc15, %impl.elem0.loc15_22
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc15_22: init %Cpp.long_long = call %bound_method.loc15_22(%b.ref.loc15)
-// CHECK:STDOUT:   %.loc15_22.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc15_22
-// CHECK:STDOUT:   %.loc15_22.2: %Cpp.long_long = converted %b.ref.loc15, %.loc15_22.1
-// CHECK:STDOUT:   %Cpp.long_long.as.MulWith.impl.Op.call.loc15: init %Cpp.long_long = call %bound_method.loc15_20.4(%x.ref.loc15_18, %.loc15_22.2)
-// CHECK:STDOUT:   %x.ref.loc15_25: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc15: <specific function> = specific_function %AssertSameType.ref.loc15, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc15_20.6: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.MulWith.impl.Op.call.loc15
-// CHECK:STDOUT:   %.loc15_20.7: %Cpp.long_long = converted %Cpp.long_long.as.MulWith.impl.Op.call.loc15, %.loc15_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc15: init %empty_tuple.type = call %AssertSameType.specific_fn.loc15(%.loc15_20.7, %x.ref.loc15_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc16: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc16_18: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %b.ref.loc16: %i64 = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc16: %.310 = impl_witness_access constants.%DivWith.impl_witness.4d9, element1 [concrete = constants.%Cpp.long_long.as.DivWith.impl.Op.306cec.2]
-// CHECK:STDOUT:   %bound_method.loc16_20.1: <bound method> = bound_method %x.ref.loc16_18, %impl.elem1.loc16
-// CHECK:STDOUT:   %ImplicitAs.facet.loc16_20.1: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc16_20.1: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc16_20.1 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc16_20.2: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc16_20.2: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc16_20.2 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %specific_fn.loc16: <specific function> = specific_function %impl.elem1.loc16, @Cpp.long_long.as.DivWith.impl.Op.1(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.DivWith.impl.Op.specific_fn.eb685a.1]
-// CHECK:STDOUT:   %bound_method.loc16_20.2: <bound method> = bound_method %x.ref.loc16_18, %specific_fn.loc16
-// CHECK:STDOUT:   %.loc16_20.3: %Cpp.long_long.as.DivWith.impl.Op.type.c562f2.1 = specific_constant imports.%Core.Op.ac1, @Cpp.long_long.as.DivWith.impl.543(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.DivWith.impl.Op.306cec.1]
-// CHECK:STDOUT:   %Op.ref.loc16: %Cpp.long_long.as.DivWith.impl.Op.type.c562f2.1 = name_ref Op, %.loc16_20.3 [concrete = constants.%Cpp.long_long.as.DivWith.impl.Op.306cec.1]
-// CHECK:STDOUT:   %Cpp.long_long.as.DivWith.impl.Op.bound.loc16: <bound method> = bound_method %x.ref.loc16_18, %Op.ref.loc16
-// CHECK:STDOUT:   %impl.elem0.loc16_20: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc16_20.3: <bound method> = bound_method %b.ref.loc16, %impl.elem0.loc16_20
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc16_20: init %Cpp.long_long = call %bound_method.loc16_20.3(%b.ref.loc16)
-// CHECK:STDOUT:   %.loc16_20.4: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc16_20
-// CHECK:STDOUT:   %.loc16_20.5: %Cpp.long_long = converted %b.ref.loc16, %.loc16_20.4
-// CHECK:STDOUT:   %Cpp.long_long.as.DivWith.impl.Op.specific_fn.loc16: <specific function> = specific_function %Op.ref.loc16, @Cpp.long_long.as.DivWith.impl.Op.2(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.DivWith.impl.Op.specific_fn.eb685a.2]
-// CHECK:STDOUT:   %bound_method.loc16_20.4: <bound method> = bound_method %x.ref.loc16_18, %Cpp.long_long.as.DivWith.impl.Op.specific_fn.loc16
-// CHECK:STDOUT:   %impl.elem0.loc16_22: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc16_22: <bound method> = bound_method %b.ref.loc16, %impl.elem0.loc16_22
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc16_22: init %Cpp.long_long = call %bound_method.loc16_22(%b.ref.loc16)
-// CHECK:STDOUT:   %.loc16_22.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc16_22
-// CHECK:STDOUT:   %.loc16_22.2: %Cpp.long_long = converted %b.ref.loc16, %.loc16_22.1
-// CHECK:STDOUT:   %Cpp.long_long.as.DivWith.impl.Op.call.loc16: init %Cpp.long_long = call %bound_method.loc16_20.4(%x.ref.loc16_18, %.loc16_22.2)
-// CHECK:STDOUT:   %x.ref.loc16_25: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc16: <specific function> = specific_function %AssertSameType.ref.loc16, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc16_20.6: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.DivWith.impl.Op.call.loc16
-// CHECK:STDOUT:   %.loc16_20.7: %Cpp.long_long = converted %Cpp.long_long.as.DivWith.impl.Op.call.loc16, %.loc16_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc16: init %empty_tuple.type = call %AssertSameType.specific_fn.loc16(%.loc16_20.7, %x.ref.loc16_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc17: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc17_18: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %b.ref.loc17: %i64 = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc17: %.7be = impl_witness_access constants.%ModWith.impl_witness.87d, element1 [concrete = constants.%Cpp.long_long.as.ModWith.impl.Op.2a70b6.2]
-// CHECK:STDOUT:   %bound_method.loc17_20.1: <bound method> = bound_method %x.ref.loc17_18, %impl.elem1.loc17
-// CHECK:STDOUT:   %ImplicitAs.facet.loc17_20.1: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc17_20.1: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc17_20.1 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc17_20.2: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc17_20.2: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc17_20.2 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %specific_fn.loc17: <specific function> = specific_function %impl.elem1.loc17, @Cpp.long_long.as.ModWith.impl.Op.1(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.ModWith.impl.Op.specific_fn.0712c6.1]
-// CHECK:STDOUT:   %bound_method.loc17_20.2: <bound method> = bound_method %x.ref.loc17_18, %specific_fn.loc17
-// CHECK:STDOUT:   %.loc17_20.3: %Cpp.long_long.as.ModWith.impl.Op.type.d806b7.1 = specific_constant imports.%Core.Op.a7a, @Cpp.long_long.as.ModWith.impl.18e(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.ModWith.impl.Op.2a70b6.1]
-// CHECK:STDOUT:   %Op.ref.loc17: %Cpp.long_long.as.ModWith.impl.Op.type.d806b7.1 = name_ref Op, %.loc17_20.3 [concrete = constants.%Cpp.long_long.as.ModWith.impl.Op.2a70b6.1]
-// CHECK:STDOUT:   %Cpp.long_long.as.ModWith.impl.Op.bound.loc17: <bound method> = bound_method %x.ref.loc17_18, %Op.ref.loc17
-// CHECK:STDOUT:   %impl.elem0.loc17_20: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc17_20.3: <bound method> = bound_method %b.ref.loc17, %impl.elem0.loc17_20
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc17_20: init %Cpp.long_long = call %bound_method.loc17_20.3(%b.ref.loc17)
-// CHECK:STDOUT:   %.loc17_20.4: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc17_20
-// CHECK:STDOUT:   %.loc17_20.5: %Cpp.long_long = converted %b.ref.loc17, %.loc17_20.4
-// CHECK:STDOUT:   %Cpp.long_long.as.ModWith.impl.Op.specific_fn.loc17: <specific function> = specific_function %Op.ref.loc17, @Cpp.long_long.as.ModWith.impl.Op.2(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.ModWith.impl.Op.specific_fn.0712c6.2]
-// CHECK:STDOUT:   %bound_method.loc17_20.4: <bound method> = bound_method %x.ref.loc17_18, %Cpp.long_long.as.ModWith.impl.Op.specific_fn.loc17
-// CHECK:STDOUT:   %impl.elem0.loc17_22: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc17_22: <bound method> = bound_method %b.ref.loc17, %impl.elem0.loc17_22
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc17_22: init %Cpp.long_long = call %bound_method.loc17_22(%b.ref.loc17)
-// CHECK:STDOUT:   %.loc17_22.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc17_22
-// CHECK:STDOUT:   %.loc17_22.2: %Cpp.long_long = converted %b.ref.loc17, %.loc17_22.1
-// CHECK:STDOUT:   %Cpp.long_long.as.ModWith.impl.Op.call.loc17: init %Cpp.long_long = call %bound_method.loc17_20.4(%x.ref.loc17_18, %.loc17_22.2)
-// CHECK:STDOUT:   %x.ref.loc17_25: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc17: <specific function> = specific_function %AssertSameType.ref.loc17, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc17_20.6: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.ModWith.impl.Op.call.loc17
-// CHECK:STDOUT:   %.loc17_20.7: %Cpp.long_long = converted %Cpp.long_long.as.ModWith.impl.Op.call.loc17, %.loc17_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc17: init %empty_tuple.type = call %AssertSameType.specific_fn.loc17(%.loc17_20.7, %x.ref.loc17_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc19: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc19_18: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %int_1.loc19: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %impl.elem1.loc19: %.83b = impl_witness_access constants.%AddWith.impl_witness.3da, element1 [concrete = constants.%Cpp.long_long.as.AddWith.impl.Op.ca408b.2]
-// CHECK:STDOUT:   %bound_method.loc19_20.1: <bound method> = bound_method %x.ref.loc19_18, %impl.elem1.loc19
-// CHECK:STDOUT:   %ImplicitAs.facet.loc19_20.1: %ImplicitAs.type.a03 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.82e) [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %.loc19_20.1: %ImplicitAs.type.a03 = converted Core.IntLiteral, %ImplicitAs.facet.loc19_20.1 [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc19_20.2: %ImplicitAs.type.a03 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.82e) [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %.loc19_20.2: %ImplicitAs.type.a03 = converted Core.IntLiteral, %ImplicitAs.facet.loc19_20.2 [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %specific_fn.loc19: <specific function> = specific_function %impl.elem1.loc19, @Cpp.long_long.as.AddWith.impl.Op.1(constants.%ImplicitAs.facet.d52) [concrete = constants.%Cpp.long_long.as.AddWith.impl.Op.specific_fn.843525.1]
-// CHECK:STDOUT:   %bound_method.loc19_20.2: <bound method> = bound_method %x.ref.loc19_18, %specific_fn.loc19
-// CHECK:STDOUT:   %.loc19_20.3: %Cpp.long_long.as.AddWith.impl.Op.type.993564.1 = specific_constant imports.%Core.Op.b7d, @Cpp.long_long.as.AddWith.impl.2ad(constants.%ImplicitAs.facet.d52) [concrete = constants.%Cpp.long_long.as.AddWith.impl.Op.ca408b.1]
-// CHECK:STDOUT:   %Op.ref.loc19: %Cpp.long_long.as.AddWith.impl.Op.type.993564.1 = name_ref Op, %.loc19_20.3 [concrete = constants.%Cpp.long_long.as.AddWith.impl.Op.ca408b.1]
-// CHECK:STDOUT:   %Cpp.long_long.as.AddWith.impl.Op.bound.loc19: <bound method> = bound_method %x.ref.loc19_18, %Op.ref.loc19
-// CHECK:STDOUT:   %impl.elem0.loc19_20: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %bound_method.loc19_20.3: <bound method> = bound_method %int_1.loc19, %impl.elem0.loc19_20 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19_20: init %Cpp.long_long = call %bound_method.loc19_20.3(%int_1.loc19) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc19_20.4: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19_20 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc19_20.5: %Cpp.long_long = converted %int_1.loc19, %.loc19_20.4 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %Cpp.long_long.as.AddWith.impl.Op.specific_fn.loc19: <specific function> = specific_function %Op.ref.loc19, @Cpp.long_long.as.AddWith.impl.Op.2(constants.%ImplicitAs.facet.d52) [concrete = constants.%Cpp.long_long.as.AddWith.impl.Op.specific_fn.843525.2]
-// CHECK:STDOUT:   %bound_method.loc19_20.4: <bound method> = bound_method %x.ref.loc19_18, %Cpp.long_long.as.AddWith.impl.Op.specific_fn.loc19
-// CHECK:STDOUT:   %impl.elem0.loc19_22: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %bound_method.loc19_22: <bound method> = bound_method %int_1.loc19, %impl.elem0.loc19_22 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19_22: init %Cpp.long_long = call %bound_method.loc19_22(%int_1.loc19) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc19_22.1: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19_22 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc19_22.2: %Cpp.long_long = converted %int_1.loc19, %.loc19_22.1 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %Cpp.long_long.as.AddWith.impl.Op.call.loc19: init %Cpp.long_long = call %bound_method.loc19_20.4(%x.ref.loc19_18, %.loc19_22.2)
-// CHECK:STDOUT:   %x.ref.loc19_25: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc19: <specific function> = specific_function %AssertSameType.ref.loc19, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc19_20.6: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.AddWith.impl.Op.call.loc19
-// CHECK:STDOUT:   %.loc19_20.7: %Cpp.long_long = converted %Cpp.long_long.as.AddWith.impl.Op.call.loc19, %.loc19_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc19: init %empty_tuple.type = call %AssertSameType.specific_fn.loc19(%.loc19_20.7, %x.ref.loc19_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc20: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc20_18: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %int_1.loc20: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %impl.elem1.loc20: %.70c = impl_witness_access constants.%SubWith.impl_witness.e45, element1 [concrete = constants.%Cpp.long_long.as.SubWith.impl.Op.a0f7a7.2]
-// CHECK:STDOUT:   %bound_method.loc20_20.1: <bound method> = bound_method %x.ref.loc20_18, %impl.elem1.loc20
-// CHECK:STDOUT:   %ImplicitAs.facet.loc20_20.1: %ImplicitAs.type.a03 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.82e) [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %.loc20_20.1: %ImplicitAs.type.a03 = converted Core.IntLiteral, %ImplicitAs.facet.loc20_20.1 [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc20_20.2: %ImplicitAs.type.a03 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.82e) [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %.loc20_20.2: %ImplicitAs.type.a03 = converted Core.IntLiteral, %ImplicitAs.facet.loc20_20.2 [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %specific_fn.loc20: <specific function> = specific_function %impl.elem1.loc20, @Cpp.long_long.as.SubWith.impl.Op.1(constants.%ImplicitAs.facet.d52) [concrete = constants.%Cpp.long_long.as.SubWith.impl.Op.specific_fn.b28cbd.1]
-// CHECK:STDOUT:   %bound_method.loc20_20.2: <bound method> = bound_method %x.ref.loc20_18, %specific_fn.loc20
-// CHECK:STDOUT:   %.loc20_20.3: %Cpp.long_long.as.SubWith.impl.Op.type.d8fc6c.1 = specific_constant imports.%Core.Op.15a, @Cpp.long_long.as.SubWith.impl.182(constants.%ImplicitAs.facet.d52) [concrete = constants.%Cpp.long_long.as.SubWith.impl.Op.a0f7a7.1]
-// CHECK:STDOUT:   %Op.ref.loc20: %Cpp.long_long.as.SubWith.impl.Op.type.d8fc6c.1 = name_ref Op, %.loc20_20.3 [concrete = constants.%Cpp.long_long.as.SubWith.impl.Op.a0f7a7.1]
-// CHECK:STDOUT:   %Cpp.long_long.as.SubWith.impl.Op.bound.loc20: <bound method> = bound_method %x.ref.loc20_18, %Op.ref.loc20
-// CHECK:STDOUT:   %impl.elem0.loc20_20: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %bound_method.loc20_20.3: <bound method> = bound_method %int_1.loc20, %impl.elem0.loc20_20 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20_20: init %Cpp.long_long = call %bound_method.loc20_20.3(%int_1.loc20) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc20_20.4: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20_20 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc20_20.5: %Cpp.long_long = converted %int_1.loc20, %.loc20_20.4 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %Cpp.long_long.as.SubWith.impl.Op.specific_fn.loc20: <specific function> = specific_function %Op.ref.loc20, @Cpp.long_long.as.SubWith.impl.Op.2(constants.%ImplicitAs.facet.d52) [concrete = constants.%Cpp.long_long.as.SubWith.impl.Op.specific_fn.b28cbd.2]
-// CHECK:STDOUT:   %bound_method.loc20_20.4: <bound method> = bound_method %x.ref.loc20_18, %Cpp.long_long.as.SubWith.impl.Op.specific_fn.loc20
-// CHECK:STDOUT:   %impl.elem0.loc20_22: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %bound_method.loc20_22: <bound method> = bound_method %int_1.loc20, %impl.elem0.loc20_22 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20_22: init %Cpp.long_long = call %bound_method.loc20_22(%int_1.loc20) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc20_22.1: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20_22 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc20_22.2: %Cpp.long_long = converted %int_1.loc20, %.loc20_22.1 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %Cpp.long_long.as.SubWith.impl.Op.call.loc20: init %Cpp.long_long = call %bound_method.loc20_20.4(%x.ref.loc20_18, %.loc20_22.2)
-// CHECK:STDOUT:   %x.ref.loc20_25: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc20: <specific function> = specific_function %AssertSameType.ref.loc20, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc20_20.6: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.SubWith.impl.Op.call.loc20
-// CHECK:STDOUT:   %.loc20_20.7: %Cpp.long_long = converted %Cpp.long_long.as.SubWith.impl.Op.call.loc20, %.loc20_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc20: init %empty_tuple.type = call %AssertSameType.specific_fn.loc20(%.loc20_20.7, %x.ref.loc20_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc21: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc21_18: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %int_1.loc21: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %impl.elem1.loc21: %.10e = impl_witness_access constants.%MulWith.impl_witness.e35, element1 [concrete = constants.%Cpp.long_long.as.MulWith.impl.Op.d9ae5b.2]
-// CHECK:STDOUT:   %bound_method.loc21_20.1: <bound method> = bound_method %x.ref.loc21_18, %impl.elem1.loc21
-// CHECK:STDOUT:   %ImplicitAs.facet.loc21_20.1: %ImplicitAs.type.a03 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.82e) [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %.loc21_20.1: %ImplicitAs.type.a03 = converted Core.IntLiteral, %ImplicitAs.facet.loc21_20.1 [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc21_20.2: %ImplicitAs.type.a03 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.82e) [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %.loc21_20.2: %ImplicitAs.type.a03 = converted Core.IntLiteral, %ImplicitAs.facet.loc21_20.2 [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %specific_fn.loc21: <specific function> = specific_function %impl.elem1.loc21, @Cpp.long_long.as.MulWith.impl.Op.1(constants.%ImplicitAs.facet.d52) [concrete = constants.%Cpp.long_long.as.MulWith.impl.Op.specific_fn.e6b65e.1]
-// CHECK:STDOUT:   %bound_method.loc21_20.2: <bound method> = bound_method %x.ref.loc21_18, %specific_fn.loc21
-// CHECK:STDOUT:   %.loc21_20.3: %Cpp.long_long.as.MulWith.impl.Op.type.1463e0.1 = specific_constant imports.%Core.Op.bb0, @Cpp.long_long.as.MulWith.impl.eea(constants.%ImplicitAs.facet.d52) [concrete = constants.%Cpp.long_long.as.MulWith.impl.Op.d9ae5b.1]
-// CHECK:STDOUT:   %Op.ref.loc21: %Cpp.long_long.as.MulWith.impl.Op.type.1463e0.1 = name_ref Op, %.loc21_20.3 [concrete = constants.%Cpp.long_long.as.MulWith.impl.Op.d9ae5b.1]
-// CHECK:STDOUT:   %Cpp.long_long.as.MulWith.impl.Op.bound.loc21: <bound method> = bound_method %x.ref.loc21_18, %Op.ref.loc21
-// CHECK:STDOUT:   %impl.elem0.loc21_20: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %bound_method.loc21_20.3: <bound method> = bound_method %int_1.loc21, %impl.elem0.loc21_20 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21_20: init %Cpp.long_long = call %bound_method.loc21_20.3(%int_1.loc21) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc21_20.4: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21_20 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc21_20.5: %Cpp.long_long = converted %int_1.loc21, %.loc21_20.4 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %Cpp.long_long.as.MulWith.impl.Op.specific_fn.loc21: <specific function> = specific_function %Op.ref.loc21, @Cpp.long_long.as.MulWith.impl.Op.2(constants.%ImplicitAs.facet.d52) [concrete = constants.%Cpp.long_long.as.MulWith.impl.Op.specific_fn.e6b65e.2]
-// CHECK:STDOUT:   %bound_method.loc21_20.4: <bound method> = bound_method %x.ref.loc21_18, %Cpp.long_long.as.MulWith.impl.Op.specific_fn.loc21
-// CHECK:STDOUT:   %impl.elem0.loc21_22: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %bound_method.loc21_22: <bound method> = bound_method %int_1.loc21, %impl.elem0.loc21_22 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21_22: init %Cpp.long_long = call %bound_method.loc21_22(%int_1.loc21) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc21_22.1: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21_22 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc21_22.2: %Cpp.long_long = converted %int_1.loc21, %.loc21_22.1 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %Cpp.long_long.as.MulWith.impl.Op.call.loc21: init %Cpp.long_long = call %bound_method.loc21_20.4(%x.ref.loc21_18, %.loc21_22.2)
-// CHECK:STDOUT:   %x.ref.loc21_25: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc21: <specific function> = specific_function %AssertSameType.ref.loc21, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc21_20.6: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.MulWith.impl.Op.call.loc21
-// CHECK:STDOUT:   %.loc21_20.7: %Cpp.long_long = converted %Cpp.long_long.as.MulWith.impl.Op.call.loc21, %.loc21_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc21: init %empty_tuple.type = call %AssertSameType.specific_fn.loc21(%.loc21_20.7, %x.ref.loc21_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc22: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc22_18: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %int_1.loc22: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %impl.elem1.loc22: %.e74 = impl_witness_access constants.%DivWith.impl_witness.591, element1 [concrete = constants.%Cpp.long_long.as.DivWith.impl.Op.16569a.2]
-// CHECK:STDOUT:   %bound_method.loc22_20.1: <bound method> = bound_method %x.ref.loc22_18, %impl.elem1.loc22
-// CHECK:STDOUT:   %ImplicitAs.facet.loc22_20.1: %ImplicitAs.type.a03 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.82e) [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %.loc22_20.1: %ImplicitAs.type.a03 = converted Core.IntLiteral, %ImplicitAs.facet.loc22_20.1 [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc22_20.2: %ImplicitAs.type.a03 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.82e) [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %.loc22_20.2: %ImplicitAs.type.a03 = converted Core.IntLiteral, %ImplicitAs.facet.loc22_20.2 [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %specific_fn.loc22: <specific function> = specific_function %impl.elem1.loc22, @Cpp.long_long.as.DivWith.impl.Op.1(constants.%ImplicitAs.facet.d52) [concrete = constants.%Cpp.long_long.as.DivWith.impl.Op.specific_fn.9f24e4.1]
-// CHECK:STDOUT:   %bound_method.loc22_20.2: <bound method> = bound_method %x.ref.loc22_18, %specific_fn.loc22
-// CHECK:STDOUT:   %.loc22_20.3: %Cpp.long_long.as.DivWith.impl.Op.type.0e5a2e.1 = specific_constant imports.%Core.Op.ac1, @Cpp.long_long.as.DivWith.impl.543(constants.%ImplicitAs.facet.d52) [concrete = constants.%Cpp.long_long.as.DivWith.impl.Op.16569a.1]
-// CHECK:STDOUT:   %Op.ref.loc22: %Cpp.long_long.as.DivWith.impl.Op.type.0e5a2e.1 = name_ref Op, %.loc22_20.3 [concrete = constants.%Cpp.long_long.as.DivWith.impl.Op.16569a.1]
-// CHECK:STDOUT:   %Cpp.long_long.as.DivWith.impl.Op.bound.loc22: <bound method> = bound_method %x.ref.loc22_18, %Op.ref.loc22
-// CHECK:STDOUT:   %impl.elem0.loc22_20: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %bound_method.loc22_20.3: <bound method> = bound_method %int_1.loc22, %impl.elem0.loc22_20 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22_20: init %Cpp.long_long = call %bound_method.loc22_20.3(%int_1.loc22) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc22_20.4: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22_20 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc22_20.5: %Cpp.long_long = converted %int_1.loc22, %.loc22_20.4 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %Cpp.long_long.as.DivWith.impl.Op.specific_fn.loc22: <specific function> = specific_function %Op.ref.loc22, @Cpp.long_long.as.DivWith.impl.Op.2(constants.%ImplicitAs.facet.d52) [concrete = constants.%Cpp.long_long.as.DivWith.impl.Op.specific_fn.9f24e4.2]
-// CHECK:STDOUT:   %bound_method.loc22_20.4: <bound method> = bound_method %x.ref.loc22_18, %Cpp.long_long.as.DivWith.impl.Op.specific_fn.loc22
-// CHECK:STDOUT:   %impl.elem0.loc22_22: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %bound_method.loc22_22: <bound method> = bound_method %int_1.loc22, %impl.elem0.loc22_22 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22_22: init %Cpp.long_long = call %bound_method.loc22_22(%int_1.loc22) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc22_22.1: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22_22 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc22_22.2: %Cpp.long_long = converted %int_1.loc22, %.loc22_22.1 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %Cpp.long_long.as.DivWith.impl.Op.call.loc22: init %Cpp.long_long = call %bound_method.loc22_20.4(%x.ref.loc22_18, %.loc22_22.2)
-// CHECK:STDOUT:   %x.ref.loc22_25: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc22: <specific function> = specific_function %AssertSameType.ref.loc22, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc22_20.6: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.DivWith.impl.Op.call.loc22
-// CHECK:STDOUT:   %.loc22_20.7: %Cpp.long_long = converted %Cpp.long_long.as.DivWith.impl.Op.call.loc22, %.loc22_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc22: init %empty_tuple.type = call %AssertSameType.specific_fn.loc22(%.loc22_20.7, %x.ref.loc22_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc23: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc23_18: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %int_1.loc23: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %impl.elem1.loc23: %.c35 = impl_witness_access constants.%ModWith.impl_witness.f74, element1 [concrete = constants.%Cpp.long_long.as.ModWith.impl.Op.7eaa96.2]
-// CHECK:STDOUT:   %bound_method.loc23_20.1: <bound method> = bound_method %x.ref.loc23_18, %impl.elem1.loc23
-// CHECK:STDOUT:   %ImplicitAs.facet.loc23_20.1: %ImplicitAs.type.a03 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.82e) [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %.loc23_20.1: %ImplicitAs.type.a03 = converted Core.IntLiteral, %ImplicitAs.facet.loc23_20.1 [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc23_20.2: %ImplicitAs.type.a03 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.82e) [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %.loc23_20.2: %ImplicitAs.type.a03 = converted Core.IntLiteral, %ImplicitAs.facet.loc23_20.2 [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %specific_fn.loc23: <specific function> = specific_function %impl.elem1.loc23, @Cpp.long_long.as.ModWith.impl.Op.1(constants.%ImplicitAs.facet.d52) [concrete = constants.%Cpp.long_long.as.ModWith.impl.Op.specific_fn.b95c4a.1]
-// CHECK:STDOUT:   %bound_method.loc23_20.2: <bound method> = bound_method %x.ref.loc23_18, %specific_fn.loc23
-// CHECK:STDOUT:   %.loc23_20.3: %Cpp.long_long.as.ModWith.impl.Op.type.3b4b62.1 = specific_constant imports.%Core.Op.a7a, @Cpp.long_long.as.ModWith.impl.18e(constants.%ImplicitAs.facet.d52) [concrete = constants.%Cpp.long_long.as.ModWith.impl.Op.7eaa96.1]
-// CHECK:STDOUT:   %Op.ref.loc23: %Cpp.long_long.as.ModWith.impl.Op.type.3b4b62.1 = name_ref Op, %.loc23_20.3 [concrete = constants.%Cpp.long_long.as.ModWith.impl.Op.7eaa96.1]
-// CHECK:STDOUT:   %Cpp.long_long.as.ModWith.impl.Op.bound.loc23: <bound method> = bound_method %x.ref.loc23_18, %Op.ref.loc23
-// CHECK:STDOUT:   %impl.elem0.loc23_20: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %bound_method.loc23_20.3: <bound method> = bound_method %int_1.loc23, %impl.elem0.loc23_20 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc23_20: init %Cpp.long_long = call %bound_method.loc23_20.3(%int_1.loc23) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc23_20.4: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc23_20 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc23_20.5: %Cpp.long_long = converted %int_1.loc23, %.loc23_20.4 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %Cpp.long_long.as.ModWith.impl.Op.specific_fn.loc23: <specific function> = specific_function %Op.ref.loc23, @Cpp.long_long.as.ModWith.impl.Op.2(constants.%ImplicitAs.facet.d52) [concrete = constants.%Cpp.long_long.as.ModWith.impl.Op.specific_fn.b95c4a.2]
-// CHECK:STDOUT:   %bound_method.loc23_20.4: <bound method> = bound_method %x.ref.loc23_18, %Cpp.long_long.as.ModWith.impl.Op.specific_fn.loc23
-// CHECK:STDOUT:   %impl.elem0.loc23_22: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %bound_method.loc23_22: <bound method> = bound_method %int_1.loc23, %impl.elem0.loc23_22 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc23_22: init %Cpp.long_long = call %bound_method.loc23_22(%int_1.loc23) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc23_22.1: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc23_22 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc23_22.2: %Cpp.long_long = converted %int_1.loc23, %.loc23_22.1 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %Cpp.long_long.as.ModWith.impl.Op.call.loc23: init %Cpp.long_long = call %bound_method.loc23_20.4(%x.ref.loc23_18, %.loc23_22.2)
-// CHECK:STDOUT:   %x.ref.loc23_25: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc23: <specific function> = specific_function %AssertSameType.ref.loc23, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc23_20.6: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.ModWith.impl.Op.call.loc23
-// CHECK:STDOUT:   %.loc23_20.7: %Cpp.long_long = converted %Cpp.long_long.as.ModWith.impl.Op.call.loc23, %.loc23_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc23: init %empty_tuple.type = call %AssertSameType.specific_fn.loc23(%.loc23_20.7, %x.ref.loc23_25)
-// CHECK:STDOUT:   name_binding_decl {
-// CHECK:STDOUT:     %y.patt: %pattern_type.95b = value_binding_pattern y [concrete]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %int_1.loc25: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %.loc25_10: type = splice_block %i64.loc25 [concrete = constants.%i64] {
-// CHECK:STDOUT:     %int_64.loc25: Core.IntLiteral = int_value 64 [concrete = constants.%int_64]
-// CHECK:STDOUT:     %i64.loc25: type = class_type @Int, @Int(constants.%int_64) [concrete = constants.%i64]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %impl.elem0.loc25: %.567 = impl_witness_access constants.%ImplicitAs.impl_witness.556, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.57d]
-// CHECK:STDOUT:   %bound_method.loc25_16.1: <bound method> = bound_method %int_1.loc25, %impl.elem0.loc25 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.102]
-// CHECK:STDOUT:   %specific_fn.loc25: <specific function> = specific_function %impl.elem0.loc25, @Core.IntLiteral.as.ImplicitAs.impl.Convert.1(constants.%int_64) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn]
-// CHECK:STDOUT:   %bound_method.loc25_16.2: <bound method> = bound_method %int_1.loc25, %specific_fn.loc25 [concrete = constants.%bound_method]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc25: init %i64 = call %bound_method.loc25_16.2(%int_1.loc25) [concrete = constants.%int_1.41a]
-// CHECK:STDOUT:   %.loc25_16.1: %i64 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc25 [concrete = constants.%int_1.41a]
-// CHECK:STDOUT:   %.loc25_16.2: %i64 = converted %int_1.loc25, %.loc25_16.1 [concrete = constants.%int_1.41a]
-// CHECK:STDOUT:   %y: %i64 = value_binding y, %.loc25_16.2
-// CHECK:STDOUT:   %AssertSameType.ref.loc26: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc26_18: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %y.ref.loc26: %i64 = name_ref y, %y
-// CHECK:STDOUT:   %impl.elem1.loc26: %.1e9 = impl_witness_access constants.%AddWith.impl_witness.24c, element1 [concrete = constants.%Cpp.long_long.as.AddWith.impl.Op.f65668.2]
-// CHECK:STDOUT:   %bound_method.loc26_20.1: <bound method> = bound_method %x.ref.loc26_18, %impl.elem1.loc26
-// CHECK:STDOUT:   %ImplicitAs.facet.loc26_20.1: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc26_20.1: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc26_20.1 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc26_20.2: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc26_20.2: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc26_20.2 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %specific_fn.loc26: <specific function> = specific_function %impl.elem1.loc26, @Cpp.long_long.as.AddWith.impl.Op.1(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.AddWith.impl.Op.specific_fn.be49b1.1]
-// CHECK:STDOUT:   %bound_method.loc26_20.2: <bound method> = bound_method %x.ref.loc26_18, %specific_fn.loc26
-// CHECK:STDOUT:   %.loc26_20.3: %Cpp.long_long.as.AddWith.impl.Op.type.f5b88b.1 = specific_constant imports.%Core.Op.b7d, @Cpp.long_long.as.AddWith.impl.2ad(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.AddWith.impl.Op.f65668.1]
-// CHECK:STDOUT:   %Op.ref.loc26: %Cpp.long_long.as.AddWith.impl.Op.type.f5b88b.1 = name_ref Op, %.loc26_20.3 [concrete = constants.%Cpp.long_long.as.AddWith.impl.Op.f65668.1]
-// CHECK:STDOUT:   %Cpp.long_long.as.AddWith.impl.Op.bound.loc26: <bound method> = bound_method %x.ref.loc26_18, %Op.ref.loc26
-// CHECK:STDOUT:   %impl.elem0.loc26_20: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc26_20.3: <bound method> = bound_method %y.ref.loc26, %impl.elem0.loc26_20
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc26_20: init %Cpp.long_long = call %bound_method.loc26_20.3(%y.ref.loc26)
-// CHECK:STDOUT:   %.loc26_20.4: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc26_20
-// CHECK:STDOUT:   %.loc26_20.5: %Cpp.long_long = converted %y.ref.loc26, %.loc26_20.4
-// CHECK:STDOUT:   %Cpp.long_long.as.AddWith.impl.Op.specific_fn.loc26: <specific function> = specific_function %Op.ref.loc26, @Cpp.long_long.as.AddWith.impl.Op.2(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.AddWith.impl.Op.specific_fn.be49b1.2]
-// CHECK:STDOUT:   %bound_method.loc26_20.4: <bound method> = bound_method %x.ref.loc26_18, %Cpp.long_long.as.AddWith.impl.Op.specific_fn.loc26
-// CHECK:STDOUT:   %impl.elem0.loc26_22: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc26_22: <bound method> = bound_method %y.ref.loc26, %impl.elem0.loc26_22
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc26_22: init %Cpp.long_long = call %bound_method.loc26_22(%y.ref.loc26)
-// CHECK:STDOUT:   %.loc26_22.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc26_22
-// CHECK:STDOUT:   %.loc26_22.2: %Cpp.long_long = converted %y.ref.loc26, %.loc26_22.1
-// CHECK:STDOUT:   %Cpp.long_long.as.AddWith.impl.Op.call.loc26: init %Cpp.long_long = call %bound_method.loc26_20.4(%x.ref.loc26_18, %.loc26_22.2)
-// CHECK:STDOUT:   %x.ref.loc26_25: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc26: <specific function> = specific_function %AssertSameType.ref.loc26, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc26_20.6: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.AddWith.impl.Op.call.loc26
-// CHECK:STDOUT:   %.loc26_20.7: %Cpp.long_long = converted %Cpp.long_long.as.AddWith.impl.Op.call.loc26, %.loc26_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc26: init %empty_tuple.type = call %AssertSameType.specific_fn.loc26(%.loc26_20.7, %x.ref.loc26_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc27: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc27_18: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %y.ref.loc27: %i64 = name_ref y, %y
-// CHECK:STDOUT:   %impl.elem1.loc27: %.036 = impl_witness_access constants.%SubWith.impl_witness.07a, element1 [concrete = constants.%Cpp.long_long.as.SubWith.impl.Op.85827a.2]
-// CHECK:STDOUT:   %bound_method.loc27_20.1: <bound method> = bound_method %x.ref.loc27_18, %impl.elem1.loc27
-// CHECK:STDOUT:   %ImplicitAs.facet.loc27_20.1: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc27_20.1: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc27_20.1 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc27_20.2: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc27_20.2: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc27_20.2 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %specific_fn.loc27: <specific function> = specific_function %impl.elem1.loc27, @Cpp.long_long.as.SubWith.impl.Op.1(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.SubWith.impl.Op.specific_fn.8f1b07.1]
-// CHECK:STDOUT:   %bound_method.loc27_20.2: <bound method> = bound_method %x.ref.loc27_18, %specific_fn.loc27
-// CHECK:STDOUT:   %.loc27_20.3: %Cpp.long_long.as.SubWith.impl.Op.type.e1aaf1.1 = specific_constant imports.%Core.Op.15a, @Cpp.long_long.as.SubWith.impl.182(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.SubWith.impl.Op.85827a.1]
-// CHECK:STDOUT:   %Op.ref.loc27: %Cpp.long_long.as.SubWith.impl.Op.type.e1aaf1.1 = name_ref Op, %.loc27_20.3 [concrete = constants.%Cpp.long_long.as.SubWith.impl.Op.85827a.1]
-// CHECK:STDOUT:   %Cpp.long_long.as.SubWith.impl.Op.bound.loc27: <bound method> = bound_method %x.ref.loc27_18, %Op.ref.loc27
-// CHECK:STDOUT:   %impl.elem0.loc27_20: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc27_20.3: <bound method> = bound_method %y.ref.loc27, %impl.elem0.loc27_20
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc27_20: init %Cpp.long_long = call %bound_method.loc27_20.3(%y.ref.loc27)
-// CHECK:STDOUT:   %.loc27_20.4: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc27_20
-// CHECK:STDOUT:   %.loc27_20.5: %Cpp.long_long = converted %y.ref.loc27, %.loc27_20.4
-// CHECK:STDOUT:   %Cpp.long_long.as.SubWith.impl.Op.specific_fn.loc27: <specific function> = specific_function %Op.ref.loc27, @Cpp.long_long.as.SubWith.impl.Op.2(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.SubWith.impl.Op.specific_fn.8f1b07.2]
-// CHECK:STDOUT:   %bound_method.loc27_20.4: <bound method> = bound_method %x.ref.loc27_18, %Cpp.long_long.as.SubWith.impl.Op.specific_fn.loc27
-// CHECK:STDOUT:   %impl.elem0.loc27_22: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc27_22: <bound method> = bound_method %y.ref.loc27, %impl.elem0.loc27_22
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc27_22: init %Cpp.long_long = call %bound_method.loc27_22(%y.ref.loc27)
-// CHECK:STDOUT:   %.loc27_22.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc27_22
-// CHECK:STDOUT:   %.loc27_22.2: %Cpp.long_long = converted %y.ref.loc27, %.loc27_22.1
-// CHECK:STDOUT:   %Cpp.long_long.as.SubWith.impl.Op.call.loc27: init %Cpp.long_long = call %bound_method.loc27_20.4(%x.ref.loc27_18, %.loc27_22.2)
-// CHECK:STDOUT:   %x.ref.loc27_25: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc27: <specific function> = specific_function %AssertSameType.ref.loc27, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc27_20.6: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.SubWith.impl.Op.call.loc27
-// CHECK:STDOUT:   %.loc27_20.7: %Cpp.long_long = converted %Cpp.long_long.as.SubWith.impl.Op.call.loc27, %.loc27_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc27: init %empty_tuple.type = call %AssertSameType.specific_fn.loc27(%.loc27_20.7, %x.ref.loc27_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc28: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc28_18: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %y.ref.loc28: %i64 = name_ref y, %y
-// CHECK:STDOUT:   %impl.elem1.loc28: %.830 = impl_witness_access constants.%MulWith.impl_witness.0f5, element1 [concrete = constants.%Cpp.long_long.as.MulWith.impl.Op.dd0f62.2]
-// CHECK:STDOUT:   %bound_method.loc28_20.1: <bound method> = bound_method %x.ref.loc28_18, %impl.elem1.loc28
-// CHECK:STDOUT:   %ImplicitAs.facet.loc28_20.1: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc28_20.1: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc28_20.1 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc28_20.2: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc28_20.2: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc28_20.2 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %specific_fn.loc28: <specific function> = specific_function %impl.elem1.loc28, @Cpp.long_long.as.MulWith.impl.Op.1(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.MulWith.impl.Op.specific_fn.f1361f.1]
-// CHECK:STDOUT:   %bound_method.loc28_20.2: <bound method> = bound_method %x.ref.loc28_18, %specific_fn.loc28
-// CHECK:STDOUT:   %.loc28_20.3: %Cpp.long_long.as.MulWith.impl.Op.type.0f8803.1 = specific_constant imports.%Core.Op.bb0, @Cpp.long_long.as.MulWith.impl.eea(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.MulWith.impl.Op.dd0f62.1]
-// CHECK:STDOUT:   %Op.ref.loc28: %Cpp.long_long.as.MulWith.impl.Op.type.0f8803.1 = name_ref Op, %.loc28_20.3 [concrete = constants.%Cpp.long_long.as.MulWith.impl.Op.dd0f62.1]
-// CHECK:STDOUT:   %Cpp.long_long.as.MulWith.impl.Op.bound.loc28: <bound method> = bound_method %x.ref.loc28_18, %Op.ref.loc28
-// CHECK:STDOUT:   %impl.elem0.loc28_20: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc28_20.3: <bound method> = bound_method %y.ref.loc28, %impl.elem0.loc28_20
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc28_20: init %Cpp.long_long = call %bound_method.loc28_20.3(%y.ref.loc28)
-// CHECK:STDOUT:   %.loc28_20.4: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc28_20
-// CHECK:STDOUT:   %.loc28_20.5: %Cpp.long_long = converted %y.ref.loc28, %.loc28_20.4
-// CHECK:STDOUT:   %Cpp.long_long.as.MulWith.impl.Op.specific_fn.loc28: <specific function> = specific_function %Op.ref.loc28, @Cpp.long_long.as.MulWith.impl.Op.2(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.MulWith.impl.Op.specific_fn.f1361f.2]
-// CHECK:STDOUT:   %bound_method.loc28_20.4: <bound method> = bound_method %x.ref.loc28_18, %Cpp.long_long.as.MulWith.impl.Op.specific_fn.loc28
-// CHECK:STDOUT:   %impl.elem0.loc28_22: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc28_22: <bound method> = bound_method %y.ref.loc28, %impl.elem0.loc28_22
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc28_22: init %Cpp.long_long = call %bound_method.loc28_22(%y.ref.loc28)
-// CHECK:STDOUT:   %.loc28_22.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc28_22
-// CHECK:STDOUT:   %.loc28_22.2: %Cpp.long_long = converted %y.ref.loc28, %.loc28_22.1
-// CHECK:STDOUT:   %Cpp.long_long.as.MulWith.impl.Op.call.loc28: init %Cpp.long_long = call %bound_method.loc28_20.4(%x.ref.loc28_18, %.loc28_22.2)
-// CHECK:STDOUT:   %x.ref.loc28_25: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc28: <specific function> = specific_function %AssertSameType.ref.loc28, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc28_20.6: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.MulWith.impl.Op.call.loc28
-// CHECK:STDOUT:   %.loc28_20.7: %Cpp.long_long = converted %Cpp.long_long.as.MulWith.impl.Op.call.loc28, %.loc28_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc28: init %empty_tuple.type = call %AssertSameType.specific_fn.loc28(%.loc28_20.7, %x.ref.loc28_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc29: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc29_18: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %y.ref.loc29: %i64 = name_ref y, %y
-// CHECK:STDOUT:   %impl.elem1.loc29: %.310 = impl_witness_access constants.%DivWith.impl_witness.4d9, element1 [concrete = constants.%Cpp.long_long.as.DivWith.impl.Op.306cec.2]
-// CHECK:STDOUT:   %bound_method.loc29_20.1: <bound method> = bound_method %x.ref.loc29_18, %impl.elem1.loc29
-// CHECK:STDOUT:   %ImplicitAs.facet.loc29_20.1: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc29_20.1: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc29_20.1 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc29_20.2: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc29_20.2: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc29_20.2 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %specific_fn.loc29: <specific function> = specific_function %impl.elem1.loc29, @Cpp.long_long.as.DivWith.impl.Op.1(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.DivWith.impl.Op.specific_fn.eb685a.1]
-// CHECK:STDOUT:   %bound_method.loc29_20.2: <bound method> = bound_method %x.ref.loc29_18, %specific_fn.loc29
-// CHECK:STDOUT:   %.loc29_20.3: %Cpp.long_long.as.DivWith.impl.Op.type.c562f2.1 = specific_constant imports.%Core.Op.ac1, @Cpp.long_long.as.DivWith.impl.543(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.DivWith.impl.Op.306cec.1]
-// CHECK:STDOUT:   %Op.ref.loc29: %Cpp.long_long.as.DivWith.impl.Op.type.c562f2.1 = name_ref Op, %.loc29_20.3 [concrete = constants.%Cpp.long_long.as.DivWith.impl.Op.306cec.1]
-// CHECK:STDOUT:   %Cpp.long_long.as.DivWith.impl.Op.bound.loc29: <bound method> = bound_method %x.ref.loc29_18, %Op.ref.loc29
-// CHECK:STDOUT:   %impl.elem0.loc29_20: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc29_20.3: <bound method> = bound_method %y.ref.loc29, %impl.elem0.loc29_20
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc29_20: init %Cpp.long_long = call %bound_method.loc29_20.3(%y.ref.loc29)
-// CHECK:STDOUT:   %.loc29_20.4: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc29_20
-// CHECK:STDOUT:   %.loc29_20.5: %Cpp.long_long = converted %y.ref.loc29, %.loc29_20.4
-// CHECK:STDOUT:   %Cpp.long_long.as.DivWith.impl.Op.specific_fn.loc29: <specific function> = specific_function %Op.ref.loc29, @Cpp.long_long.as.DivWith.impl.Op.2(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.DivWith.impl.Op.specific_fn.eb685a.2]
-// CHECK:STDOUT:   %bound_method.loc29_20.4: <bound method> = bound_method %x.ref.loc29_18, %Cpp.long_long.as.DivWith.impl.Op.specific_fn.loc29
-// CHECK:STDOUT:   %impl.elem0.loc29_22: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc29_22: <bound method> = bound_method %y.ref.loc29, %impl.elem0.loc29_22
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc29_22: init %Cpp.long_long = call %bound_method.loc29_22(%y.ref.loc29)
-// CHECK:STDOUT:   %.loc29_22.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc29_22
-// CHECK:STDOUT:   %.loc29_22.2: %Cpp.long_long = converted %y.ref.loc29, %.loc29_22.1
-// CHECK:STDOUT:   %Cpp.long_long.as.DivWith.impl.Op.call.loc29: init %Cpp.long_long = call %bound_method.loc29_20.4(%x.ref.loc29_18, %.loc29_22.2)
-// CHECK:STDOUT:   %x.ref.loc29_25: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc29: <specific function> = specific_function %AssertSameType.ref.loc29, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc29_20.6: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.DivWith.impl.Op.call.loc29
-// CHECK:STDOUT:   %.loc29_20.7: %Cpp.long_long = converted %Cpp.long_long.as.DivWith.impl.Op.call.loc29, %.loc29_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc29: init %empty_tuple.type = call %AssertSameType.specific_fn.loc29(%.loc29_20.7, %x.ref.loc29_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc30: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc30_18: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %y.ref.loc30: %i64 = name_ref y, %y
-// CHECK:STDOUT:   %impl.elem1.loc30: %.7be = impl_witness_access constants.%ModWith.impl_witness.87d, element1 [concrete = constants.%Cpp.long_long.as.ModWith.impl.Op.2a70b6.2]
-// CHECK:STDOUT:   %bound_method.loc30_20.1: <bound method> = bound_method %x.ref.loc30_18, %impl.elem1.loc30
-// CHECK:STDOUT:   %ImplicitAs.facet.loc30_20.1: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc30_20.1: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc30_20.1 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc30_20.2: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc30_20.2: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc30_20.2 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %specific_fn.loc30: <specific function> = specific_function %impl.elem1.loc30, @Cpp.long_long.as.ModWith.impl.Op.1(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.ModWith.impl.Op.specific_fn.0712c6.1]
-// CHECK:STDOUT:   %bound_method.loc30_20.2: <bound method> = bound_method %x.ref.loc30_18, %specific_fn.loc30
-// CHECK:STDOUT:   %.loc30_20.3: %Cpp.long_long.as.ModWith.impl.Op.type.d806b7.1 = specific_constant imports.%Core.Op.a7a, @Cpp.long_long.as.ModWith.impl.18e(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.ModWith.impl.Op.2a70b6.1]
-// CHECK:STDOUT:   %Op.ref.loc30: %Cpp.long_long.as.ModWith.impl.Op.type.d806b7.1 = name_ref Op, %.loc30_20.3 [concrete = constants.%Cpp.long_long.as.ModWith.impl.Op.2a70b6.1]
-// CHECK:STDOUT:   %Cpp.long_long.as.ModWith.impl.Op.bound.loc30: <bound method> = bound_method %x.ref.loc30_18, %Op.ref.loc30
-// CHECK:STDOUT:   %impl.elem0.loc30_20: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc30_20.3: <bound method> = bound_method %y.ref.loc30, %impl.elem0.loc30_20
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc30_20: init %Cpp.long_long = call %bound_method.loc30_20.3(%y.ref.loc30)
-// CHECK:STDOUT:   %.loc30_20.4: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc30_20
-// CHECK:STDOUT:   %.loc30_20.5: %Cpp.long_long = converted %y.ref.loc30, %.loc30_20.4
-// CHECK:STDOUT:   %Cpp.long_long.as.ModWith.impl.Op.specific_fn.loc30: <specific function> = specific_function %Op.ref.loc30, @Cpp.long_long.as.ModWith.impl.Op.2(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.ModWith.impl.Op.specific_fn.0712c6.2]
-// CHECK:STDOUT:   %bound_method.loc30_20.4: <bound method> = bound_method %x.ref.loc30_18, %Cpp.long_long.as.ModWith.impl.Op.specific_fn.loc30
-// CHECK:STDOUT:   %impl.elem0.loc30_22: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc30_22: <bound method> = bound_method %y.ref.loc30, %impl.elem0.loc30_22
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc30_22: init %Cpp.long_long = call %bound_method.loc30_22(%y.ref.loc30)
-// CHECK:STDOUT:   %.loc30_22.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc30_22
-// CHECK:STDOUT:   %.loc30_22.2: %Cpp.long_long = converted %y.ref.loc30, %.loc30_22.1
-// CHECK:STDOUT:   %Cpp.long_long.as.ModWith.impl.Op.call.loc30: init %Cpp.long_long = call %bound_method.loc30_20.4(%x.ref.loc30_18, %.loc30_22.2)
-// CHECK:STDOUT:   %x.ref.loc30_25: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc30: <specific function> = specific_function %AssertSameType.ref.loc30, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc30_20.6: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.ModWith.impl.Op.call.loc30
-// CHECK:STDOUT:   %.loc30_20.7: %Cpp.long_long = converted %Cpp.long_long.as.ModWith.impl.Op.call.loc30, %.loc30_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc30: init %empty_tuple.type = call %AssertSameType.specific_fn.loc30(%.loc30_20.7, %x.ref.loc30_25)
-// CHECK:STDOUT:   <elided>
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: --- arithmetic_heterogeneous_long_long_right_side.carbon
-// CHECK:STDOUT:
-// CHECK:STDOUT: constants {
-// CHECK:STDOUT:   %AssertSameType.type: type = fn_type @AssertSameType [concrete]
-// CHECK:STDOUT:   %empty_tuple.type: type = tuple_type () [concrete]
-// CHECK:STDOUT:   %AssertSameType: %AssertSameType.type = struct_value () [concrete]
-// CHECK:STDOUT:   %int_64: Core.IntLiteral = int_value 64 [concrete]
-// CHECK:STDOUT:   %i64: type = class_type @Int, @Int(%int_64) [concrete]
-// CHECK:STDOUT:   %pattern_type.95b: type = pattern_type %i64 [concrete]
-// CHECK:STDOUT:   %int_1.5b8: Core.IntLiteral = int_value 1 [concrete]
-// CHECK:STDOUT:   %ImplicitAs.type.2ad: type = facet_type <@ImplicitAs, @ImplicitAs(%i64)> [concrete]
-// CHECK:STDOUT:   %ImplicitAs.Convert.type.94e: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i64) [concrete]
-// CHECK:STDOUT:   %To: Core.IntLiteral = symbolic_binding To, 0 [symbolic]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.4e6: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.1, @Core.IntLiteral.as.ImplicitAs.impl.b2d(%To) [symbolic]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.3c2: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.4e6 = struct_value () [symbolic]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness.556: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.74f, @Core.IntLiteral.as.ImplicitAs.impl.b2d(%int_64) [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.b78: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.1, @Core.IntLiteral.as.ImplicitAs.impl.b2d(%int_64) [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.57d: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.b78 = struct_value () [concrete]
-// CHECK:STDOUT:   %ImplicitAs.facet.d48: %ImplicitAs.type.2ad = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.556) [concrete]
-// CHECK:STDOUT:   %.567: type = fn_type_with_self_type %ImplicitAs.Convert.type.94e, %ImplicitAs.facet.d48 [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.102: <bound method> = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.57d [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: <specific function> = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.57d, @Core.IntLiteral.as.ImplicitAs.impl.Convert.1(%int_64) [concrete]
-// CHECK:STDOUT:   %bound_method.288: <bound method> = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete]
-// CHECK:STDOUT:   %int_1.41a: %i64 = int_value 1 [concrete]
-// CHECK:STDOUT:   %Cpp.long_long: type = class_type @LongLong64 [concrete]
-// CHECK:STDOUT:   %pattern_type.76e: type = pattern_type %Cpp.long_long [concrete]
-// CHECK:STDOUT:   %ImplicitAs.type.a03: type = facet_type <@ImplicitAs, @ImplicitAs(%Cpp.long_long)> [concrete]
-// CHECK:STDOUT:   %ImplicitAs.Convert.type.6e4: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Cpp.long_long) [concrete]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness.82e: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.896 [concrete]
-// CHECK:STDOUT:   %ImplicitAs.facet.d52: %ImplicitAs.type.a03 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.82e) [concrete]
-// CHECK:STDOUT:   %.a93: type = fn_type_with_self_type %ImplicitAs.Convert.type.6e4, %ImplicitAs.facet.d52 [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.aba: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.2 [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.a20: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.aba = struct_value () [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae: <bound method> = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.a20 [concrete]
-// CHECK:STDOUT:   %int_1.092: %Cpp.long_long = int_value 1 [concrete]
-// CHECK:STDOUT:   %AddWith.type.e97: type = facet_type <@AddWith, @AddWith(%Cpp.long_long)> [concrete]
-// CHECK:STDOUT:   %AddWith.Op.type.4a8: type = fn_type @AddWith.Op, @AddWith(%Cpp.long_long) [concrete]
-// CHECK:STDOUT:   %T.ea5: %ImplicitAs.type.a03 = symbolic_binding T, 0 [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.type.34704d.1: type = fn_type @T.binding.as_type.as.AddWith.impl.Op.3, @T.binding.as_type.as.AddWith.impl.3cb(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.897736.1: %T.binding.as_type.as.AddWith.impl.Op.type.34704d.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.type.34704d.2: type = fn_type @T.binding.as_type.as.AddWith.impl.Op.4, @T.binding.as_type.as.AddWith.impl.3cb(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.897736.2: %T.binding.as_type.as.AddWith.impl.Op.type.34704d.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness.1b3: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.b19 [concrete]
-// CHECK:STDOUT:   %ImplicitAs.facet.c59: %ImplicitAs.type.a03 = facet_value %i64, (%ImplicitAs.impl_witness.1b3) [concrete]
-// CHECK:STDOUT:   %AddWith.impl_witness.870: <witness> = impl_witness imports.%AddWith.impl_witness_table.36e, @T.binding.as_type.as.AddWith.impl.3cb(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.type.5353e6.1: type = fn_type @T.binding.as_type.as.AddWith.impl.Op.4, @T.binding.as_type.as.AddWith.impl.3cb(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.1269d8.1: %T.binding.as_type.as.AddWith.impl.Op.type.5353e6.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.type.5353e6.2: type = fn_type @T.binding.as_type.as.AddWith.impl.Op.3, @T.binding.as_type.as.AddWith.impl.3cb(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.1269d8.2: %T.binding.as_type.as.AddWith.impl.Op.type.5353e6.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %AddWith.facet.4c4: %AddWith.type.e97 = facet_value %i64, (%AddWith.impl_witness.870) [concrete]
-// CHECK:STDOUT:   %.3bd: type = fn_type_with_self_type %AddWith.Op.type.4a8, %AddWith.facet.4c4 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.specific_fn.468a32.1: <specific function> = specific_function %T.binding.as_type.as.AddWith.impl.Op.1269d8.2, @T.binding.as_type.as.AddWith.impl.Op.3(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.specific_fn.468a32.2: <specific function> = specific_function %T.binding.as_type.as.AddWith.impl.Op.1269d8.1, @T.binding.as_type.as.AddWith.impl.Op.4(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %.b29: type = fn_type_with_self_type %ImplicitAs.Convert.type.6e4, %ImplicitAs.facet.c59 [concrete]
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.type: type = fn_type @i64.as.ImplicitAs.impl.Convert [concrete]
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert: %i64.as.ImplicitAs.impl.Convert.type = struct_value () [concrete]
-// CHECK:STDOUT:   %AssertSameType.specific_fn: <specific function> = specific_function %AssertSameType, @AssertSameType(%Cpp.long_long) [concrete]
-// CHECK:STDOUT:   %SubWith.type.172: type = facet_type <@SubWith, @SubWith(%Cpp.long_long)> [concrete]
-// CHECK:STDOUT:   %SubWith.Op.type.929: type = fn_type @SubWith.Op, @SubWith(%Cpp.long_long) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.type.6d5eac.1: type = fn_type @T.binding.as_type.as.SubWith.impl.Op.3, @T.binding.as_type.as.SubWith.impl.366(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.7bffad.1: %T.binding.as_type.as.SubWith.impl.Op.type.6d5eac.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.type.6d5eac.2: type = fn_type @T.binding.as_type.as.SubWith.impl.Op.4, @T.binding.as_type.as.SubWith.impl.366(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.7bffad.2: %T.binding.as_type.as.SubWith.impl.Op.type.6d5eac.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %SubWith.impl_witness.297: <witness> = impl_witness imports.%SubWith.impl_witness_table.3ce, @T.binding.as_type.as.SubWith.impl.366(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.type.b3c095.1: type = fn_type @T.binding.as_type.as.SubWith.impl.Op.4, @T.binding.as_type.as.SubWith.impl.366(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.83c119.1: %T.binding.as_type.as.SubWith.impl.Op.type.b3c095.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.type.b3c095.2: type = fn_type @T.binding.as_type.as.SubWith.impl.Op.3, @T.binding.as_type.as.SubWith.impl.366(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.83c119.2: %T.binding.as_type.as.SubWith.impl.Op.type.b3c095.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %SubWith.facet.685: %SubWith.type.172 = facet_value %i64, (%SubWith.impl_witness.297) [concrete]
-// CHECK:STDOUT:   %.4af: type = fn_type_with_self_type %SubWith.Op.type.929, %SubWith.facet.685 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.specific_fn.7a43f4.1: <specific function> = specific_function %T.binding.as_type.as.SubWith.impl.Op.83c119.2, @T.binding.as_type.as.SubWith.impl.Op.3(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.specific_fn.7a43f4.2: <specific function> = specific_function %T.binding.as_type.as.SubWith.impl.Op.83c119.1, @T.binding.as_type.as.SubWith.impl.Op.4(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %MulWith.type.693: type = facet_type <@MulWith, @MulWith(%Cpp.long_long)> [concrete]
-// CHECK:STDOUT:   %MulWith.Op.type.1a1: type = fn_type @MulWith.Op, @MulWith(%Cpp.long_long) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.type.c346b9.1: type = fn_type @T.binding.as_type.as.MulWith.impl.Op.3, @T.binding.as_type.as.MulWith.impl.9c8(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.9f3dbd.1: %T.binding.as_type.as.MulWith.impl.Op.type.c346b9.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.type.c346b9.2: type = fn_type @T.binding.as_type.as.MulWith.impl.Op.4, @T.binding.as_type.as.MulWith.impl.9c8(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.9f3dbd.2: %T.binding.as_type.as.MulWith.impl.Op.type.c346b9.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %MulWith.impl_witness.47a: <witness> = impl_witness imports.%MulWith.impl_witness_table.4a2, @T.binding.as_type.as.MulWith.impl.9c8(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.type.e434da.1: type = fn_type @T.binding.as_type.as.MulWith.impl.Op.4, @T.binding.as_type.as.MulWith.impl.9c8(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.40fc91.1: %T.binding.as_type.as.MulWith.impl.Op.type.e434da.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.type.e434da.2: type = fn_type @T.binding.as_type.as.MulWith.impl.Op.3, @T.binding.as_type.as.MulWith.impl.9c8(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.40fc91.2: %T.binding.as_type.as.MulWith.impl.Op.type.e434da.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %MulWith.facet.cb5: %MulWith.type.693 = facet_value %i64, (%MulWith.impl_witness.47a) [concrete]
-// CHECK:STDOUT:   %.326: type = fn_type_with_self_type %MulWith.Op.type.1a1, %MulWith.facet.cb5 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.specific_fn.7c50b1.1: <specific function> = specific_function %T.binding.as_type.as.MulWith.impl.Op.40fc91.2, @T.binding.as_type.as.MulWith.impl.Op.3(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.specific_fn.7c50b1.2: <specific function> = specific_function %T.binding.as_type.as.MulWith.impl.Op.40fc91.1, @T.binding.as_type.as.MulWith.impl.Op.4(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %DivWith.type.f07: type = facet_type <@DivWith, @DivWith(%Cpp.long_long)> [concrete]
-// CHECK:STDOUT:   %DivWith.Op.type.ccd: type = fn_type @DivWith.Op, @DivWith(%Cpp.long_long) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.type.c1995a.1: type = fn_type @T.binding.as_type.as.DivWith.impl.Op.3, @T.binding.as_type.as.DivWith.impl.b8b(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.844df9.1: %T.binding.as_type.as.DivWith.impl.Op.type.c1995a.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.type.c1995a.2: type = fn_type @T.binding.as_type.as.DivWith.impl.Op.4, @T.binding.as_type.as.DivWith.impl.b8b(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.844df9.2: %T.binding.as_type.as.DivWith.impl.Op.type.c1995a.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %DivWith.impl_witness.922: <witness> = impl_witness imports.%DivWith.impl_witness_table.f50, @T.binding.as_type.as.DivWith.impl.b8b(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.type.59d47d.1: type = fn_type @T.binding.as_type.as.DivWith.impl.Op.4, @T.binding.as_type.as.DivWith.impl.b8b(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.12e7c2.1: %T.binding.as_type.as.DivWith.impl.Op.type.59d47d.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.type.59d47d.2: type = fn_type @T.binding.as_type.as.DivWith.impl.Op.3, @T.binding.as_type.as.DivWith.impl.b8b(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.12e7c2.2: %T.binding.as_type.as.DivWith.impl.Op.type.59d47d.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %DivWith.facet.6fc: %DivWith.type.f07 = facet_value %i64, (%DivWith.impl_witness.922) [concrete]
-// CHECK:STDOUT:   %.6ef: type = fn_type_with_self_type %DivWith.Op.type.ccd, %DivWith.facet.6fc [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.specific_fn.4203a1.1: <specific function> = specific_function %T.binding.as_type.as.DivWith.impl.Op.12e7c2.2, @T.binding.as_type.as.DivWith.impl.Op.3(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.specific_fn.4203a1.2: <specific function> = specific_function %T.binding.as_type.as.DivWith.impl.Op.12e7c2.1, @T.binding.as_type.as.DivWith.impl.Op.4(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %ModWith.type.b3d: type = facet_type <@ModWith, @ModWith(%Cpp.long_long)> [concrete]
-// CHECK:STDOUT:   %ModWith.Op.type.9b8: type = fn_type @ModWith.Op, @ModWith(%Cpp.long_long) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.type.a310d9.1: type = fn_type @T.binding.as_type.as.ModWith.impl.Op.3, @T.binding.as_type.as.ModWith.impl.236(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.8be663.1: %T.binding.as_type.as.ModWith.impl.Op.type.a310d9.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.type.a310d9.2: type = fn_type @T.binding.as_type.as.ModWith.impl.Op.4, @T.binding.as_type.as.ModWith.impl.236(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.8be663.2: %T.binding.as_type.as.ModWith.impl.Op.type.a310d9.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %ModWith.impl_witness.8f4: <witness> = impl_witness imports.%ModWith.impl_witness_table.e42, @T.binding.as_type.as.ModWith.impl.236(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.type.e2b11f.1: type = fn_type @T.binding.as_type.as.ModWith.impl.Op.4, @T.binding.as_type.as.ModWith.impl.236(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.5e6d70.1: %T.binding.as_type.as.ModWith.impl.Op.type.e2b11f.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.type.e2b11f.2: type = fn_type @T.binding.as_type.as.ModWith.impl.Op.3, @T.binding.as_type.as.ModWith.impl.236(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.5e6d70.2: %T.binding.as_type.as.ModWith.impl.Op.type.e2b11f.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %ModWith.facet.8c7: %ModWith.type.b3d = facet_value %i64, (%ModWith.impl_witness.8f4) [concrete]
-// CHECK:STDOUT:   %.f0a: type = fn_type_with_self_type %ModWith.Op.type.9b8, %ModWith.facet.8c7 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.specific_fn.e520cf.1: <specific function> = specific_function %T.binding.as_type.as.ModWith.impl.Op.5e6d70.2, @T.binding.as_type.as.ModWith.impl.Op.3(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.specific_fn.e520cf.2: <specific function> = specific_function %T.binding.as_type.as.ModWith.impl.Op.5e6d70.1, @T.binding.as_type.as.ModWith.impl.Op.4(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %AddWith.impl_witness.9d4: <witness> = impl_witness imports.%AddWith.impl_witness_table.36e, @T.binding.as_type.as.AddWith.impl.3cb(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.type.066411.1: type = fn_type @T.binding.as_type.as.AddWith.impl.Op.4, @T.binding.as_type.as.AddWith.impl.3cb(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.bf8142.1: %T.binding.as_type.as.AddWith.impl.Op.type.066411.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.type.066411.2: type = fn_type @T.binding.as_type.as.AddWith.impl.Op.3, @T.binding.as_type.as.AddWith.impl.3cb(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.bf8142.2: %T.binding.as_type.as.AddWith.impl.Op.type.066411.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %AddWith.facet.95c: %AddWith.type.e97 = facet_value Core.IntLiteral, (%AddWith.impl_witness.9d4) [concrete]
-// CHECK:STDOUT:   %.179: type = fn_type_with_self_type %AddWith.Op.type.4a8, %AddWith.facet.95c [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.bound.605e02.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.AddWith.impl.Op.bf8142.2 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.specific_fn.9c4571.1: <specific function> = specific_function %T.binding.as_type.as.AddWith.impl.Op.bf8142.2, @T.binding.as_type.as.AddWith.impl.Op.3(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %bound_method.e3fb08.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.AddWith.impl.Op.specific_fn.9c4571.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.bound.605e02.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.AddWith.impl.Op.bf8142.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.specific_fn.9c4571.2: <specific function> = specific_function %T.binding.as_type.as.AddWith.impl.Op.bf8142.1, @T.binding.as_type.as.AddWith.impl.Op.4(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %bound_method.e3fb08.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.AddWith.impl.Op.specific_fn.9c4571.2 [concrete]
-// CHECK:STDOUT:   %SubWith.impl_witness.b03: <witness> = impl_witness imports.%SubWith.impl_witness_table.3ce, @T.binding.as_type.as.SubWith.impl.366(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.type.a9ed32.1: type = fn_type @T.binding.as_type.as.SubWith.impl.Op.4, @T.binding.as_type.as.SubWith.impl.366(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.fe5aec.1: %T.binding.as_type.as.SubWith.impl.Op.type.a9ed32.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.type.a9ed32.2: type = fn_type @T.binding.as_type.as.SubWith.impl.Op.3, @T.binding.as_type.as.SubWith.impl.366(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.fe5aec.2: %T.binding.as_type.as.SubWith.impl.Op.type.a9ed32.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %SubWith.facet.13e: %SubWith.type.172 = facet_value Core.IntLiteral, (%SubWith.impl_witness.b03) [concrete]
-// CHECK:STDOUT:   %.83a: type = fn_type_with_self_type %SubWith.Op.type.929, %SubWith.facet.13e [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.bound.bb7ef2.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.SubWith.impl.Op.fe5aec.2 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.specific_fn.a8a25c.1: <specific function> = specific_function %T.binding.as_type.as.SubWith.impl.Op.fe5aec.2, @T.binding.as_type.as.SubWith.impl.Op.3(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %bound_method.703d6e.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.SubWith.impl.Op.specific_fn.a8a25c.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.bound.bb7ef2.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.SubWith.impl.Op.fe5aec.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.specific_fn.a8a25c.2: <specific function> = specific_function %T.binding.as_type.as.SubWith.impl.Op.fe5aec.1, @T.binding.as_type.as.SubWith.impl.Op.4(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %bound_method.703d6e.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.SubWith.impl.Op.specific_fn.a8a25c.2 [concrete]
-// CHECK:STDOUT:   %MulWith.impl_witness.452: <witness> = impl_witness imports.%MulWith.impl_witness_table.4a2, @T.binding.as_type.as.MulWith.impl.9c8(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.type.4ddc19.1: type = fn_type @T.binding.as_type.as.MulWith.impl.Op.4, @T.binding.as_type.as.MulWith.impl.9c8(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.b572bf.1: %T.binding.as_type.as.MulWith.impl.Op.type.4ddc19.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.type.4ddc19.2: type = fn_type @T.binding.as_type.as.MulWith.impl.Op.3, @T.binding.as_type.as.MulWith.impl.9c8(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.b572bf.2: %T.binding.as_type.as.MulWith.impl.Op.type.4ddc19.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %MulWith.facet.a47: %MulWith.type.693 = facet_value Core.IntLiteral, (%MulWith.impl_witness.452) [concrete]
-// CHECK:STDOUT:   %.083: type = fn_type_with_self_type %MulWith.Op.type.1a1, %MulWith.facet.a47 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.bound.cc8bc8.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.MulWith.impl.Op.b572bf.2 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.specific_fn.c40ccc.1: <specific function> = specific_function %T.binding.as_type.as.MulWith.impl.Op.b572bf.2, @T.binding.as_type.as.MulWith.impl.Op.3(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %bound_method.5e5b06.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.MulWith.impl.Op.specific_fn.c40ccc.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.bound.cc8bc8.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.MulWith.impl.Op.b572bf.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.specific_fn.c40ccc.2: <specific function> = specific_function %T.binding.as_type.as.MulWith.impl.Op.b572bf.1, @T.binding.as_type.as.MulWith.impl.Op.4(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %bound_method.5e5b06.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.MulWith.impl.Op.specific_fn.c40ccc.2 [concrete]
-// CHECK:STDOUT:   %DivWith.impl_witness.8ae: <witness> = impl_witness imports.%DivWith.impl_witness_table.f50, @T.binding.as_type.as.DivWith.impl.b8b(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.type.a76bb3.1: type = fn_type @T.binding.as_type.as.DivWith.impl.Op.4, @T.binding.as_type.as.DivWith.impl.b8b(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.bb0620.1: %T.binding.as_type.as.DivWith.impl.Op.type.a76bb3.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.type.a76bb3.2: type = fn_type @T.binding.as_type.as.DivWith.impl.Op.3, @T.binding.as_type.as.DivWith.impl.b8b(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.bb0620.2: %T.binding.as_type.as.DivWith.impl.Op.type.a76bb3.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %DivWith.facet.286: %DivWith.type.f07 = facet_value Core.IntLiteral, (%DivWith.impl_witness.8ae) [concrete]
-// CHECK:STDOUT:   %.c95: type = fn_type_with_self_type %DivWith.Op.type.ccd, %DivWith.facet.286 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.bound.e9391e.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.DivWith.impl.Op.bb0620.2 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.specific_fn.c11faf.1: <specific function> = specific_function %T.binding.as_type.as.DivWith.impl.Op.bb0620.2, @T.binding.as_type.as.DivWith.impl.Op.3(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %bound_method.91b5ad.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.DivWith.impl.Op.specific_fn.c11faf.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.bound.e9391e.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.DivWith.impl.Op.bb0620.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.specific_fn.c11faf.2: <specific function> = specific_function %T.binding.as_type.as.DivWith.impl.Op.bb0620.1, @T.binding.as_type.as.DivWith.impl.Op.4(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %bound_method.91b5ad.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.DivWith.impl.Op.specific_fn.c11faf.2 [concrete]
-// CHECK:STDOUT:   %ModWith.impl_witness.17a: <witness> = impl_witness imports.%ModWith.impl_witness_table.e42, @T.binding.as_type.as.ModWith.impl.236(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.type.8239b7.1: type = fn_type @T.binding.as_type.as.ModWith.impl.Op.4, @T.binding.as_type.as.ModWith.impl.236(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.97c315.1: %T.binding.as_type.as.ModWith.impl.Op.type.8239b7.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.type.8239b7.2: type = fn_type @T.binding.as_type.as.ModWith.impl.Op.3, @T.binding.as_type.as.ModWith.impl.236(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.97c315.2: %T.binding.as_type.as.ModWith.impl.Op.type.8239b7.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %ModWith.facet.254: %ModWith.type.b3d = facet_value Core.IntLiteral, (%ModWith.impl_witness.17a) [concrete]
-// CHECK:STDOUT:   %.738: type = fn_type_with_self_type %ModWith.Op.type.9b8, %ModWith.facet.254 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.bound.9f87a0.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.ModWith.impl.Op.97c315.2 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.specific_fn.c19386.1: <specific function> = specific_function %T.binding.as_type.as.ModWith.impl.Op.97c315.2, @T.binding.as_type.as.ModWith.impl.Op.3(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %bound_method.1e0cef.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.ModWith.impl.Op.specific_fn.c19386.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.bound.9f87a0.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.ModWith.impl.Op.97c315.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.specific_fn.c19386.2: <specific function> = specific_function %T.binding.as_type.as.ModWith.impl.Op.97c315.1, @T.binding.as_type.as.ModWith.impl.Op.4(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %bound_method.1e0cef.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.ModWith.impl.Op.specific_fn.c19386.2 [concrete]
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %Cpp: <namespace> = namespace file.%Cpp.import_cpp, [concrete] {
-// CHECK:STDOUT:     .long_long = constants.%Cpp.long_long
-// CHECK:STDOUT:     import Cpp//...
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %Core.import_ref.42d: @Core.IntLiteral.as.ImplicitAs.impl.b2d.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.4e6) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.b2d.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3c2)]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness_table.74f = impl_witness_table (%Core.import_ref.42d), @Core.IntLiteral.as.ImplicitAs.impl.b2d [concrete]
-// CHECK:STDOUT:   %Core.import_ref.d64: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.aba = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness_table.896 = impl_witness_table (%Core.import_ref.d64), @Core.IntLiteral.as.ImplicitAs.impl.a26 [concrete]
-// CHECK:STDOUT:   %Core.import_ref.ce3a05.2 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.675: @T.binding.as_type.as.AddWith.impl.3cb.%T.binding.as_type.as.AddWith.impl.Op.type.2 (%T.binding.as_type.as.AddWith.impl.Op.type.34704d.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @T.binding.as_type.as.AddWith.impl.3cb.%T.binding.as_type.as.AddWith.impl.Op.2 (constants.%T.binding.as_type.as.AddWith.impl.Op.897736.1)]
-// CHECK:STDOUT:   %AddWith.impl_witness_table.36e = impl_witness_table (%Core.import_ref.ce3a05.2, %Core.import_ref.675), @T.binding.as_type.as.AddWith.impl.3cb [concrete]
-// CHECK:STDOUT:   %Core.Op.70b: @T.binding.as_type.as.AddWith.impl.3cb.%T.binding.as_type.as.AddWith.impl.Op.type.1 (%T.binding.as_type.as.AddWith.impl.Op.type.34704d.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @T.binding.as_type.as.AddWith.impl.3cb.%T.binding.as_type.as.AddWith.impl.Op.1 (constants.%T.binding.as_type.as.AddWith.impl.Op.897736.2)]
-// CHECK:STDOUT:   %Core.import_ref.4f4b: %i64.as.ImplicitAs.impl.Convert.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness_table.b19 = impl_witness_table (%Core.import_ref.4f4b), @i64.as.ImplicitAs.impl [concrete]
-// CHECK:STDOUT:   %Core.import_ref.ce3a05.4 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.721: @T.binding.as_type.as.SubWith.impl.366.%T.binding.as_type.as.SubWith.impl.Op.type.2 (%T.binding.as_type.as.SubWith.impl.Op.type.6d5eac.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @T.binding.as_type.as.SubWith.impl.366.%T.binding.as_type.as.SubWith.impl.Op.2 (constants.%T.binding.as_type.as.SubWith.impl.Op.7bffad.1)]
-// CHECK:STDOUT:   %SubWith.impl_witness_table.3ce = impl_witness_table (%Core.import_ref.ce3a05.4, %Core.import_ref.721), @T.binding.as_type.as.SubWith.impl.366 [concrete]
-// CHECK:STDOUT:   %Core.Op.deb: @T.binding.as_type.as.SubWith.impl.366.%T.binding.as_type.as.SubWith.impl.Op.type.1 (%T.binding.as_type.as.SubWith.impl.Op.type.6d5eac.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @T.binding.as_type.as.SubWith.impl.366.%T.binding.as_type.as.SubWith.impl.Op.1 (constants.%T.binding.as_type.as.SubWith.impl.Op.7bffad.2)]
-// CHECK:STDOUT:   %Core.import_ref.ce3a05.6 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.f6e: @T.binding.as_type.as.MulWith.impl.9c8.%T.binding.as_type.as.MulWith.impl.Op.type.2 (%T.binding.as_type.as.MulWith.impl.Op.type.c346b9.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @T.binding.as_type.as.MulWith.impl.9c8.%T.binding.as_type.as.MulWith.impl.Op.2 (constants.%T.binding.as_type.as.MulWith.impl.Op.9f3dbd.1)]
-// CHECK:STDOUT:   %MulWith.impl_witness_table.4a2 = impl_witness_table (%Core.import_ref.ce3a05.6, %Core.import_ref.f6e), @T.binding.as_type.as.MulWith.impl.9c8 [concrete]
-// CHECK:STDOUT:   %Core.Op.16e: @T.binding.as_type.as.MulWith.impl.9c8.%T.binding.as_type.as.MulWith.impl.Op.type.1 (%T.binding.as_type.as.MulWith.impl.Op.type.c346b9.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @T.binding.as_type.as.MulWith.impl.9c8.%T.binding.as_type.as.MulWith.impl.Op.1 (constants.%T.binding.as_type.as.MulWith.impl.Op.9f3dbd.2)]
-// CHECK:STDOUT:   %Core.import_ref.ce3a05.8 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.f50: @T.binding.as_type.as.DivWith.impl.b8b.%T.binding.as_type.as.DivWith.impl.Op.type.2 (%T.binding.as_type.as.DivWith.impl.Op.type.c1995a.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @T.binding.as_type.as.DivWith.impl.b8b.%T.binding.as_type.as.DivWith.impl.Op.2 (constants.%T.binding.as_type.as.DivWith.impl.Op.844df9.1)]
-// CHECK:STDOUT:   %DivWith.impl_witness_table.f50 = impl_witness_table (%Core.import_ref.ce3a05.8, %Core.import_ref.f50), @T.binding.as_type.as.DivWith.impl.b8b [concrete]
-// CHECK:STDOUT:   %Core.Op.6d6: @T.binding.as_type.as.DivWith.impl.b8b.%T.binding.as_type.as.DivWith.impl.Op.type.1 (%T.binding.as_type.as.DivWith.impl.Op.type.c1995a.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @T.binding.as_type.as.DivWith.impl.b8b.%T.binding.as_type.as.DivWith.impl.Op.1 (constants.%T.binding.as_type.as.DivWith.impl.Op.844df9.2)]
-// CHECK:STDOUT:   %Core.import_ref.ce3a05.10 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.4d5: @T.binding.as_type.as.ModWith.impl.236.%T.binding.as_type.as.ModWith.impl.Op.type.2 (%T.binding.as_type.as.ModWith.impl.Op.type.a310d9.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @T.binding.as_type.as.ModWith.impl.236.%T.binding.as_type.as.ModWith.impl.Op.2 (constants.%T.binding.as_type.as.ModWith.impl.Op.8be663.1)]
-// CHECK:STDOUT:   %ModWith.impl_witness_table.e42 = impl_witness_table (%Core.import_ref.ce3a05.10, %Core.import_ref.4d5), @T.binding.as_type.as.ModWith.impl.236 [concrete]
-// CHECK:STDOUT:   %Core.Op.498: @T.binding.as_type.as.ModWith.impl.236.%T.binding.as_type.as.ModWith.impl.Op.type.1 (%T.binding.as_type.as.ModWith.impl.Op.type.a310d9.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @T.binding.as_type.as.ModWith.impl.236.%T.binding.as_type.as.ModWith.impl.Op.1 (constants.%T.binding.as_type.as.ModWith.impl.Op.8be663.2)]
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: fn @ArithmeticHeterogeneousLongLongRightSide() {
-// CHECK:STDOUT: !entry:
-// CHECK:STDOUT:   <elided>
-// CHECK:STDOUT:   name_binding_decl {
-// CHECK:STDOUT:     %x.patt: %pattern_type.76e = value_binding_pattern x [concrete]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %int_1.loc11: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %.loc11_13: type = splice_block %long_long.ref [concrete = constants.%Cpp.long_long] {
-// CHECK:STDOUT:     %Cpp.ref: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
-// CHECK:STDOUT:     %long_long.ref: type = name_ref long_long, constants.%Cpp.long_long [concrete = constants.%Cpp.long_long]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %impl.elem0.loc11: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %bound_method.loc11: <bound method> = bound_method %int_1.loc11, %impl.elem0.loc11 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc11: init %Cpp.long_long = call %bound_method.loc11(%int_1.loc11) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc11_26.1: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc11 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc11_26.2: %Cpp.long_long = converted %int_1.loc11, %.loc11_26.1 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %x: %Cpp.long_long = value_binding x, %.loc11_26.2
-// CHECK:STDOUT:   %AssertSameType.ref.loc12: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %b.ref.loc12: %i64 = name_ref b, %b
-// CHECK:STDOUT:   %x.ref.loc12_22: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %impl.elem1.loc12: %.3bd = impl_witness_access constants.%AddWith.impl_witness.870, element1 [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.1269d8.2]
-// CHECK:STDOUT:   %bound_method.loc12_20.1: <bound method> = bound_method %b.ref.loc12, %impl.elem1.loc12
-// CHECK:STDOUT:   %specific_fn.loc12: <specific function> = specific_function %impl.elem1.loc12, @T.binding.as_type.as.AddWith.impl.Op.3(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.specific_fn.468a32.1]
-// CHECK:STDOUT:   %bound_method.loc12_20.2: <bound method> = bound_method %b.ref.loc12, %specific_fn.loc12
-// CHECK:STDOUT:   %.loc12_20.1: %T.binding.as_type.as.AddWith.impl.Op.type.5353e6.1 = specific_constant imports.%Core.Op.70b, @T.binding.as_type.as.AddWith.impl.3cb(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.1269d8.1]
-// CHECK:STDOUT:   %Op.ref.loc12: %T.binding.as_type.as.AddWith.impl.Op.type.5353e6.1 = name_ref Op, %.loc12_20.1 [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.1269d8.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.bound.loc12: <bound method> = bound_method %b.ref.loc12, %Op.ref.loc12
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.specific_fn.loc12: <specific function> = specific_function %Op.ref.loc12, @T.binding.as_type.as.AddWith.impl.Op.4(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.specific_fn.468a32.2]
-// CHECK:STDOUT:   %bound_method.loc12_20.3: <bound method> = bound_method %b.ref.loc12, %T.binding.as_type.as.AddWith.impl.Op.specific_fn.loc12
-// CHECK:STDOUT:   %impl.elem0.loc12: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc12_18: <bound method> = bound_method %b.ref.loc12, %impl.elem0.loc12
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc12: init %Cpp.long_long = call %bound_method.loc12_18(%b.ref.loc12)
-// CHECK:STDOUT:   %.loc12_18.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc12
-// CHECK:STDOUT:   %.loc12_18.2: %Cpp.long_long = converted %b.ref.loc12, %.loc12_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.call.loc12: init %Cpp.long_long = call %bound_method.loc12_20.3(%.loc12_18.2, %x.ref.loc12_22)
-// CHECK:STDOUT:   %x.ref.loc12_25: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc12: <specific function> = specific_function %AssertSameType.ref.loc12, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc12_20.2: %Cpp.long_long = value_of_initializer %T.binding.as_type.as.AddWith.impl.Op.call.loc12
-// CHECK:STDOUT:   %.loc12_20.3: %Cpp.long_long = converted %T.binding.as_type.as.AddWith.impl.Op.call.loc12, %.loc12_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc12: init %empty_tuple.type = call %AssertSameType.specific_fn.loc12(%.loc12_20.3, %x.ref.loc12_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc13: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %b.ref.loc13: %i64 = name_ref b, %b
-// CHECK:STDOUT:   %x.ref.loc13_22: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %impl.elem1.loc13: %.4af = impl_witness_access constants.%SubWith.impl_witness.297, element1 [concrete = constants.%T.binding.as_type.as.SubWith.impl.Op.83c119.2]
-// CHECK:STDOUT:   %bound_method.loc13_20.1: <bound method> = bound_method %b.ref.loc13, %impl.elem1.loc13
-// CHECK:STDOUT:   %specific_fn.loc13: <specific function> = specific_function %impl.elem1.loc13, @T.binding.as_type.as.SubWith.impl.Op.3(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.SubWith.impl.Op.specific_fn.7a43f4.1]
-// CHECK:STDOUT:   %bound_method.loc13_20.2: <bound method> = bound_method %b.ref.loc13, %specific_fn.loc13
-// CHECK:STDOUT:   %.loc13_20.1: %T.binding.as_type.as.SubWith.impl.Op.type.b3c095.1 = specific_constant imports.%Core.Op.deb, @T.binding.as_type.as.SubWith.impl.366(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.SubWith.impl.Op.83c119.1]
-// CHECK:STDOUT:   %Op.ref.loc13: %T.binding.as_type.as.SubWith.impl.Op.type.b3c095.1 = name_ref Op, %.loc13_20.1 [concrete = constants.%T.binding.as_type.as.SubWith.impl.Op.83c119.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.bound.loc13: <bound method> = bound_method %b.ref.loc13, %Op.ref.loc13
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.specific_fn.loc13: <specific function> = specific_function %Op.ref.loc13, @T.binding.as_type.as.SubWith.impl.Op.4(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.SubWith.impl.Op.specific_fn.7a43f4.2]
-// CHECK:STDOUT:   %bound_method.loc13_20.3: <bound method> = bound_method %b.ref.loc13, %T.binding.as_type.as.SubWith.impl.Op.specific_fn.loc13
-// CHECK:STDOUT:   %impl.elem0.loc13: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc13_18: <bound method> = bound_method %b.ref.loc13, %impl.elem0.loc13
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc13: init %Cpp.long_long = call %bound_method.loc13_18(%b.ref.loc13)
-// CHECK:STDOUT:   %.loc13_18.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc13
-// CHECK:STDOUT:   %.loc13_18.2: %Cpp.long_long = converted %b.ref.loc13, %.loc13_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.call.loc13: init %Cpp.long_long = call %bound_method.loc13_20.3(%.loc13_18.2, %x.ref.loc13_22)
-// CHECK:STDOUT:   %x.ref.loc13_25: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc13: <specific function> = specific_function %AssertSameType.ref.loc13, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc13_20.2: %Cpp.long_long = value_of_initializer %T.binding.as_type.as.SubWith.impl.Op.call.loc13
-// CHECK:STDOUT:   %.loc13_20.3: %Cpp.long_long = converted %T.binding.as_type.as.SubWith.impl.Op.call.loc13, %.loc13_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc13: init %empty_tuple.type = call %AssertSameType.specific_fn.loc13(%.loc13_20.3, %x.ref.loc13_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc14: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %b.ref.loc14: %i64 = name_ref b, %b
-// CHECK:STDOUT:   %x.ref.loc14_22: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %impl.elem1.loc14: %.326 = impl_witness_access constants.%MulWith.impl_witness.47a, element1 [concrete = constants.%T.binding.as_type.as.MulWith.impl.Op.40fc91.2]
-// CHECK:STDOUT:   %bound_method.loc14_20.1: <bound method> = bound_method %b.ref.loc14, %impl.elem1.loc14
-// CHECK:STDOUT:   %specific_fn.loc14: <specific function> = specific_function %impl.elem1.loc14, @T.binding.as_type.as.MulWith.impl.Op.3(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.MulWith.impl.Op.specific_fn.7c50b1.1]
-// CHECK:STDOUT:   %bound_method.loc14_20.2: <bound method> = bound_method %b.ref.loc14, %specific_fn.loc14
-// CHECK:STDOUT:   %.loc14_20.1: %T.binding.as_type.as.MulWith.impl.Op.type.e434da.1 = specific_constant imports.%Core.Op.16e, @T.binding.as_type.as.MulWith.impl.9c8(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.MulWith.impl.Op.40fc91.1]
-// CHECK:STDOUT:   %Op.ref.loc14: %T.binding.as_type.as.MulWith.impl.Op.type.e434da.1 = name_ref Op, %.loc14_20.1 [concrete = constants.%T.binding.as_type.as.MulWith.impl.Op.40fc91.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.bound.loc14: <bound method> = bound_method %b.ref.loc14, %Op.ref.loc14
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.specific_fn.loc14: <specific function> = specific_function %Op.ref.loc14, @T.binding.as_type.as.MulWith.impl.Op.4(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.MulWith.impl.Op.specific_fn.7c50b1.2]
-// CHECK:STDOUT:   %bound_method.loc14_20.3: <bound method> = bound_method %b.ref.loc14, %T.binding.as_type.as.MulWith.impl.Op.specific_fn.loc14
-// CHECK:STDOUT:   %impl.elem0.loc14: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc14_18: <bound method> = bound_method %b.ref.loc14, %impl.elem0.loc14
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc14: init %Cpp.long_long = call %bound_method.loc14_18(%b.ref.loc14)
-// CHECK:STDOUT:   %.loc14_18.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc14
-// CHECK:STDOUT:   %.loc14_18.2: %Cpp.long_long = converted %b.ref.loc14, %.loc14_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.call.loc14: init %Cpp.long_long = call %bound_method.loc14_20.3(%.loc14_18.2, %x.ref.loc14_22)
-// CHECK:STDOUT:   %x.ref.loc14_25: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc14: <specific function> = specific_function %AssertSameType.ref.loc14, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc14_20.2: %Cpp.long_long = value_of_initializer %T.binding.as_type.as.MulWith.impl.Op.call.loc14
-// CHECK:STDOUT:   %.loc14_20.3: %Cpp.long_long = converted %T.binding.as_type.as.MulWith.impl.Op.call.loc14, %.loc14_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc14: init %empty_tuple.type = call %AssertSameType.specific_fn.loc14(%.loc14_20.3, %x.ref.loc14_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc15: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %b.ref.loc15: %i64 = name_ref b, %b
-// CHECK:STDOUT:   %x.ref.loc15_22: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %impl.elem1.loc15: %.6ef = impl_witness_access constants.%DivWith.impl_witness.922, element1 [concrete = constants.%T.binding.as_type.as.DivWith.impl.Op.12e7c2.2]
-// CHECK:STDOUT:   %bound_method.loc15_20.1: <bound method> = bound_method %b.ref.loc15, %impl.elem1.loc15
-// CHECK:STDOUT:   %specific_fn.loc15: <specific function> = specific_function %impl.elem1.loc15, @T.binding.as_type.as.DivWith.impl.Op.3(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.DivWith.impl.Op.specific_fn.4203a1.1]
-// CHECK:STDOUT:   %bound_method.loc15_20.2: <bound method> = bound_method %b.ref.loc15, %specific_fn.loc15
-// CHECK:STDOUT:   %.loc15_20.1: %T.binding.as_type.as.DivWith.impl.Op.type.59d47d.1 = specific_constant imports.%Core.Op.6d6, @T.binding.as_type.as.DivWith.impl.b8b(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.DivWith.impl.Op.12e7c2.1]
-// CHECK:STDOUT:   %Op.ref.loc15: %T.binding.as_type.as.DivWith.impl.Op.type.59d47d.1 = name_ref Op, %.loc15_20.1 [concrete = constants.%T.binding.as_type.as.DivWith.impl.Op.12e7c2.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.bound.loc15: <bound method> = bound_method %b.ref.loc15, %Op.ref.loc15
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.specific_fn.loc15: <specific function> = specific_function %Op.ref.loc15, @T.binding.as_type.as.DivWith.impl.Op.4(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.DivWith.impl.Op.specific_fn.4203a1.2]
-// CHECK:STDOUT:   %bound_method.loc15_20.3: <bound method> = bound_method %b.ref.loc15, %T.binding.as_type.as.DivWith.impl.Op.specific_fn.loc15
-// CHECK:STDOUT:   %impl.elem0.loc15: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc15_18: <bound method> = bound_method %b.ref.loc15, %impl.elem0.loc15
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc15: init %Cpp.long_long = call %bound_method.loc15_18(%b.ref.loc15)
-// CHECK:STDOUT:   %.loc15_18.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc15
-// CHECK:STDOUT:   %.loc15_18.2: %Cpp.long_long = converted %b.ref.loc15, %.loc15_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.call.loc15: init %Cpp.long_long = call %bound_method.loc15_20.3(%.loc15_18.2, %x.ref.loc15_22)
-// CHECK:STDOUT:   %x.ref.loc15_25: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc15: <specific function> = specific_function %AssertSameType.ref.loc15, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc15_20.2: %Cpp.long_long = value_of_initializer %T.binding.as_type.as.DivWith.impl.Op.call.loc15
-// CHECK:STDOUT:   %.loc15_20.3: %Cpp.long_long = converted %T.binding.as_type.as.DivWith.impl.Op.call.loc15, %.loc15_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc15: init %empty_tuple.type = call %AssertSameType.specific_fn.loc15(%.loc15_20.3, %x.ref.loc15_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc16: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %b.ref.loc16: %i64 = name_ref b, %b
-// CHECK:STDOUT:   %x.ref.loc16_22: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %impl.elem1.loc16: %.f0a = impl_witness_access constants.%ModWith.impl_witness.8f4, element1 [concrete = constants.%T.binding.as_type.as.ModWith.impl.Op.5e6d70.2]
-// CHECK:STDOUT:   %bound_method.loc16_20.1: <bound method> = bound_method %b.ref.loc16, %impl.elem1.loc16
-// CHECK:STDOUT:   %specific_fn.loc16: <specific function> = specific_function %impl.elem1.loc16, @T.binding.as_type.as.ModWith.impl.Op.3(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.ModWith.impl.Op.specific_fn.e520cf.1]
-// CHECK:STDOUT:   %bound_method.loc16_20.2: <bound method> = bound_method %b.ref.loc16, %specific_fn.loc16
-// CHECK:STDOUT:   %.loc16_20.1: %T.binding.as_type.as.ModWith.impl.Op.type.e2b11f.1 = specific_constant imports.%Core.Op.498, @T.binding.as_type.as.ModWith.impl.236(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.ModWith.impl.Op.5e6d70.1]
-// CHECK:STDOUT:   %Op.ref.loc16: %T.binding.as_type.as.ModWith.impl.Op.type.e2b11f.1 = name_ref Op, %.loc16_20.1 [concrete = constants.%T.binding.as_type.as.ModWith.impl.Op.5e6d70.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.bound.loc16: <bound method> = bound_method %b.ref.loc16, %Op.ref.loc16
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.specific_fn.loc16: <specific function> = specific_function %Op.ref.loc16, @T.binding.as_type.as.ModWith.impl.Op.4(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.ModWith.impl.Op.specific_fn.e520cf.2]
-// CHECK:STDOUT:   %bound_method.loc16_20.3: <bound method> = bound_method %b.ref.loc16, %T.binding.as_type.as.ModWith.impl.Op.specific_fn.loc16
-// CHECK:STDOUT:   %impl.elem0.loc16: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc16_18: <bound method> = bound_method %b.ref.loc16, %impl.elem0.loc16
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc16: init %Cpp.long_long = call %bound_method.loc16_18(%b.ref.loc16)
-// CHECK:STDOUT:   %.loc16_18.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc16
-// CHECK:STDOUT:   %.loc16_18.2: %Cpp.long_long = converted %b.ref.loc16, %.loc16_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.call.loc16: init %Cpp.long_long = call %bound_method.loc16_20.3(%.loc16_18.2, %x.ref.loc16_22)
-// CHECK:STDOUT:   %x.ref.loc16_25: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc16: <specific function> = specific_function %AssertSameType.ref.loc16, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc16_20.2: %Cpp.long_long = value_of_initializer %T.binding.as_type.as.ModWith.impl.Op.call.loc16
-// CHECK:STDOUT:   %.loc16_20.3: %Cpp.long_long = converted %T.binding.as_type.as.ModWith.impl.Op.call.loc16, %.loc16_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc16: init %empty_tuple.type = call %AssertSameType.specific_fn.loc16(%.loc16_20.3, %x.ref.loc16_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc18: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %int_1.loc18: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %x.ref.loc18_22: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %impl.elem1.loc18: %.179 = impl_witness_access constants.%AddWith.impl_witness.9d4, element1 [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.bf8142.2]
-// CHECK:STDOUT:   %bound_method.loc18_20.1: <bound method> = bound_method %int_1.loc18, %impl.elem1.loc18 [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.bound.605e02.1]
-// CHECK:STDOUT:   %specific_fn.loc18: <specific function> = specific_function %impl.elem1.loc18, @T.binding.as_type.as.AddWith.impl.Op.3(constants.%ImplicitAs.facet.d52) [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.specific_fn.9c4571.1]
-// CHECK:STDOUT:   %bound_method.loc18_20.2: <bound method> = bound_method %int_1.loc18, %specific_fn.loc18 [concrete = constants.%bound_method.e3fb08.1]
-// CHECK:STDOUT:   %.loc18_20.1: %T.binding.as_type.as.AddWith.impl.Op.type.066411.1 = specific_constant imports.%Core.Op.70b, @T.binding.as_type.as.AddWith.impl.3cb(constants.%ImplicitAs.facet.d52) [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.bf8142.1]
-// CHECK:STDOUT:   %Op.ref.loc18: %T.binding.as_type.as.AddWith.impl.Op.type.066411.1 = name_ref Op, %.loc18_20.1 [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.bf8142.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.bound.loc18: <bound method> = bound_method %int_1.loc18, %Op.ref.loc18 [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.bound.605e02.2]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.specific_fn.loc18: <specific function> = specific_function %Op.ref.loc18, @T.binding.as_type.as.AddWith.impl.Op.4(constants.%ImplicitAs.facet.d52) [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.specific_fn.9c4571.2]
-// CHECK:STDOUT:   %bound_method.loc18_20.3: <bound method> = bound_method %int_1.loc18, %T.binding.as_type.as.AddWith.impl.Op.specific_fn.loc18 [concrete = constants.%bound_method.e3fb08.2]
-// CHECK:STDOUT:   %impl.elem0.loc18: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %bound_method.loc18_18: <bound method> = bound_method %int_1.loc18, %impl.elem0.loc18 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18: init %Cpp.long_long = call %bound_method.loc18_18(%int_1.loc18) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc18_18.1: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc18 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc18_18.2: %Cpp.long_long = converted %int_1.loc18, %.loc18_18.1 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.call.loc18: init %Cpp.long_long = call %bound_method.loc18_20.3(%.loc18_18.2, %x.ref.loc18_22)
-// CHECK:STDOUT:   %x.ref.loc18_25: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc18: <specific function> = specific_function %AssertSameType.ref.loc18, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc18_20.2: %Cpp.long_long = value_of_initializer %T.binding.as_type.as.AddWith.impl.Op.call.loc18
-// CHECK:STDOUT:   %.loc18_20.3: %Cpp.long_long = converted %T.binding.as_type.as.AddWith.impl.Op.call.loc18, %.loc18_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc18: init %empty_tuple.type = call %AssertSameType.specific_fn.loc18(%.loc18_20.3, %x.ref.loc18_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc19: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %int_1.loc19: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %x.ref.loc19_22: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %impl.elem1.loc19: %.83a = impl_witness_access constants.%SubWith.impl_witness.b03, element1 [concrete = constants.%T.binding.as_type.as.SubWith.impl.Op.fe5aec.2]
-// CHECK:STDOUT:   %bound_method.loc19_20.1: <bound method> = bound_method %int_1.loc19, %impl.elem1.loc19 [concrete = constants.%T.binding.as_type.as.SubWith.impl.Op.bound.bb7ef2.1]
-// CHECK:STDOUT:   %specific_fn.loc19: <specific function> = specific_function %impl.elem1.loc19, @T.binding.as_type.as.SubWith.impl.Op.3(constants.%ImplicitAs.facet.d52) [concrete = constants.%T.binding.as_type.as.SubWith.impl.Op.specific_fn.a8a25c.1]
-// CHECK:STDOUT:   %bound_method.loc19_20.2: <bound method> = bound_method %int_1.loc19, %specific_fn.loc19 [concrete = constants.%bound_method.703d6e.1]
-// CHECK:STDOUT:   %.loc19_20.1: %T.binding.as_type.as.SubWith.impl.Op.type.a9ed32.1 = specific_constant imports.%Core.Op.deb, @T.binding.as_type.as.SubWith.impl.366(constants.%ImplicitAs.facet.d52) [concrete = constants.%T.binding.as_type.as.SubWith.impl.Op.fe5aec.1]
-// CHECK:STDOUT:   %Op.ref.loc19: %T.binding.as_type.as.SubWith.impl.Op.type.a9ed32.1 = name_ref Op, %.loc19_20.1 [concrete = constants.%T.binding.as_type.as.SubWith.impl.Op.fe5aec.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.bound.loc19: <bound method> = bound_method %int_1.loc19, %Op.ref.loc19 [concrete = constants.%T.binding.as_type.as.SubWith.impl.Op.bound.bb7ef2.2]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.specific_fn.loc19: <specific function> = specific_function %Op.ref.loc19, @T.binding.as_type.as.SubWith.impl.Op.4(constants.%ImplicitAs.facet.d52) [concrete = constants.%T.binding.as_type.as.SubWith.impl.Op.specific_fn.a8a25c.2]
-// CHECK:STDOUT:   %bound_method.loc19_20.3: <bound method> = bound_method %int_1.loc19, %T.binding.as_type.as.SubWith.impl.Op.specific_fn.loc19 [concrete = constants.%bound_method.703d6e.2]
-// CHECK:STDOUT:   %impl.elem0.loc19: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %bound_method.loc19_18: <bound method> = bound_method %int_1.loc19, %impl.elem0.loc19 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19: init %Cpp.long_long = call %bound_method.loc19_18(%int_1.loc19) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc19_18.1: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc19_18.2: %Cpp.long_long = converted %int_1.loc19, %.loc19_18.1 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.call.loc19: init %Cpp.long_long = call %bound_method.loc19_20.3(%.loc19_18.2, %x.ref.loc19_22)
-// CHECK:STDOUT:   %x.ref.loc19_25: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc19: <specific function> = specific_function %AssertSameType.ref.loc19, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc19_20.2: %Cpp.long_long = value_of_initializer %T.binding.as_type.as.SubWith.impl.Op.call.loc19
-// CHECK:STDOUT:   %.loc19_20.3: %Cpp.long_long = converted %T.binding.as_type.as.SubWith.impl.Op.call.loc19, %.loc19_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc19: init %empty_tuple.type = call %AssertSameType.specific_fn.loc19(%.loc19_20.3, %x.ref.loc19_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc20: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %int_1.loc20: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %x.ref.loc20_22: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %impl.elem1.loc20: %.083 = impl_witness_access constants.%MulWith.impl_witness.452, element1 [concrete = constants.%T.binding.as_type.as.MulWith.impl.Op.b572bf.2]
-// CHECK:STDOUT:   %bound_method.loc20_20.1: <bound method> = bound_method %int_1.loc20, %impl.elem1.loc20 [concrete = constants.%T.binding.as_type.as.MulWith.impl.Op.bound.cc8bc8.1]
-// CHECK:STDOUT:   %specific_fn.loc20: <specific function> = specific_function %impl.elem1.loc20, @T.binding.as_type.as.MulWith.impl.Op.3(constants.%ImplicitAs.facet.d52) [concrete = constants.%T.binding.as_type.as.MulWith.impl.Op.specific_fn.c40ccc.1]
-// CHECK:STDOUT:   %bound_method.loc20_20.2: <bound method> = bound_method %int_1.loc20, %specific_fn.loc20 [concrete = constants.%bound_method.5e5b06.1]
-// CHECK:STDOUT:   %.loc20_20.1: %T.binding.as_type.as.MulWith.impl.Op.type.4ddc19.1 = specific_constant imports.%Core.Op.16e, @T.binding.as_type.as.MulWith.impl.9c8(constants.%ImplicitAs.facet.d52) [concrete = constants.%T.binding.as_type.as.MulWith.impl.Op.b572bf.1]
-// CHECK:STDOUT:   %Op.ref.loc20: %T.binding.as_type.as.MulWith.impl.Op.type.4ddc19.1 = name_ref Op, %.loc20_20.1 [concrete = constants.%T.binding.as_type.as.MulWith.impl.Op.b572bf.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.bound.loc20: <bound method> = bound_method %int_1.loc20, %Op.ref.loc20 [concrete = constants.%T.binding.as_type.as.MulWith.impl.Op.bound.cc8bc8.2]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.specific_fn.loc20: <specific function> = specific_function %Op.ref.loc20, @T.binding.as_type.as.MulWith.impl.Op.4(constants.%ImplicitAs.facet.d52) [concrete = constants.%T.binding.as_type.as.MulWith.impl.Op.specific_fn.c40ccc.2]
-// CHECK:STDOUT:   %bound_method.loc20_20.3: <bound method> = bound_method %int_1.loc20, %T.binding.as_type.as.MulWith.impl.Op.specific_fn.loc20 [concrete = constants.%bound_method.5e5b06.2]
-// CHECK:STDOUT:   %impl.elem0.loc20: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %bound_method.loc20_18: <bound method> = bound_method %int_1.loc20, %impl.elem0.loc20 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20: init %Cpp.long_long = call %bound_method.loc20_18(%int_1.loc20) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc20_18.1: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc20_18.2: %Cpp.long_long = converted %int_1.loc20, %.loc20_18.1 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.call.loc20: init %Cpp.long_long = call %bound_method.loc20_20.3(%.loc20_18.2, %x.ref.loc20_22)
-// CHECK:STDOUT:   %x.ref.loc20_25: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc20: <specific function> = specific_function %AssertSameType.ref.loc20, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc20_20.2: %Cpp.long_long = value_of_initializer %T.binding.as_type.as.MulWith.impl.Op.call.loc20
-// CHECK:STDOUT:   %.loc20_20.3: %Cpp.long_long = converted %T.binding.as_type.as.MulWith.impl.Op.call.loc20, %.loc20_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc20: init %empty_tuple.type = call %AssertSameType.specific_fn.loc20(%.loc20_20.3, %x.ref.loc20_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc21: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %int_1.loc21: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %x.ref.loc21_22: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %impl.elem1.loc21: %.c95 = impl_witness_access constants.%DivWith.impl_witness.8ae, element1 [concrete = constants.%T.binding.as_type.as.DivWith.impl.Op.bb0620.2]
-// CHECK:STDOUT:   %bound_method.loc21_20.1: <bound method> = bound_method %int_1.loc21, %impl.elem1.loc21 [concrete = constants.%T.binding.as_type.as.DivWith.impl.Op.bound.e9391e.1]
-// CHECK:STDOUT:   %specific_fn.loc21: <specific function> = specific_function %impl.elem1.loc21, @T.binding.as_type.as.DivWith.impl.Op.3(constants.%ImplicitAs.facet.d52) [concrete = constants.%T.binding.as_type.as.DivWith.impl.Op.specific_fn.c11faf.1]
-// CHECK:STDOUT:   %bound_method.loc21_20.2: <bound method> = bound_method %int_1.loc21, %specific_fn.loc21 [concrete = constants.%bound_method.91b5ad.1]
-// CHECK:STDOUT:   %.loc21_20.1: %T.binding.as_type.as.DivWith.impl.Op.type.a76bb3.1 = specific_constant imports.%Core.Op.6d6, @T.binding.as_type.as.DivWith.impl.b8b(constants.%ImplicitAs.facet.d52) [concrete = constants.%T.binding.as_type.as.DivWith.impl.Op.bb0620.1]
-// CHECK:STDOUT:   %Op.ref.loc21: %T.binding.as_type.as.DivWith.impl.Op.type.a76bb3.1 = name_ref Op, %.loc21_20.1 [concrete = constants.%T.binding.as_type.as.DivWith.impl.Op.bb0620.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.bound.loc21: <bound method> = bound_method %int_1.loc21, %Op.ref.loc21 [concrete = constants.%T.binding.as_type.as.DivWith.impl.Op.bound.e9391e.2]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.specific_fn.loc21: <specific function> = specific_function %Op.ref.loc21, @T.binding.as_type.as.DivWith.impl.Op.4(constants.%ImplicitAs.facet.d52) [concrete = constants.%T.binding.as_type.as.DivWith.impl.Op.specific_fn.c11faf.2]
-// CHECK:STDOUT:   %bound_method.loc21_20.3: <bound method> = bound_method %int_1.loc21, %T.binding.as_type.as.DivWith.impl.Op.specific_fn.loc21 [concrete = constants.%bound_method.91b5ad.2]
-// CHECK:STDOUT:   %impl.elem0.loc21: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %bound_method.loc21_18: <bound method> = bound_method %int_1.loc21, %impl.elem0.loc21 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21: init %Cpp.long_long = call %bound_method.loc21_18(%int_1.loc21) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc21_18.1: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc21_18.2: %Cpp.long_long = converted %int_1.loc21, %.loc21_18.1 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.call.loc21: init %Cpp.long_long = call %bound_method.loc21_20.3(%.loc21_18.2, %x.ref.loc21_22)
-// CHECK:STDOUT:   %x.ref.loc21_25: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc21: <specific function> = specific_function %AssertSameType.ref.loc21, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc21_20.2: %Cpp.long_long = value_of_initializer %T.binding.as_type.as.DivWith.impl.Op.call.loc21
-// CHECK:STDOUT:   %.loc21_20.3: %Cpp.long_long = converted %T.binding.as_type.as.DivWith.impl.Op.call.loc21, %.loc21_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc21: init %empty_tuple.type = call %AssertSameType.specific_fn.loc21(%.loc21_20.3, %x.ref.loc21_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc22: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %int_1.loc22: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %x.ref.loc22_22: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %impl.elem1.loc22: %.738 = impl_witness_access constants.%ModWith.impl_witness.17a, element1 [concrete = constants.%T.binding.as_type.as.ModWith.impl.Op.97c315.2]
-// CHECK:STDOUT:   %bound_method.loc22_20.1: <bound method> = bound_method %int_1.loc22, %impl.elem1.loc22 [concrete = constants.%T.binding.as_type.as.ModWith.impl.Op.bound.9f87a0.1]
-// CHECK:STDOUT:   %specific_fn.loc22: <specific function> = specific_function %impl.elem1.loc22, @T.binding.as_type.as.ModWith.impl.Op.3(constants.%ImplicitAs.facet.d52) [concrete = constants.%T.binding.as_type.as.ModWith.impl.Op.specific_fn.c19386.1]
-// CHECK:STDOUT:   %bound_method.loc22_20.2: <bound method> = bound_method %int_1.loc22, %specific_fn.loc22 [concrete = constants.%bound_method.1e0cef.1]
-// CHECK:STDOUT:   %.loc22_20.1: %T.binding.as_type.as.ModWith.impl.Op.type.8239b7.1 = specific_constant imports.%Core.Op.498, @T.binding.as_type.as.ModWith.impl.236(constants.%ImplicitAs.facet.d52) [concrete = constants.%T.binding.as_type.as.ModWith.impl.Op.97c315.1]
-// CHECK:STDOUT:   %Op.ref.loc22: %T.binding.as_type.as.ModWith.impl.Op.type.8239b7.1 = name_ref Op, %.loc22_20.1 [concrete = constants.%T.binding.as_type.as.ModWith.impl.Op.97c315.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.bound.loc22: <bound method> = bound_method %int_1.loc22, %Op.ref.loc22 [concrete = constants.%T.binding.as_type.as.ModWith.impl.Op.bound.9f87a0.2]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.specific_fn.loc22: <specific function> = specific_function %Op.ref.loc22, @T.binding.as_type.as.ModWith.impl.Op.4(constants.%ImplicitAs.facet.d52) [concrete = constants.%T.binding.as_type.as.ModWith.impl.Op.specific_fn.c19386.2]
-// CHECK:STDOUT:   %bound_method.loc22_20.3: <bound method> = bound_method %int_1.loc22, %T.binding.as_type.as.ModWith.impl.Op.specific_fn.loc22 [concrete = constants.%bound_method.1e0cef.2]
-// CHECK:STDOUT:   %impl.elem0.loc22: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %bound_method.loc22_18: <bound method> = bound_method %int_1.loc22, %impl.elem0.loc22 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22: init %Cpp.long_long = call %bound_method.loc22_18(%int_1.loc22) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc22_18.1: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc22_18.2: %Cpp.long_long = converted %int_1.loc22, %.loc22_18.1 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.call.loc22: init %Cpp.long_long = call %bound_method.loc22_20.3(%.loc22_18.2, %x.ref.loc22_22)
-// CHECK:STDOUT:   %x.ref.loc22_25: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc22: <specific function> = specific_function %AssertSameType.ref.loc22, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc22_20.2: %Cpp.long_long = value_of_initializer %T.binding.as_type.as.ModWith.impl.Op.call.loc22
-// CHECK:STDOUT:   %.loc22_20.3: %Cpp.long_long = converted %T.binding.as_type.as.ModWith.impl.Op.call.loc22, %.loc22_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc22: init %empty_tuple.type = call %AssertSameType.specific_fn.loc22(%.loc22_20.3, %x.ref.loc22_25)
-// CHECK:STDOUT:   name_binding_decl {
-// CHECK:STDOUT:     %y.patt: %pattern_type.95b = value_binding_pattern y [concrete]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %int_1.loc24: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %.loc24_10: type = splice_block %i64.loc24 [concrete = constants.%i64] {
-// CHECK:STDOUT:     %int_64.loc24: Core.IntLiteral = int_value 64 [concrete = constants.%int_64]
-// CHECK:STDOUT:     %i64.loc24: type = class_type @Int, @Int(constants.%int_64) [concrete = constants.%i64]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %impl.elem0.loc24: %.567 = impl_witness_access constants.%ImplicitAs.impl_witness.556, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.57d]
-// CHECK:STDOUT:   %bound_method.loc24_16.1: <bound method> = bound_method %int_1.loc24, %impl.elem0.loc24 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.102]
-// CHECK:STDOUT:   %specific_fn.loc24: <specific function> = specific_function %impl.elem0.loc24, @Core.IntLiteral.as.ImplicitAs.impl.Convert.1(constants.%int_64) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn]
-// CHECK:STDOUT:   %bound_method.loc24_16.2: <bound method> = bound_method %int_1.loc24, %specific_fn.loc24 [concrete = constants.%bound_method.288]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc24: init %i64 = call %bound_method.loc24_16.2(%int_1.loc24) [concrete = constants.%int_1.41a]
-// CHECK:STDOUT:   %.loc24_16.1: %i64 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc24 [concrete = constants.%int_1.41a]
-// CHECK:STDOUT:   %.loc24_16.2: %i64 = converted %int_1.loc24, %.loc24_16.1 [concrete = constants.%int_1.41a]
-// CHECK:STDOUT:   %y: %i64 = value_binding y, %.loc24_16.2
-// CHECK:STDOUT:   %AssertSameType.ref.loc25: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %y.ref.loc25: %i64 = name_ref y, %y
-// CHECK:STDOUT:   %x.ref.loc25_22: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %impl.elem1.loc25: %.3bd = impl_witness_access constants.%AddWith.impl_witness.870, element1 [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.1269d8.2]
-// CHECK:STDOUT:   %bound_method.loc25_20.1: <bound method> = bound_method %y.ref.loc25, %impl.elem1.loc25
-// CHECK:STDOUT:   %specific_fn.loc25: <specific function> = specific_function %impl.elem1.loc25, @T.binding.as_type.as.AddWith.impl.Op.3(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.specific_fn.468a32.1]
-// CHECK:STDOUT:   %bound_method.loc25_20.2: <bound method> = bound_method %y.ref.loc25, %specific_fn.loc25
-// CHECK:STDOUT:   %.loc25_20.1: %T.binding.as_type.as.AddWith.impl.Op.type.5353e6.1 = specific_constant imports.%Core.Op.70b, @T.binding.as_type.as.AddWith.impl.3cb(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.1269d8.1]
-// CHECK:STDOUT:   %Op.ref.loc25: %T.binding.as_type.as.AddWith.impl.Op.type.5353e6.1 = name_ref Op, %.loc25_20.1 [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.1269d8.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.bound.loc25: <bound method> = bound_method %y.ref.loc25, %Op.ref.loc25
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.specific_fn.loc25: <specific function> = specific_function %Op.ref.loc25, @T.binding.as_type.as.AddWith.impl.Op.4(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.specific_fn.468a32.2]
-// CHECK:STDOUT:   %bound_method.loc25_20.3: <bound method> = bound_method %y.ref.loc25, %T.binding.as_type.as.AddWith.impl.Op.specific_fn.loc25
-// CHECK:STDOUT:   %impl.elem0.loc25: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc25_18: <bound method> = bound_method %y.ref.loc25, %impl.elem0.loc25
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc25: init %Cpp.long_long = call %bound_method.loc25_18(%y.ref.loc25)
-// CHECK:STDOUT:   %.loc25_18.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc25
-// CHECK:STDOUT:   %.loc25_18.2: %Cpp.long_long = converted %y.ref.loc25, %.loc25_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.call.loc25: init %Cpp.long_long = call %bound_method.loc25_20.3(%.loc25_18.2, %x.ref.loc25_22)
-// CHECK:STDOUT:   %x.ref.loc25_25: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc25: <specific function> = specific_function %AssertSameType.ref.loc25, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc25_20.2: %Cpp.long_long = value_of_initializer %T.binding.as_type.as.AddWith.impl.Op.call.loc25
-// CHECK:STDOUT:   %.loc25_20.3: %Cpp.long_long = converted %T.binding.as_type.as.AddWith.impl.Op.call.loc25, %.loc25_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc25: init %empty_tuple.type = call %AssertSameType.specific_fn.loc25(%.loc25_20.3, %x.ref.loc25_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc26: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %y.ref.loc26: %i64 = name_ref y, %y
-// CHECK:STDOUT:   %x.ref.loc26_22: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %impl.elem1.loc26: %.4af = impl_witness_access constants.%SubWith.impl_witness.297, element1 [concrete = constants.%T.binding.as_type.as.SubWith.impl.Op.83c119.2]
-// CHECK:STDOUT:   %bound_method.loc26_20.1: <bound method> = bound_method %y.ref.loc26, %impl.elem1.loc26
-// CHECK:STDOUT:   %specific_fn.loc26: <specific function> = specific_function %impl.elem1.loc26, @T.binding.as_type.as.SubWith.impl.Op.3(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.SubWith.impl.Op.specific_fn.7a43f4.1]
-// CHECK:STDOUT:   %bound_method.loc26_20.2: <bound method> = bound_method %y.ref.loc26, %specific_fn.loc26
-// CHECK:STDOUT:   %.loc26_20.1: %T.binding.as_type.as.SubWith.impl.Op.type.b3c095.1 = specific_constant imports.%Core.Op.deb, @T.binding.as_type.as.SubWith.impl.366(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.SubWith.impl.Op.83c119.1]
-// CHECK:STDOUT:   %Op.ref.loc26: %T.binding.as_type.as.SubWith.impl.Op.type.b3c095.1 = name_ref Op, %.loc26_20.1 [concrete = constants.%T.binding.as_type.as.SubWith.impl.Op.83c119.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.bound.loc26: <bound method> = bound_method %y.ref.loc26, %Op.ref.loc26
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.specific_fn.loc26: <specific function> = specific_function %Op.ref.loc26, @T.binding.as_type.as.SubWith.impl.Op.4(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.SubWith.impl.Op.specific_fn.7a43f4.2]
-// CHECK:STDOUT:   %bound_method.loc26_20.3: <bound method> = bound_method %y.ref.loc26, %T.binding.as_type.as.SubWith.impl.Op.specific_fn.loc26
-// CHECK:STDOUT:   %impl.elem0.loc26: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc26_18: <bound method> = bound_method %y.ref.loc26, %impl.elem0.loc26
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc26: init %Cpp.long_long = call %bound_method.loc26_18(%y.ref.loc26)
-// CHECK:STDOUT:   %.loc26_18.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc26
-// CHECK:STDOUT:   %.loc26_18.2: %Cpp.long_long = converted %y.ref.loc26, %.loc26_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.SubWith.impl.Op.call.loc26: init %Cpp.long_long = call %bound_method.loc26_20.3(%.loc26_18.2, %x.ref.loc26_22)
-// CHECK:STDOUT:   %x.ref.loc26_25: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc26: <specific function> = specific_function %AssertSameType.ref.loc26, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc26_20.2: %Cpp.long_long = value_of_initializer %T.binding.as_type.as.SubWith.impl.Op.call.loc26
-// CHECK:STDOUT:   %.loc26_20.3: %Cpp.long_long = converted %T.binding.as_type.as.SubWith.impl.Op.call.loc26, %.loc26_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc26: init %empty_tuple.type = call %AssertSameType.specific_fn.loc26(%.loc26_20.3, %x.ref.loc26_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc27: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %y.ref.loc27: %i64 = name_ref y, %y
-// CHECK:STDOUT:   %x.ref.loc27_22: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %impl.elem1.loc27: %.326 = impl_witness_access constants.%MulWith.impl_witness.47a, element1 [concrete = constants.%T.binding.as_type.as.MulWith.impl.Op.40fc91.2]
-// CHECK:STDOUT:   %bound_method.loc27_20.1: <bound method> = bound_method %y.ref.loc27, %impl.elem1.loc27
-// CHECK:STDOUT:   %specific_fn.loc27: <specific function> = specific_function %impl.elem1.loc27, @T.binding.as_type.as.MulWith.impl.Op.3(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.MulWith.impl.Op.specific_fn.7c50b1.1]
-// CHECK:STDOUT:   %bound_method.loc27_20.2: <bound method> = bound_method %y.ref.loc27, %specific_fn.loc27
-// CHECK:STDOUT:   %.loc27_20.1: %T.binding.as_type.as.MulWith.impl.Op.type.e434da.1 = specific_constant imports.%Core.Op.16e, @T.binding.as_type.as.MulWith.impl.9c8(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.MulWith.impl.Op.40fc91.1]
-// CHECK:STDOUT:   %Op.ref.loc27: %T.binding.as_type.as.MulWith.impl.Op.type.e434da.1 = name_ref Op, %.loc27_20.1 [concrete = constants.%T.binding.as_type.as.MulWith.impl.Op.40fc91.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.bound.loc27: <bound method> = bound_method %y.ref.loc27, %Op.ref.loc27
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.specific_fn.loc27: <specific function> = specific_function %Op.ref.loc27, @T.binding.as_type.as.MulWith.impl.Op.4(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.MulWith.impl.Op.specific_fn.7c50b1.2]
-// CHECK:STDOUT:   %bound_method.loc27_20.3: <bound method> = bound_method %y.ref.loc27, %T.binding.as_type.as.MulWith.impl.Op.specific_fn.loc27
-// CHECK:STDOUT:   %impl.elem0.loc27: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc27_18: <bound method> = bound_method %y.ref.loc27, %impl.elem0.loc27
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc27: init %Cpp.long_long = call %bound_method.loc27_18(%y.ref.loc27)
-// CHECK:STDOUT:   %.loc27_18.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc27
-// CHECK:STDOUT:   %.loc27_18.2: %Cpp.long_long = converted %y.ref.loc27, %.loc27_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.MulWith.impl.Op.call.loc27: init %Cpp.long_long = call %bound_method.loc27_20.3(%.loc27_18.2, %x.ref.loc27_22)
-// CHECK:STDOUT:   %x.ref.loc27_25: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc27: <specific function> = specific_function %AssertSameType.ref.loc27, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc27_20.2: %Cpp.long_long = value_of_initializer %T.binding.as_type.as.MulWith.impl.Op.call.loc27
-// CHECK:STDOUT:   %.loc27_20.3: %Cpp.long_long = converted %T.binding.as_type.as.MulWith.impl.Op.call.loc27, %.loc27_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc27: init %empty_tuple.type = call %AssertSameType.specific_fn.loc27(%.loc27_20.3, %x.ref.loc27_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc28: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %y.ref.loc28: %i64 = name_ref y, %y
-// CHECK:STDOUT:   %x.ref.loc28_22: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %impl.elem1.loc28: %.6ef = impl_witness_access constants.%DivWith.impl_witness.922, element1 [concrete = constants.%T.binding.as_type.as.DivWith.impl.Op.12e7c2.2]
-// CHECK:STDOUT:   %bound_method.loc28_20.1: <bound method> = bound_method %y.ref.loc28, %impl.elem1.loc28
-// CHECK:STDOUT:   %specific_fn.loc28: <specific function> = specific_function %impl.elem1.loc28, @T.binding.as_type.as.DivWith.impl.Op.3(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.DivWith.impl.Op.specific_fn.4203a1.1]
-// CHECK:STDOUT:   %bound_method.loc28_20.2: <bound method> = bound_method %y.ref.loc28, %specific_fn.loc28
-// CHECK:STDOUT:   %.loc28_20.1: %T.binding.as_type.as.DivWith.impl.Op.type.59d47d.1 = specific_constant imports.%Core.Op.6d6, @T.binding.as_type.as.DivWith.impl.b8b(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.DivWith.impl.Op.12e7c2.1]
-// CHECK:STDOUT:   %Op.ref.loc28: %T.binding.as_type.as.DivWith.impl.Op.type.59d47d.1 = name_ref Op, %.loc28_20.1 [concrete = constants.%T.binding.as_type.as.DivWith.impl.Op.12e7c2.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.bound.loc28: <bound method> = bound_method %y.ref.loc28, %Op.ref.loc28
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.specific_fn.loc28: <specific function> = specific_function %Op.ref.loc28, @T.binding.as_type.as.DivWith.impl.Op.4(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.DivWith.impl.Op.specific_fn.4203a1.2]
-// CHECK:STDOUT:   %bound_method.loc28_20.3: <bound method> = bound_method %y.ref.loc28, %T.binding.as_type.as.DivWith.impl.Op.specific_fn.loc28
-// CHECK:STDOUT:   %impl.elem0.loc28: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc28_18: <bound method> = bound_method %y.ref.loc28, %impl.elem0.loc28
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc28: init %Cpp.long_long = call %bound_method.loc28_18(%y.ref.loc28)
-// CHECK:STDOUT:   %.loc28_18.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc28
-// CHECK:STDOUT:   %.loc28_18.2: %Cpp.long_long = converted %y.ref.loc28, %.loc28_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.DivWith.impl.Op.call.loc28: init %Cpp.long_long = call %bound_method.loc28_20.3(%.loc28_18.2, %x.ref.loc28_22)
-// CHECK:STDOUT:   %x.ref.loc28_25: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc28: <specific function> = specific_function %AssertSameType.ref.loc28, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc28_20.2: %Cpp.long_long = value_of_initializer %T.binding.as_type.as.DivWith.impl.Op.call.loc28
-// CHECK:STDOUT:   %.loc28_20.3: %Cpp.long_long = converted %T.binding.as_type.as.DivWith.impl.Op.call.loc28, %.loc28_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc28: init %empty_tuple.type = call %AssertSameType.specific_fn.loc28(%.loc28_20.3, %x.ref.loc28_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc29: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %y.ref.loc29: %i64 = name_ref y, %y
-// CHECK:STDOUT:   %x.ref.loc29_22: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %impl.elem1.loc29: %.f0a = impl_witness_access constants.%ModWith.impl_witness.8f4, element1 [concrete = constants.%T.binding.as_type.as.ModWith.impl.Op.5e6d70.2]
-// CHECK:STDOUT:   %bound_method.loc29_20.1: <bound method> = bound_method %y.ref.loc29, %impl.elem1.loc29
-// CHECK:STDOUT:   %specific_fn.loc29: <specific function> = specific_function %impl.elem1.loc29, @T.binding.as_type.as.ModWith.impl.Op.3(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.ModWith.impl.Op.specific_fn.e520cf.1]
-// CHECK:STDOUT:   %bound_method.loc29_20.2: <bound method> = bound_method %y.ref.loc29, %specific_fn.loc29
-// CHECK:STDOUT:   %.loc29_20.1: %T.binding.as_type.as.ModWith.impl.Op.type.e2b11f.1 = specific_constant imports.%Core.Op.498, @T.binding.as_type.as.ModWith.impl.236(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.ModWith.impl.Op.5e6d70.1]
-// CHECK:STDOUT:   %Op.ref.loc29: %T.binding.as_type.as.ModWith.impl.Op.type.e2b11f.1 = name_ref Op, %.loc29_20.1 [concrete = constants.%T.binding.as_type.as.ModWith.impl.Op.5e6d70.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.bound.loc29: <bound method> = bound_method %y.ref.loc29, %Op.ref.loc29
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.specific_fn.loc29: <specific function> = specific_function %Op.ref.loc29, @T.binding.as_type.as.ModWith.impl.Op.4(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.ModWith.impl.Op.specific_fn.e520cf.2]
-// CHECK:STDOUT:   %bound_method.loc29_20.3: <bound method> = bound_method %y.ref.loc29, %T.binding.as_type.as.ModWith.impl.Op.specific_fn.loc29
-// CHECK:STDOUT:   %impl.elem0.loc29: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc29_18: <bound method> = bound_method %y.ref.loc29, %impl.elem0.loc29
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc29: init %Cpp.long_long = call %bound_method.loc29_18(%y.ref.loc29)
-// CHECK:STDOUT:   %.loc29_18.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc29
-// CHECK:STDOUT:   %.loc29_18.2: %Cpp.long_long = converted %y.ref.loc29, %.loc29_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.ModWith.impl.Op.call.loc29: init %Cpp.long_long = call %bound_method.loc29_20.3(%.loc29_18.2, %x.ref.loc29_22)
-// CHECK:STDOUT:   %x.ref.loc29_25: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc29: <specific function> = specific_function %AssertSameType.ref.loc29, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc29_20.2: %Cpp.long_long = value_of_initializer %T.binding.as_type.as.ModWith.impl.Op.call.loc29
-// CHECK:STDOUT:   %.loc29_20.3: %Cpp.long_long = converted %T.binding.as_type.as.ModWith.impl.Op.call.loc29, %.loc29_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc29: init %empty_tuple.type = call %AssertSameType.specific_fn.loc29(%.loc29_20.3, %x.ref.loc29_25)
-// CHECK:STDOUT:   <elided>
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: --- arithmetic_heterogeneous_long_long_and_i128.carbon
-// CHECK:STDOUT:
-// CHECK:STDOUT: constants {
-// CHECK:STDOUT:   %AssertSameType.type: type = fn_type @AssertSameType [concrete]
-// CHECK:STDOUT:   %empty_tuple.type: type = tuple_type () [concrete]
-// CHECK:STDOUT:   %AssertSameType: %AssertSameType.type = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long_long: type = class_type @LongLong64 [concrete]
-// CHECK:STDOUT:   %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic]
-// CHECK:STDOUT:   %Int.fc6021.1: type = class_type @Int, @Int(%N) [symbolic]
-// CHECK:STDOUT:   %pattern_type.76e: type = pattern_type %Cpp.long_long [concrete]
-// CHECK:STDOUT:   %int_1.5b8: Core.IntLiteral = int_value 1 [concrete]
-// CHECK:STDOUT:   %ImplicitAs.type.a03: type = facet_type <@ImplicitAs, @ImplicitAs(%Cpp.long_long)> [concrete]
-// CHECK:STDOUT:   %ImplicitAs.Convert.type.6e4: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Cpp.long_long) [concrete]
-// CHECK:STDOUT:   %int_128: Core.IntLiteral = int_value 128 [concrete]
-// CHECK:STDOUT:   %i128: type = class_type @Int, @Int(%int_128) [concrete]
-// CHECK:STDOUT:   %ImplicitAs.type.e19: type = facet_type <@ImplicitAs, @ImplicitAs(%i128)> [concrete]
-// CHECK:STDOUT:   %ImplicitAs.Convert.type.812: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i128) [concrete]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness.82e: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.896 [concrete]
-// CHECK:STDOUT:   %ImplicitAs.facet.d52: %ImplicitAs.type.a03 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.82e) [concrete]
-// CHECK:STDOUT:   %.a93: type = fn_type_with_self_type %ImplicitAs.Convert.type.6e4, %ImplicitAs.facet.d52 [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.aba: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.1 [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.a20: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.aba = struct_value () [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae: <bound method> = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.a20 [concrete]
-// CHECK:STDOUT:   %int_1.092: %Cpp.long_long = int_value 1 [concrete]
-// CHECK:STDOUT:   %pattern_type.57d: type = pattern_type %i128 [concrete]
-// CHECK:STDOUT:   %To: Core.IntLiteral = symbolic_binding To, 0 [symbolic]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.4e6: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.2, @Core.IntLiteral.as.ImplicitAs.impl.b2d(%To) [symbolic]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.3c2: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.4e6 = struct_value () [symbolic]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness.47a: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.74f, @Core.IntLiteral.as.ImplicitAs.impl.b2d(%int_128) [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.74a: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.2, @Core.IntLiteral.as.ImplicitAs.impl.b2d(%int_128) [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.75a: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.74a = struct_value () [concrete]
-// CHECK:STDOUT:   %ImplicitAs.facet.daa: %ImplicitAs.type.e19 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.47a) [concrete]
-// CHECK:STDOUT:   %.700: type = fn_type_with_self_type %ImplicitAs.Convert.type.812, %ImplicitAs.facet.daa [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.e09: <bound method> = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.75a [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: <specific function> = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.75a, @Core.IntLiteral.as.ImplicitAs.impl.Convert.2(%int_128) [concrete]
-// CHECK:STDOUT:   %bound_method: <bound method> = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete]
-// CHECK:STDOUT:   %int_1.611: %i128 = int_value 1 [concrete]
-// CHECK:STDOUT:   %AddWith.type.d6e: type = facet_type <@AddWith, @AddWith(%i128)> [concrete]
-// CHECK:STDOUT:   %AddWith.Op.type.2a0: type = fn_type @AddWith.Op, @AddWith(%i128) [concrete]
-// CHECK:STDOUT:   %AddWith.type.e97: type = facet_type <@AddWith, @AddWith(%Cpp.long_long)> [concrete]
-// CHECK:STDOUT:   %AddWith.Op.type.4a8: type = fn_type @AddWith.Op, @AddWith(%Cpp.long_long) [concrete]
-// CHECK:STDOUT:   %ImplicitAs.type.39a54f.2: type = facet_type <@ImplicitAs, @ImplicitAs(%Int.fc6021.1)> [symbolic]
-// CHECK:STDOUT:   %U.354: %ImplicitAs.type.39a54f.2 = symbolic_binding U, 1 [symbolic]
-// CHECK:STDOUT:   %Int.as.AddWith.impl.Op.type.188570.1: type = fn_type @Int.as.AddWith.impl.Op.2, @Int.as.AddWith.impl.b14(%N, %U.354) [symbolic]
-// CHECK:STDOUT:   %Int.as.AddWith.impl.Op.fecf95.1: %Int.as.AddWith.impl.Op.type.188570.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %Int.as.AddWith.impl.Op.type.188570.2: type = fn_type @Int.as.AddWith.impl.Op.3, @Int.as.AddWith.impl.b14(%N, %U.354) [symbolic]
-// CHECK:STDOUT:   %Int.as.AddWith.impl.Op.fecf95.2: %Int.as.AddWith.impl.Op.type.188570.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %T.354: %ImplicitAs.type.39a54f.2 = symbolic_binding T, 1 [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.type.4c3f59.1: type = fn_type @T.binding.as_type.as.AddWith.impl.Op.5, @T.binding.as_type.as.AddWith.impl.83e(%N, %T.354) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.363ab3.1: %T.binding.as_type.as.AddWith.impl.Op.type.4c3f59.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.type.4c3f59.2: type = fn_type @T.binding.as_type.as.AddWith.impl.Op.6, @T.binding.as_type.as.AddWith.impl.83e(%N, %T.354) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.363ab3.2: %T.binding.as_type.as.AddWith.impl.Op.type.4c3f59.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness.0f2: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.eb2 [concrete]
-// CHECK:STDOUT:   %ImplicitAs.facet.211: %ImplicitAs.type.e19 = facet_value %Cpp.long_long, (%ImplicitAs.impl_witness.0f2) [concrete]
-// CHECK:STDOUT:   %AddWith.impl_witness.97c: <witness> = impl_witness imports.%AddWith.impl_witness_table.787, @T.binding.as_type.as.AddWith.impl.83e(%int_128, %ImplicitAs.facet.211) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.type.68d647.1: type = fn_type @T.binding.as_type.as.AddWith.impl.Op.6, @T.binding.as_type.as.AddWith.impl.83e(%int_128, %ImplicitAs.facet.211) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.ac85cc.1: %T.binding.as_type.as.AddWith.impl.Op.type.68d647.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.type.68d647.2: type = fn_type @T.binding.as_type.as.AddWith.impl.Op.5, @T.binding.as_type.as.AddWith.impl.83e(%int_128, %ImplicitAs.facet.211) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.ac85cc.2: %T.binding.as_type.as.AddWith.impl.Op.type.68d647.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %AddWith.facet.634: %AddWith.type.d6e = facet_value %Cpp.long_long, (%AddWith.impl_witness.97c) [concrete]
-// CHECK:STDOUT:   %.d2a: type = fn_type_with_self_type %AddWith.Op.type.2a0, %AddWith.facet.634 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.specific_fn.5cf465.1: <specific function> = specific_function %T.binding.as_type.as.AddWith.impl.Op.ac85cc.2, @T.binding.as_type.as.AddWith.impl.Op.5(%int_128, %ImplicitAs.facet.211) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.specific_fn.5cf465.2: <specific function> = specific_function %T.binding.as_type.as.AddWith.impl.Op.ac85cc.1, @T.binding.as_type.as.AddWith.impl.Op.6(%int_128, %ImplicitAs.facet.211) [concrete]
-// CHECK:STDOUT:   %.6e1: type = fn_type_with_self_type %ImplicitAs.Convert.type.812, %ImplicitAs.facet.211 [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.ImplicitAs.impl.Convert.type: type = fn_type @Cpp.long_long.as.ImplicitAs.impl.Convert [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.ImplicitAs.impl.Convert: %Cpp.long_long.as.ImplicitAs.impl.Convert.type = struct_value () [concrete]
-// CHECK:STDOUT:   %AssertSameType.specific_fn: <specific function> = specific_function %AssertSameType, @AssertSameType(%i128) [concrete]
-// CHECK:STDOUT:   %AddWith.impl_witness.f00: <witness> = impl_witness imports.%AddWith.impl_witness_table.c46, @Int.as.AddWith.impl.b14(%int_128, %ImplicitAs.facet.211) [concrete]
-// CHECK:STDOUT:   %Int.as.AddWith.impl.Op.type.8dafc6.1: type = fn_type @Int.as.AddWith.impl.Op.3, @Int.as.AddWith.impl.b14(%int_128, %ImplicitAs.facet.211) [concrete]
-// CHECK:STDOUT:   %Int.as.AddWith.impl.Op.dd7d43.1: %Int.as.AddWith.impl.Op.type.8dafc6.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Int.as.AddWith.impl.Op.type.8dafc6.2: type = fn_type @Int.as.AddWith.impl.Op.2, @Int.as.AddWith.impl.b14(%int_128, %ImplicitAs.facet.211) [concrete]
-// CHECK:STDOUT:   %Int.as.AddWith.impl.Op.dd7d43.2: %Int.as.AddWith.impl.Op.type.8dafc6.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %AddWith.facet.882: %AddWith.type.e97 = facet_value %i128, (%AddWith.impl_witness.f00) [concrete]
-// CHECK:STDOUT:   %.f35: type = fn_type_with_self_type %AddWith.Op.type.4a8, %AddWith.facet.882 [concrete]
-// CHECK:STDOUT:   %Int.as.AddWith.impl.Op.specific_fn.898bfc.1: <specific function> = specific_function %Int.as.AddWith.impl.Op.dd7d43.2, @Int.as.AddWith.impl.Op.2(%int_128, %ImplicitAs.facet.211) [concrete]
-// CHECK:STDOUT:   %Int.as.AddWith.impl.Op.specific_fn.898bfc.2: <specific function> = specific_function %Int.as.AddWith.impl.Op.dd7d43.1, @Int.as.AddWith.impl.Op.3(%int_128, %ImplicitAs.facet.211) [concrete]
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %Cpp: <namespace> = namespace file.%Cpp.import_cpp, [concrete] {
-// CHECK:STDOUT:     .long_long = constants.%Cpp.long_long
-// CHECK:STDOUT:     import Cpp//...
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %Core.import_ref.d64: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.aba = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness_table.896 = impl_witness_table (%Core.import_ref.d64), @Core.IntLiteral.as.ImplicitAs.impl.a26 [concrete]
-// CHECK:STDOUT:   %Core.import_ref.42d: @Core.IntLiteral.as.ImplicitAs.impl.b2d.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.4e6) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.b2d.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3c2)]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness_table.74f = impl_witness_table (%Core.import_ref.42d), @Core.IntLiteral.as.ImplicitAs.impl.b2d [concrete]
-// CHECK:STDOUT:   %Core.import_ref.475cb3.2 = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.266: @Int.as.AddWith.impl.b14.%Int.as.AddWith.impl.Op.type.2 (%Int.as.AddWith.impl.Op.type.188570.1) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.AddWith.impl.b14.%Int.as.AddWith.impl.Op.2 (constants.%Int.as.AddWith.impl.Op.fecf95.1)]
-// CHECK:STDOUT:   %AddWith.impl_witness_table.c46 = impl_witness_table (%Core.import_ref.475cb3.2, %Core.import_ref.266), @Int.as.AddWith.impl.b14 [concrete]
-// CHECK:STDOUT:   %Core.Op.a76: @Int.as.AddWith.impl.b14.%Int.as.AddWith.impl.Op.type.1 (%Int.as.AddWith.impl.Op.type.188570.2) = import_ref Core//prelude/types/int, Op, loaded [symbolic = @Int.as.AddWith.impl.b14.%Int.as.AddWith.impl.Op.1 (constants.%Int.as.AddWith.impl.Op.fecf95.2)]
-// CHECK:STDOUT:   %Core.import_ref.475cb3.3 = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.bba: @T.binding.as_type.as.AddWith.impl.83e.%T.binding.as_type.as.AddWith.impl.Op.type.2 (%T.binding.as_type.as.AddWith.impl.Op.type.4c3f59.1) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @T.binding.as_type.as.AddWith.impl.83e.%T.binding.as_type.as.AddWith.impl.Op.2 (constants.%T.binding.as_type.as.AddWith.impl.Op.363ab3.1)]
-// CHECK:STDOUT:   %AddWith.impl_witness_table.787 = impl_witness_table (%Core.import_ref.475cb3.3, %Core.import_ref.bba), @T.binding.as_type.as.AddWith.impl.83e [concrete]
-// CHECK:STDOUT:   %Core.Op.fcd: @T.binding.as_type.as.AddWith.impl.83e.%T.binding.as_type.as.AddWith.impl.Op.type.1 (%T.binding.as_type.as.AddWith.impl.Op.type.4c3f59.2) = import_ref Core//prelude/types/int, Op, loaded [symbolic = @T.binding.as_type.as.AddWith.impl.83e.%T.binding.as_type.as.AddWith.impl.Op.1 (constants.%T.binding.as_type.as.AddWith.impl.Op.363ab3.2)]
-// CHECK:STDOUT:   %Core.import_ref.eca: %Cpp.long_long.as.ImplicitAs.impl.Convert.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long_long.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness_table.eb2 = impl_witness_table (%Core.import_ref.eca), @Cpp.long_long.as.ImplicitAs.impl.0cb [concrete]
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: fn @ArithmeticHeterogeneousLongLongAndI128() {
-// CHECK:STDOUT: !entry:
-// CHECK:STDOUT:   name_binding_decl {
-// CHECK:STDOUT:     %x.patt: %pattern_type.76e = value_binding_pattern x [concrete]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %int_1.loc10: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %.loc10_13: type = splice_block %long_long.ref [concrete = constants.%Cpp.long_long] {
-// CHECK:STDOUT:     %Cpp.ref: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
-// CHECK:STDOUT:     %long_long.ref: type = name_ref long_long, constants.%Cpp.long_long [concrete = constants.%Cpp.long_long]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %impl.elem0.loc10: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %bound_method.loc10: <bound method> = bound_method %int_1.loc10, %impl.elem0.loc10 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10: init %Cpp.long_long = call %bound_method.loc10(%int_1.loc10) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc10_26.1: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc10_26.2: %Cpp.long_long = converted %int_1.loc10, %.loc10_26.1 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %x: %Cpp.long_long = value_binding x, %.loc10_26.2
-// CHECK:STDOUT:   name_binding_decl {
-// CHECK:STDOUT:     %y.patt: %pattern_type.57d = value_binding_pattern y [concrete]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %int_1.loc11: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %.loc11_10: type = splice_block %i128 [concrete = constants.%i128] {
-// CHECK:STDOUT:     %int_128: Core.IntLiteral = int_value 128 [concrete = constants.%int_128]
-// CHECK:STDOUT:     %i128: type = class_type @Int, @Int(constants.%int_128) [concrete = constants.%i128]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %impl.elem0.loc11: %.700 = impl_witness_access constants.%ImplicitAs.impl_witness.47a, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.75a]
-// CHECK:STDOUT:   %bound_method.loc11_17.1: <bound method> = bound_method %int_1.loc11, %impl.elem0.loc11 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.e09]
-// CHECK:STDOUT:   %specific_fn.loc11: <specific function> = specific_function %impl.elem0.loc11, @Core.IntLiteral.as.ImplicitAs.impl.Convert.2(constants.%int_128) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn]
-// CHECK:STDOUT:   %bound_method.loc11_17.2: <bound method> = bound_method %int_1.loc11, %specific_fn.loc11 [concrete = constants.%bound_method]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc11: init %i128 = call %bound_method.loc11_17.2(%int_1.loc11) [concrete = constants.%int_1.611]
-// CHECK:STDOUT:   %.loc11_17.1: %i128 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc11 [concrete = constants.%int_1.611]
-// CHECK:STDOUT:   %.loc11_17.2: %i128 = converted %int_1.loc11, %.loc11_17.1 [concrete = constants.%int_1.611]
-// CHECK:STDOUT:   %y: %i128 = value_binding y, %.loc11_17.2
-// CHECK:STDOUT:   %AssertSameType.ref.loc12: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %x.ref.loc12: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %y.ref.loc12_22: %i128 = name_ref y, %y
-// CHECK:STDOUT:   %impl.elem1.loc12: %.d2a = impl_witness_access constants.%AddWith.impl_witness.97c, element1 [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.ac85cc.2]
-// CHECK:STDOUT:   %bound_method.loc12_20.1: <bound method> = bound_method %x.ref.loc12, %impl.elem1.loc12
-// CHECK:STDOUT:   %specific_fn.loc12: <specific function> = specific_function %impl.elem1.loc12, @T.binding.as_type.as.AddWith.impl.Op.5(constants.%int_128, constants.%ImplicitAs.facet.211) [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.specific_fn.5cf465.1]
-// CHECK:STDOUT:   %bound_method.loc12_20.2: <bound method> = bound_method %x.ref.loc12, %specific_fn.loc12
-// CHECK:STDOUT:   %.loc12_20.1: %T.binding.as_type.as.AddWith.impl.Op.type.68d647.1 = specific_constant imports.%Core.Op.fcd, @T.binding.as_type.as.AddWith.impl.83e(constants.%int_128, constants.%ImplicitAs.facet.211) [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.ac85cc.1]
-// CHECK:STDOUT:   %Op.ref.loc12: %T.binding.as_type.as.AddWith.impl.Op.type.68d647.1 = name_ref Op, %.loc12_20.1 [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.ac85cc.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.bound: <bound method> = bound_method %x.ref.loc12, %Op.ref.loc12
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.specific_fn: <specific function> = specific_function %Op.ref.loc12, @T.binding.as_type.as.AddWith.impl.Op.6(constants.%int_128, constants.%ImplicitAs.facet.211) [concrete = constants.%T.binding.as_type.as.AddWith.impl.Op.specific_fn.5cf465.2]
-// CHECK:STDOUT:   %bound_method.loc12_20.3: <bound method> = bound_method %x.ref.loc12, %T.binding.as_type.as.AddWith.impl.Op.specific_fn
-// CHECK:STDOUT:   %impl.elem0.loc12: %.6e1 = impl_witness_access constants.%ImplicitAs.impl_witness.0f2, element0 [concrete = constants.%Cpp.long_long.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc12_18: <bound method> = bound_method %x.ref.loc12, %impl.elem0.loc12
-// CHECK:STDOUT:   %Cpp.long_long.as.ImplicitAs.impl.Convert.call.loc12: init %i128 = call %bound_method.loc12_18(%x.ref.loc12)
-// CHECK:STDOUT:   %.loc12_18.1: %i128 = value_of_initializer %Cpp.long_long.as.ImplicitAs.impl.Convert.call.loc12
-// CHECK:STDOUT:   %.loc12_18.2: %i128 = converted %x.ref.loc12, %.loc12_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.AddWith.impl.Op.call: init %i128 = call %bound_method.loc12_20.3(%.loc12_18.2, %y.ref.loc12_22)
-// CHECK:STDOUT:   %y.ref.loc12_25: %i128 = name_ref y, %y
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc12: <specific function> = specific_function %AssertSameType.ref.loc12, @AssertSameType(constants.%i128) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc12_20.2: %i128 = value_of_initializer %T.binding.as_type.as.AddWith.impl.Op.call
-// CHECK:STDOUT:   %.loc12_20.3: %i128 = converted %T.binding.as_type.as.AddWith.impl.Op.call, %.loc12_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc12: init %empty_tuple.type = call %AssertSameType.specific_fn.loc12(%.loc12_20.3, %y.ref.loc12_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc13: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %y.ref.loc13_18: %i128 = name_ref y, %y
-// CHECK:STDOUT:   %x.ref.loc13: %Cpp.long_long = name_ref x, %x
-// CHECK:STDOUT:   %impl.elem1.loc13: %.f35 = impl_witness_access constants.%AddWith.impl_witness.f00, element1 [concrete = constants.%Int.as.AddWith.impl.Op.dd7d43.2]
-// CHECK:STDOUT:   %bound_method.loc13_20.1: <bound method> = bound_method %y.ref.loc13_18, %impl.elem1.loc13
-// CHECK:STDOUT:   %specific_fn.loc13: <specific function> = specific_function %impl.elem1.loc13, @Int.as.AddWith.impl.Op.2(constants.%int_128, constants.%ImplicitAs.facet.211) [concrete = constants.%Int.as.AddWith.impl.Op.specific_fn.898bfc.1]
-// CHECK:STDOUT:   %bound_method.loc13_20.2: <bound method> = bound_method %y.ref.loc13_18, %specific_fn.loc13
-// CHECK:STDOUT:   %.loc13_20.1: %Int.as.AddWith.impl.Op.type.8dafc6.1 = specific_constant imports.%Core.Op.a76, @Int.as.AddWith.impl.b14(constants.%int_128, constants.%ImplicitAs.facet.211) [concrete = constants.%Int.as.AddWith.impl.Op.dd7d43.1]
-// CHECK:STDOUT:   %Op.ref.loc13: %Int.as.AddWith.impl.Op.type.8dafc6.1 = name_ref Op, %.loc13_20.1 [concrete = constants.%Int.as.AddWith.impl.Op.dd7d43.1]
-// CHECK:STDOUT:   %Int.as.AddWith.impl.Op.bound: <bound method> = bound_method %y.ref.loc13_18, %Op.ref.loc13
-// CHECK:STDOUT:   %Int.as.AddWith.impl.Op.specific_fn: <specific function> = specific_function %Op.ref.loc13, @Int.as.AddWith.impl.Op.3(constants.%int_128, constants.%ImplicitAs.facet.211) [concrete = constants.%Int.as.AddWith.impl.Op.specific_fn.898bfc.2]
-// CHECK:STDOUT:   %bound_method.loc13_20.3: <bound method> = bound_method %y.ref.loc13_18, %Int.as.AddWith.impl.Op.specific_fn
-// CHECK:STDOUT:   %impl.elem0.loc13: %.6e1 = impl_witness_access constants.%ImplicitAs.impl_witness.0f2, element0 [concrete = constants.%Cpp.long_long.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc13_22: <bound method> = bound_method %x.ref.loc13, %impl.elem0.loc13
-// CHECK:STDOUT:   %Cpp.long_long.as.ImplicitAs.impl.Convert.call.loc13: init %i128 = call %bound_method.loc13_22(%x.ref.loc13)
-// CHECK:STDOUT:   %.loc13_22.1: %i128 = value_of_initializer %Cpp.long_long.as.ImplicitAs.impl.Convert.call.loc13
-// CHECK:STDOUT:   %.loc13_22.2: %i128 = converted %x.ref.loc13, %.loc13_22.1
-// CHECK:STDOUT:   %Int.as.AddWith.impl.Op.call: init %i128 = call %bound_method.loc13_20.3(%y.ref.loc13_18, %.loc13_22.2)
-// CHECK:STDOUT:   %y.ref.loc13_25: %i128 = name_ref y, %y
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc13: <specific function> = specific_function %AssertSameType.ref.loc13, @AssertSameType(constants.%i128) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc13_20.2: %i128 = value_of_initializer %Int.as.AddWith.impl.Op.call
-// CHECK:STDOUT:   %.loc13_20.3: %i128 = converted %Int.as.AddWith.impl.Op.call, %.loc13_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc13: init %empty_tuple.type = call %AssertSameType.specific_fn.loc13(%.loc13_20.3, %y.ref.loc13_25)
-// CHECK:STDOUT:   <elided>
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: --- bitwise_homogeneous_long_long.carbon
-// CHECK:STDOUT:
-// CHECK:STDOUT: constants {
-// CHECK:STDOUT:   %AssertSameType.type: type = fn_type @AssertSameType [concrete]
-// CHECK:STDOUT:   %empty_tuple.type: type = tuple_type () [concrete]
-// CHECK:STDOUT:   %AssertSameType: %AssertSameType.type = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long_long: type = class_type @LongLong64 [concrete]
-// CHECK:STDOUT:   %pattern_type.76e: type = pattern_type %Cpp.long_long [concrete]
-// CHECK:STDOUT:   %int_1.5b8: Core.IntLiteral = int_value 1 [concrete]
-// CHECK:STDOUT:   %ImplicitAs.type.a03: type = facet_type <@ImplicitAs, @ImplicitAs(%Cpp.long_long)> [concrete]
-// CHECK:STDOUT:   %ImplicitAs.Convert.type.6e4: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Cpp.long_long) [concrete]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness.82e: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.896 [concrete]
-// CHECK:STDOUT:   %ImplicitAs.facet: %ImplicitAs.type.a03 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.82e) [concrete]
-// CHECK:STDOUT:   %.a93: type = fn_type_with_self_type %ImplicitAs.Convert.type.6e4, %ImplicitAs.facet [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.type: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type = struct_value () [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: <bound method> = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert [concrete]
-// CHECK:STDOUT:   %int_1.092: %Cpp.long_long = int_value 1 [concrete]
-// CHECK:STDOUT:   %BitComplement.type: type = facet_type <@BitComplement> [concrete]
-// CHECK:STDOUT:   %BitComplement.Op.type: type = fn_type @BitComplement.Op [concrete]
-// CHECK:STDOUT:   %BitComplement.impl_witness: <witness> = impl_witness imports.%BitComplement.impl_witness_table [concrete]
-// CHECK:STDOUT:   %BitComplement.facet: %BitComplement.type = facet_value %Cpp.long_long, (%BitComplement.impl_witness) [concrete]
-// CHECK:STDOUT:   %.f4b: type = fn_type_with_self_type %BitComplement.Op.type, %BitComplement.facet [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitComplement.impl.Op.type: type = fn_type @Cpp.long_long.as.BitComplement.impl.Op [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitComplement.impl.Op: %Cpp.long_long.as.BitComplement.impl.Op.type = struct_value () [concrete]
-// CHECK:STDOUT:   %AssertSameType.specific_fn: <specific function> = specific_function %AssertSameType, @AssertSameType(%Cpp.long_long) [concrete]
-// CHECK:STDOUT:   %BitAndWith.type.97f: type = facet_type <@BitAndWith, @BitAndWith(%Cpp.long_long)> [concrete]
-// CHECK:STDOUT:   %BitAndWith.Op.type.c6c: type = fn_type @BitAndWith.Op, @BitAndWith(%Cpp.long_long) [concrete]
-// CHECK:STDOUT:   %BitAndWith.impl_witness.52f: <witness> = impl_witness imports.%BitAndWith.impl_witness_table.940 [concrete]
-// CHECK:STDOUT:   %BitAndWith.facet: %BitAndWith.type.97f = facet_value %Cpp.long_long, (%BitAndWith.impl_witness.52f) [concrete]
-// CHECK:STDOUT:   %.568: type = fn_type_with_self_type %BitAndWith.Op.type.c6c, %BitAndWith.facet [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitAndWith.impl.Op.type.062: type = fn_type @Cpp.long_long.as.BitAndWith.impl.Op.3 [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitAndWith.impl.Op.f85: %Cpp.long_long.as.BitAndWith.impl.Op.type.062 = struct_value () [concrete]
-// CHECK:STDOUT:   %BitOrWith.type.d59: type = facet_type <@BitOrWith, @BitOrWith(%Cpp.long_long)> [concrete]
-// CHECK:STDOUT:   %BitOrWith.Op.type.c9c: type = fn_type @BitOrWith.Op, @BitOrWith(%Cpp.long_long) [concrete]
-// CHECK:STDOUT:   %BitOrWith.impl_witness.cce: <witness> = impl_witness imports.%BitOrWith.impl_witness_table.ccf [concrete]
-// CHECK:STDOUT:   %BitOrWith.facet: %BitOrWith.type.d59 = facet_value %Cpp.long_long, (%BitOrWith.impl_witness.cce) [concrete]
-// CHECK:STDOUT:   %.369: type = fn_type_with_self_type %BitOrWith.Op.type.c9c, %BitOrWith.facet [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitOrWith.impl.Op.type.644: type = fn_type @Cpp.long_long.as.BitOrWith.impl.Op.3 [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitOrWith.impl.Op.d90: %Cpp.long_long.as.BitOrWith.impl.Op.type.644 = struct_value () [concrete]
-// CHECK:STDOUT:   %BitXorWith.type.b7e: type = facet_type <@BitXorWith, @BitXorWith(%Cpp.long_long)> [concrete]
-// CHECK:STDOUT:   %BitXorWith.Op.type.1d5: type = fn_type @BitXorWith.Op, @BitXorWith(%Cpp.long_long) [concrete]
-// CHECK:STDOUT:   %BitXorWith.impl_witness.1e8: <witness> = impl_witness imports.%BitXorWith.impl_witness_table.aee [concrete]
-// CHECK:STDOUT:   %BitXorWith.facet: %BitXorWith.type.b7e = facet_value %Cpp.long_long, (%BitXorWith.impl_witness.1e8) [concrete]
-// CHECK:STDOUT:   %.a3f: type = fn_type_with_self_type %BitXorWith.Op.type.1d5, %BitXorWith.facet [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitXorWith.impl.Op.type.de1: type = fn_type @Cpp.long_long.as.BitXorWith.impl.Op.3 [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitXorWith.impl.Op.7b9: %Cpp.long_long.as.BitXorWith.impl.Op.type.de1 = struct_value () [concrete]
-// CHECK:STDOUT:   %LeftShiftWith.type.091: type = facet_type <@LeftShiftWith, @LeftShiftWith(%Cpp.long_long)> [concrete]
-// CHECK:STDOUT:   %LeftShiftWith.Op.type.5df: type = fn_type @LeftShiftWith.Op, @LeftShiftWith(%Cpp.long_long) [concrete]
-// CHECK:STDOUT:   %LeftShiftWith.impl_witness.c23: <witness> = impl_witness imports.%LeftShiftWith.impl_witness_table.ffe [concrete]
-// CHECK:STDOUT:   %LeftShiftWith.facet: %LeftShiftWith.type.091 = facet_value %Cpp.long_long, (%LeftShiftWith.impl_witness.c23) [concrete]
-// CHECK:STDOUT:   %.d48: type = fn_type_with_self_type %LeftShiftWith.Op.type.5df, %LeftShiftWith.facet [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.LeftShiftWith.impl.Op.type.85f: type = fn_type @Cpp.long_long.as.LeftShiftWith.impl.Op.3 [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.LeftShiftWith.impl.Op.c52: %Cpp.long_long.as.LeftShiftWith.impl.Op.type.85f = struct_value () [concrete]
-// CHECK:STDOUT:   %RightShiftWith.type.382: type = facet_type <@RightShiftWith, @RightShiftWith(%Cpp.long_long)> [concrete]
-// CHECK:STDOUT:   %RightShiftWith.Op.type.202: type = fn_type @RightShiftWith.Op, @RightShiftWith(%Cpp.long_long) [concrete]
-// CHECK:STDOUT:   %RightShiftWith.impl_witness.64f: <witness> = impl_witness imports.%RightShiftWith.impl_witness_table.2dc [concrete]
-// CHECK:STDOUT:   %RightShiftWith.facet: %RightShiftWith.type.382 = facet_value %Cpp.long_long, (%RightShiftWith.impl_witness.64f) [concrete]
-// CHECK:STDOUT:   %.110: type = fn_type_with_self_type %RightShiftWith.Op.type.202, %RightShiftWith.facet [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.RightShiftWith.impl.Op.type.c8d: type = fn_type @Cpp.long_long.as.RightShiftWith.impl.Op.3 [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.RightShiftWith.impl.Op.843: %Cpp.long_long.as.RightShiftWith.impl.Op.type.c8d = struct_value () [concrete]
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %Cpp: <namespace> = namespace file.%Cpp.import_cpp, [concrete] {
-// CHECK:STDOUT:     .long_long = constants.%Cpp.long_long
-// CHECK:STDOUT:     import Cpp//...
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %Core.import_ref.d64: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness_table.896 = impl_witness_table (%Core.import_ref.d64), @Core.IntLiteral.as.ImplicitAs.impl.a26 [concrete]
-// CHECK:STDOUT:   %Core.import_ref.ce3a05.1 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.d53d: %Cpp.long_long.as.BitComplement.impl.Op.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long_long.as.BitComplement.impl.Op]
-// CHECK:STDOUT:   %BitComplement.impl_witness_table = impl_witness_table (%Core.import_ref.ce3a05.1, %Core.import_ref.d53d), @Cpp.long_long.as.BitComplement.impl [concrete]
-// CHECK:STDOUT:   %Core.import_ref.ce3a05.4 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.592: %Cpp.long_long.as.BitAndWith.impl.Op.type.062 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long_long.as.BitAndWith.impl.Op.f85]
-// CHECK:STDOUT:   %BitAndWith.impl_witness_table.940 = impl_witness_table (%Core.import_ref.ce3a05.4, %Core.import_ref.592), @Cpp.long_long.as.BitAndWith.impl.1d9 [concrete]
-// CHECK:STDOUT:   %Core.import_ref.ce3a05.7 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.940: %Cpp.long_long.as.BitOrWith.impl.Op.type.644 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long_long.as.BitOrWith.impl.Op.d90]
-// CHECK:STDOUT:   %BitOrWith.impl_witness_table.ccf = impl_witness_table (%Core.import_ref.ce3a05.7, %Core.import_ref.940), @Cpp.long_long.as.BitOrWith.impl.25c [concrete]
-// CHECK:STDOUT:   %Core.import_ref.ce3a05.10 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.e93: %Cpp.long_long.as.BitXorWith.impl.Op.type.de1 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long_long.as.BitXorWith.impl.Op.7b9]
-// CHECK:STDOUT:   %BitXorWith.impl_witness_table.aee = impl_witness_table (%Core.import_ref.ce3a05.10, %Core.import_ref.e93), @Cpp.long_long.as.BitXorWith.impl.af7 [concrete]
-// CHECK:STDOUT:   %Core.import_ref.ce3a05.13 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.235: %Cpp.long_long.as.LeftShiftWith.impl.Op.type.85f = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long_long.as.LeftShiftWith.impl.Op.c52]
-// CHECK:STDOUT:   %LeftShiftWith.impl_witness_table.ffe = impl_witness_table (%Core.import_ref.ce3a05.13, %Core.import_ref.235), @Cpp.long_long.as.LeftShiftWith.impl.563 [concrete]
-// CHECK:STDOUT:   %Core.import_ref.ce3a05.16 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.2ca: %Cpp.long_long.as.RightShiftWith.impl.Op.type.c8d = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long_long.as.RightShiftWith.impl.Op.843]
-// CHECK:STDOUT:   %RightShiftWith.impl_witness_table.2dc = impl_witness_table (%Core.import_ref.ce3a05.16, %Core.import_ref.2ca), @Cpp.long_long.as.RightShiftWith.impl.54c [concrete]
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: fn @BitWiseHomogeneousLongLong() {
-// CHECK:STDOUT: !entry:
-// CHECK:STDOUT:   name_binding_decl {
-// CHECK:STDOUT:     %a.patt: %pattern_type.76e = value_binding_pattern a [concrete]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %int_1.loc10: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %.loc10_13: type = splice_block %long_long.ref.loc10 [concrete = constants.%Cpp.long_long] {
-// CHECK:STDOUT:     %Cpp.ref.loc10: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
-// CHECK:STDOUT:     %long_long.ref.loc10: type = name_ref long_long, constants.%Cpp.long_long [concrete = constants.%Cpp.long_long]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %impl.elem0.loc10: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc10: <bound method> = bound_method %int_1.loc10, %impl.elem0.loc10 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10: init %Cpp.long_long = call %bound_method.loc10(%int_1.loc10) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc10_26.1: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc10_26.2: %Cpp.long_long = converted %int_1.loc10, %.loc10_26.1 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %a: %Cpp.long_long = value_binding a, %.loc10_26.2
-// CHECK:STDOUT:   name_binding_decl {
-// CHECK:STDOUT:     %b.patt: %pattern_type.76e = value_binding_pattern b [concrete]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %int_1.loc11: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %.loc11_13: type = splice_block %long_long.ref.loc11 [concrete = constants.%Cpp.long_long] {
-// CHECK:STDOUT:     %Cpp.ref.loc11: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
-// CHECK:STDOUT:     %long_long.ref.loc11: type = name_ref long_long, constants.%Cpp.long_long [concrete = constants.%Cpp.long_long]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %impl.elem0.loc11: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc11: <bound method> = bound_method %int_1.loc11, %impl.elem0.loc11 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc11: init %Cpp.long_long = call %bound_method.loc11(%int_1.loc11) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc11_26.1: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc11 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc11_26.2: %Cpp.long_long = converted %int_1.loc11, %.loc11_26.1 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %b: %Cpp.long_long = value_binding b, %.loc11_26.2
-// CHECK:STDOUT:   %AssertSameType.ref.loc13: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc13_19: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %impl.elem1.loc13: %.f4b = impl_witness_access constants.%BitComplement.impl_witness, element1 [concrete = constants.%Cpp.long_long.as.BitComplement.impl.Op]
-// CHECK:STDOUT:   %bound_method.loc13: <bound method> = bound_method %a.ref.loc13_19, %impl.elem1.loc13
-// CHECK:STDOUT:   %Cpp.long_long.as.BitComplement.impl.Op.call: init %Cpp.long_long = call %bound_method.loc13(%a.ref.loc13_19)
-// CHECK:STDOUT:   %a.ref.loc13_22: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc13: <specific function> = specific_function %AssertSameType.ref.loc13, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc13_18.1: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.BitComplement.impl.Op.call
-// CHECK:STDOUT:   %.loc13_18.2: %Cpp.long_long = converted %Cpp.long_long.as.BitComplement.impl.Op.call, %.loc13_18.1
-// CHECK:STDOUT:   %AssertSameType.call.loc13: init %empty_tuple.type = call %AssertSameType.specific_fn.loc13(%.loc13_18.2, %a.ref.loc13_22)
-// CHECK:STDOUT:   %AssertSameType.ref.loc14: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc14_18: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %b.ref.loc14: %Cpp.long_long = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc14: %.568 = impl_witness_access constants.%BitAndWith.impl_witness.52f, element1 [concrete = constants.%Cpp.long_long.as.BitAndWith.impl.Op.f85]
-// CHECK:STDOUT:   %bound_method.loc14: <bound method> = bound_method %a.ref.loc14_18, %impl.elem1.loc14
-// CHECK:STDOUT:   %Cpp.long_long.as.BitAndWith.impl.Op.call: init %Cpp.long_long = call %bound_method.loc14(%a.ref.loc14_18, %b.ref.loc14)
-// CHECK:STDOUT:   %a.ref.loc14_25: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc14: <specific function> = specific_function %AssertSameType.ref.loc14, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc14_20.1: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.BitAndWith.impl.Op.call
-// CHECK:STDOUT:   %.loc14_20.2: %Cpp.long_long = converted %Cpp.long_long.as.BitAndWith.impl.Op.call, %.loc14_20.1
-// CHECK:STDOUT:   %AssertSameType.call.loc14: init %empty_tuple.type = call %AssertSameType.specific_fn.loc14(%.loc14_20.2, %a.ref.loc14_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc15: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc15_18: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %b.ref.loc15: %Cpp.long_long = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc15: %.369 = impl_witness_access constants.%BitOrWith.impl_witness.cce, element1 [concrete = constants.%Cpp.long_long.as.BitOrWith.impl.Op.d90]
-// CHECK:STDOUT:   %bound_method.loc15: <bound method> = bound_method %a.ref.loc15_18, %impl.elem1.loc15
-// CHECK:STDOUT:   %Cpp.long_long.as.BitOrWith.impl.Op.call: init %Cpp.long_long = call %bound_method.loc15(%a.ref.loc15_18, %b.ref.loc15)
-// CHECK:STDOUT:   %a.ref.loc15_25: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc15: <specific function> = specific_function %AssertSameType.ref.loc15, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc15_20.1: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.BitOrWith.impl.Op.call
-// CHECK:STDOUT:   %.loc15_20.2: %Cpp.long_long = converted %Cpp.long_long.as.BitOrWith.impl.Op.call, %.loc15_20.1
-// CHECK:STDOUT:   %AssertSameType.call.loc15: init %empty_tuple.type = call %AssertSameType.specific_fn.loc15(%.loc15_20.2, %a.ref.loc15_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc16: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc16_18: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %b.ref.loc16: %Cpp.long_long = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc16: %.a3f = impl_witness_access constants.%BitXorWith.impl_witness.1e8, element1 [concrete = constants.%Cpp.long_long.as.BitXorWith.impl.Op.7b9]
-// CHECK:STDOUT:   %bound_method.loc16: <bound method> = bound_method %a.ref.loc16_18, %impl.elem1.loc16
-// CHECK:STDOUT:   %Cpp.long_long.as.BitXorWith.impl.Op.call: init %Cpp.long_long = call %bound_method.loc16(%a.ref.loc16_18, %b.ref.loc16)
-// CHECK:STDOUT:   %a.ref.loc16_25: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc16: <specific function> = specific_function %AssertSameType.ref.loc16, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc16_20.1: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.BitXorWith.impl.Op.call
-// CHECK:STDOUT:   %.loc16_20.2: %Cpp.long_long = converted %Cpp.long_long.as.BitXorWith.impl.Op.call, %.loc16_20.1
-// CHECK:STDOUT:   %AssertSameType.call.loc16: init %empty_tuple.type = call %AssertSameType.specific_fn.loc16(%.loc16_20.2, %a.ref.loc16_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc17: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc17_18: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %b.ref.loc17: %Cpp.long_long = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc17: %.d48 = impl_witness_access constants.%LeftShiftWith.impl_witness.c23, element1 [concrete = constants.%Cpp.long_long.as.LeftShiftWith.impl.Op.c52]
-// CHECK:STDOUT:   %bound_method.loc17: <bound method> = bound_method %a.ref.loc17_18, %impl.elem1.loc17
-// CHECK:STDOUT:   %Cpp.long_long.as.LeftShiftWith.impl.Op.call: init %Cpp.long_long = call %bound_method.loc17(%a.ref.loc17_18, %b.ref.loc17)
-// CHECK:STDOUT:   %a.ref.loc17_26: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc17: <specific function> = specific_function %AssertSameType.ref.loc17, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc17_20.1: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.LeftShiftWith.impl.Op.call
-// CHECK:STDOUT:   %.loc17_20.2: %Cpp.long_long = converted %Cpp.long_long.as.LeftShiftWith.impl.Op.call, %.loc17_20.1
-// CHECK:STDOUT:   %AssertSameType.call.loc17: init %empty_tuple.type = call %AssertSameType.specific_fn.loc17(%.loc17_20.2, %a.ref.loc17_26)
-// CHECK:STDOUT:   %AssertSameType.ref.loc18: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc18_18: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %b.ref.loc18: %Cpp.long_long = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc18: %.110 = impl_witness_access constants.%RightShiftWith.impl_witness.64f, element1 [concrete = constants.%Cpp.long_long.as.RightShiftWith.impl.Op.843]
-// CHECK:STDOUT:   %bound_method.loc18: <bound method> = bound_method %a.ref.loc18_18, %impl.elem1.loc18
-// CHECK:STDOUT:   %Cpp.long_long.as.RightShiftWith.impl.Op.call: init %Cpp.long_long = call %bound_method.loc18(%a.ref.loc18_18, %b.ref.loc18)
-// CHECK:STDOUT:   %a.ref.loc18_26: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc18: <specific function> = specific_function %AssertSameType.ref.loc18, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc18_20.1: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.RightShiftWith.impl.Op.call
-// CHECK:STDOUT:   %.loc18_20.2: %Cpp.long_long = converted %Cpp.long_long.as.RightShiftWith.impl.Op.call, %.loc18_20.1
-// CHECK:STDOUT:   %AssertSameType.call.loc18: init %empty_tuple.type = call %AssertSameType.specific_fn.loc18(%.loc18_20.2, %a.ref.loc18_26)
-// CHECK:STDOUT:   <elided>
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: --- bitwise_heterogeneous_long_long_left_side.carbon
-// CHECK:STDOUT:
-// CHECK:STDOUT: constants {
-// CHECK:STDOUT:   %AssertSameType.type: type = fn_type @AssertSameType [concrete]
-// CHECK:STDOUT:   %empty_tuple.type: type = tuple_type () [concrete]
-// CHECK:STDOUT:   %AssertSameType: %AssertSameType.type = struct_value () [concrete]
-// CHECK:STDOUT:   %int_64: Core.IntLiteral = int_value 64 [concrete]
-// CHECK:STDOUT:   %i64: type = class_type @Int, @Int(%int_64) [concrete]
-// CHECK:STDOUT:   %int_1.5b8: Core.IntLiteral = int_value 1 [concrete]
-// CHECK:STDOUT:   %Cpp.long_long: type = class_type @LongLong64 [concrete]
-// CHECK:STDOUT:   %pattern_type.76e: type = pattern_type %Cpp.long_long [concrete]
-// CHECK:STDOUT:   %ImplicitAs.type.a03: type = facet_type <@ImplicitAs, @ImplicitAs(%Cpp.long_long)> [concrete]
-// CHECK:STDOUT:   %ImplicitAs.Convert.type.6e4: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Cpp.long_long) [concrete]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness.82e: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.896 [concrete]
-// CHECK:STDOUT:   %ImplicitAs.facet.d52: %ImplicitAs.type.a03 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.82e) [concrete]
-// CHECK:STDOUT:   %.a93: type = fn_type_with_self_type %ImplicitAs.Convert.type.6e4, %ImplicitAs.facet.d52 [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.aba: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.2 [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.a20: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.aba = struct_value () [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae: <bound method> = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.a20 [concrete]
-// CHECK:STDOUT:   %int_1.092: %Cpp.long_long = int_value 1 [concrete]
-// CHECK:STDOUT:   %BitAndWith.type.46b: type = facet_type <@BitAndWith, @BitAndWith(%i64)> [concrete]
-// CHECK:STDOUT:   %BitAndWith.Op.type.2e7: type = fn_type @BitAndWith.Op, @BitAndWith(%i64) [concrete]
-// CHECK:STDOUT:   %T.ea5: %ImplicitAs.type.a03 = symbolic_binding T, 0 [symbolic]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitAndWith.impl.Op.type.fc814e.1: type = fn_type @Cpp.long_long.as.BitAndWith.impl.Op.1, @Cpp.long_long.as.BitAndWith.impl.f59(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitAndWith.impl.Op.691e38.1: %Cpp.long_long.as.BitAndWith.impl.Op.type.fc814e.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitAndWith.impl.Op.type.fc814e.2: type = fn_type @Cpp.long_long.as.BitAndWith.impl.Op.2, @Cpp.long_long.as.BitAndWith.impl.f59(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitAndWith.impl.Op.691e38.2: %Cpp.long_long.as.BitAndWith.impl.Op.type.fc814e.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %BitAndWith.type.011: type = facet_type <@BitAndWith, @BitAndWith(Core.IntLiteral)> [concrete]
-// CHECK:STDOUT:   %BitAndWith.Op.type.4bf: type = fn_type @BitAndWith.Op, @BitAndWith(Core.IntLiteral) [concrete]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness.1b3: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.b19 [concrete]
-// CHECK:STDOUT:   %ImplicitAs.facet.c59: %ImplicitAs.type.a03 = facet_value %i64, (%ImplicitAs.impl_witness.1b3) [concrete]
-// CHECK:STDOUT:   %BitAndWith.impl_witness.85b: <witness> = impl_witness imports.%BitAndWith.impl_witness_table.300, @Cpp.long_long.as.BitAndWith.impl.f59(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitAndWith.impl.Op.type.46a434.1: type = fn_type @Cpp.long_long.as.BitAndWith.impl.Op.2, @Cpp.long_long.as.BitAndWith.impl.f59(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitAndWith.impl.Op.8819bd.1: %Cpp.long_long.as.BitAndWith.impl.Op.type.46a434.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitAndWith.impl.Op.type.46a434.2: type = fn_type @Cpp.long_long.as.BitAndWith.impl.Op.1, @Cpp.long_long.as.BitAndWith.impl.f59(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitAndWith.impl.Op.8819bd.2: %Cpp.long_long.as.BitAndWith.impl.Op.type.46a434.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %BitAndWith.facet.81a: %BitAndWith.type.46b = facet_value %Cpp.long_long, (%BitAndWith.impl_witness.85b) [concrete]
-// CHECK:STDOUT:   %.69f: type = fn_type_with_self_type %BitAndWith.Op.type.2e7, %BitAndWith.facet.81a [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitAndWith.impl.Op.specific_fn.944ed2.1: <specific function> = specific_function %Cpp.long_long.as.BitAndWith.impl.Op.8819bd.2, @Cpp.long_long.as.BitAndWith.impl.Op.1(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %.b29: type = fn_type_with_self_type %ImplicitAs.Convert.type.6e4, %ImplicitAs.facet.c59 [concrete]
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.type: type = fn_type @i64.as.ImplicitAs.impl.Convert [concrete]
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert: %i64.as.ImplicitAs.impl.Convert.type = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitAndWith.impl.Op.specific_fn.944ed2.2: <specific function> = specific_function %Cpp.long_long.as.BitAndWith.impl.Op.8819bd.1, @Cpp.long_long.as.BitAndWith.impl.Op.2(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %AssertSameType.specific_fn: <specific function> = specific_function %AssertSameType, @AssertSameType(%Cpp.long_long) [concrete]
-// CHECK:STDOUT:   %BitOrWith.type.5ff: type = facet_type <@BitOrWith, @BitOrWith(%i64)> [concrete]
-// CHECK:STDOUT:   %BitOrWith.Op.type.2ba: type = fn_type @BitOrWith.Op, @BitOrWith(%i64) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitOrWith.impl.Op.type.19efa0.1: type = fn_type @Cpp.long_long.as.BitOrWith.impl.Op.1, @Cpp.long_long.as.BitOrWith.impl.c9b(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitOrWith.impl.Op.a5c104.1: %Cpp.long_long.as.BitOrWith.impl.Op.type.19efa0.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitOrWith.impl.Op.type.19efa0.2: type = fn_type @Cpp.long_long.as.BitOrWith.impl.Op.2, @Cpp.long_long.as.BitOrWith.impl.c9b(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitOrWith.impl.Op.a5c104.2: %Cpp.long_long.as.BitOrWith.impl.Op.type.19efa0.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %BitOrWith.type.cba: type = facet_type <@BitOrWith, @BitOrWith(Core.IntLiteral)> [concrete]
-// CHECK:STDOUT:   %BitOrWith.Op.type.0e5: type = fn_type @BitOrWith.Op, @BitOrWith(Core.IntLiteral) [concrete]
-// CHECK:STDOUT:   %BitOrWith.impl_witness.da7: <witness> = impl_witness imports.%BitOrWith.impl_witness_table.4ae, @Cpp.long_long.as.BitOrWith.impl.c9b(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitOrWith.impl.Op.type.d3ab21.1: type = fn_type @Cpp.long_long.as.BitOrWith.impl.Op.2, @Cpp.long_long.as.BitOrWith.impl.c9b(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitOrWith.impl.Op.7a35d3.1: %Cpp.long_long.as.BitOrWith.impl.Op.type.d3ab21.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitOrWith.impl.Op.type.d3ab21.2: type = fn_type @Cpp.long_long.as.BitOrWith.impl.Op.1, @Cpp.long_long.as.BitOrWith.impl.c9b(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitOrWith.impl.Op.7a35d3.2: %Cpp.long_long.as.BitOrWith.impl.Op.type.d3ab21.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %BitOrWith.facet.6fc: %BitOrWith.type.5ff = facet_value %Cpp.long_long, (%BitOrWith.impl_witness.da7) [concrete]
-// CHECK:STDOUT:   %.6dd: type = fn_type_with_self_type %BitOrWith.Op.type.2ba, %BitOrWith.facet.6fc [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitOrWith.impl.Op.specific_fn.381f46.1: <specific function> = specific_function %Cpp.long_long.as.BitOrWith.impl.Op.7a35d3.2, @Cpp.long_long.as.BitOrWith.impl.Op.1(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitOrWith.impl.Op.specific_fn.381f46.2: <specific function> = specific_function %Cpp.long_long.as.BitOrWith.impl.Op.7a35d3.1, @Cpp.long_long.as.BitOrWith.impl.Op.2(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %BitXorWith.type.f8c: type = facet_type <@BitXorWith, @BitXorWith(%i64)> [concrete]
-// CHECK:STDOUT:   %BitXorWith.Op.type.edf: type = fn_type @BitXorWith.Op, @BitXorWith(%i64) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitXorWith.impl.Op.type.bece73.1: type = fn_type @Cpp.long_long.as.BitXorWith.impl.Op.1, @Cpp.long_long.as.BitXorWith.impl.3a7(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitXorWith.impl.Op.4a09b2.1: %Cpp.long_long.as.BitXorWith.impl.Op.type.bece73.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitXorWith.impl.Op.type.bece73.2: type = fn_type @Cpp.long_long.as.BitXorWith.impl.Op.2, @Cpp.long_long.as.BitXorWith.impl.3a7(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitXorWith.impl.Op.4a09b2.2: %Cpp.long_long.as.BitXorWith.impl.Op.type.bece73.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %BitXorWith.type.fd0: type = facet_type <@BitXorWith, @BitXorWith(Core.IntLiteral)> [concrete]
-// CHECK:STDOUT:   %BitXorWith.Op.type.1f1: type = fn_type @BitXorWith.Op, @BitXorWith(Core.IntLiteral) [concrete]
-// CHECK:STDOUT:   %BitXorWith.impl_witness.d73: <witness> = impl_witness imports.%BitXorWith.impl_witness_table.766, @Cpp.long_long.as.BitXorWith.impl.3a7(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitXorWith.impl.Op.type.5edc0b.1: type = fn_type @Cpp.long_long.as.BitXorWith.impl.Op.2, @Cpp.long_long.as.BitXorWith.impl.3a7(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitXorWith.impl.Op.8e4513.1: %Cpp.long_long.as.BitXorWith.impl.Op.type.5edc0b.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitXorWith.impl.Op.type.5edc0b.2: type = fn_type @Cpp.long_long.as.BitXorWith.impl.Op.1, @Cpp.long_long.as.BitXorWith.impl.3a7(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitXorWith.impl.Op.8e4513.2: %Cpp.long_long.as.BitXorWith.impl.Op.type.5edc0b.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %BitXorWith.facet.46d: %BitXorWith.type.f8c = facet_value %Cpp.long_long, (%BitXorWith.impl_witness.d73) [concrete]
-// CHECK:STDOUT:   %.a1e: type = fn_type_with_self_type %BitXorWith.Op.type.edf, %BitXorWith.facet.46d [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitXorWith.impl.Op.specific_fn.741c0a.1: <specific function> = specific_function %Cpp.long_long.as.BitXorWith.impl.Op.8e4513.2, @Cpp.long_long.as.BitXorWith.impl.Op.1(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitXorWith.impl.Op.specific_fn.741c0a.2: <specific function> = specific_function %Cpp.long_long.as.BitXorWith.impl.Op.8e4513.1, @Cpp.long_long.as.BitXorWith.impl.Op.2(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %LeftShiftWith.type.214: type = facet_type <@LeftShiftWith, @LeftShiftWith(%i64)> [concrete]
-// CHECK:STDOUT:   %LeftShiftWith.Op.type.399: type = fn_type @LeftShiftWith.Op, @LeftShiftWith(%i64) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.LeftShiftWith.impl.Op.type.1e8c9e.1: type = fn_type @Cpp.long_long.as.LeftShiftWith.impl.Op.1, @Cpp.long_long.as.LeftShiftWith.impl.93e(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %Cpp.long_long.as.LeftShiftWith.impl.Op.436dd3.1: %Cpp.long_long.as.LeftShiftWith.impl.Op.type.1e8c9e.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %Cpp.long_long.as.LeftShiftWith.impl.Op.type.1e8c9e.2: type = fn_type @Cpp.long_long.as.LeftShiftWith.impl.Op.2, @Cpp.long_long.as.LeftShiftWith.impl.93e(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %Cpp.long_long.as.LeftShiftWith.impl.Op.436dd3.2: %Cpp.long_long.as.LeftShiftWith.impl.Op.type.1e8c9e.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %LeftShiftWith.type.a1f: type = facet_type <@LeftShiftWith, @LeftShiftWith(Core.IntLiteral)> [concrete]
-// CHECK:STDOUT:   %LeftShiftWith.Op.type.55b: type = fn_type @LeftShiftWith.Op, @LeftShiftWith(Core.IntLiteral) [concrete]
-// CHECK:STDOUT:   %LeftShiftWith.impl_witness.78f: <witness> = impl_witness imports.%LeftShiftWith.impl_witness_table.17a, @Cpp.long_long.as.LeftShiftWith.impl.93e(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.LeftShiftWith.impl.Op.type.392305.1: type = fn_type @Cpp.long_long.as.LeftShiftWith.impl.Op.2, @Cpp.long_long.as.LeftShiftWith.impl.93e(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.LeftShiftWith.impl.Op.b726d7.1: %Cpp.long_long.as.LeftShiftWith.impl.Op.type.392305.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.LeftShiftWith.impl.Op.type.392305.2: type = fn_type @Cpp.long_long.as.LeftShiftWith.impl.Op.1, @Cpp.long_long.as.LeftShiftWith.impl.93e(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.LeftShiftWith.impl.Op.b726d7.2: %Cpp.long_long.as.LeftShiftWith.impl.Op.type.392305.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %LeftShiftWith.facet.391: %LeftShiftWith.type.214 = facet_value %Cpp.long_long, (%LeftShiftWith.impl_witness.78f) [concrete]
-// CHECK:STDOUT:   %.730: type = fn_type_with_self_type %LeftShiftWith.Op.type.399, %LeftShiftWith.facet.391 [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.LeftShiftWith.impl.Op.specific_fn.db6da6.1: <specific function> = specific_function %Cpp.long_long.as.LeftShiftWith.impl.Op.b726d7.2, @Cpp.long_long.as.LeftShiftWith.impl.Op.1(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.LeftShiftWith.impl.Op.specific_fn.db6da6.2: <specific function> = specific_function %Cpp.long_long.as.LeftShiftWith.impl.Op.b726d7.1, @Cpp.long_long.as.LeftShiftWith.impl.Op.2(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %RightShiftWith.type.0a7: type = facet_type <@RightShiftWith, @RightShiftWith(%i64)> [concrete]
-// CHECK:STDOUT:   %RightShiftWith.Op.type.686: type = fn_type @RightShiftWith.Op, @RightShiftWith(%i64) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.RightShiftWith.impl.Op.type.65f3e2.1: type = fn_type @Cpp.long_long.as.RightShiftWith.impl.Op.1, @Cpp.long_long.as.RightShiftWith.impl.8e7(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %Cpp.long_long.as.RightShiftWith.impl.Op.bf4ea4.1: %Cpp.long_long.as.RightShiftWith.impl.Op.type.65f3e2.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %Cpp.long_long.as.RightShiftWith.impl.Op.type.65f3e2.2: type = fn_type @Cpp.long_long.as.RightShiftWith.impl.Op.2, @Cpp.long_long.as.RightShiftWith.impl.8e7(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %Cpp.long_long.as.RightShiftWith.impl.Op.bf4ea4.2: %Cpp.long_long.as.RightShiftWith.impl.Op.type.65f3e2.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %RightShiftWith.type.18a: type = facet_type <@RightShiftWith, @RightShiftWith(Core.IntLiteral)> [concrete]
-// CHECK:STDOUT:   %RightShiftWith.Op.type.c0c: type = fn_type @RightShiftWith.Op, @RightShiftWith(Core.IntLiteral) [concrete]
-// CHECK:STDOUT:   %RightShiftWith.impl_witness.707: <witness> = impl_witness imports.%RightShiftWith.impl_witness_table.00a, @Cpp.long_long.as.RightShiftWith.impl.8e7(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.RightShiftWith.impl.Op.type.947ba1.1: type = fn_type @Cpp.long_long.as.RightShiftWith.impl.Op.2, @Cpp.long_long.as.RightShiftWith.impl.8e7(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.RightShiftWith.impl.Op.b17816.1: %Cpp.long_long.as.RightShiftWith.impl.Op.type.947ba1.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.RightShiftWith.impl.Op.type.947ba1.2: type = fn_type @Cpp.long_long.as.RightShiftWith.impl.Op.1, @Cpp.long_long.as.RightShiftWith.impl.8e7(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.RightShiftWith.impl.Op.b17816.2: %Cpp.long_long.as.RightShiftWith.impl.Op.type.947ba1.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %RightShiftWith.facet.dcf: %RightShiftWith.type.0a7 = facet_value %Cpp.long_long, (%RightShiftWith.impl_witness.707) [concrete]
-// CHECK:STDOUT:   %.6ec: type = fn_type_with_self_type %RightShiftWith.Op.type.686, %RightShiftWith.facet.dcf [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.RightShiftWith.impl.Op.specific_fn.bee934.1: <specific function> = specific_function %Cpp.long_long.as.RightShiftWith.impl.Op.b17816.2, @Cpp.long_long.as.RightShiftWith.impl.Op.1(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.RightShiftWith.impl.Op.specific_fn.bee934.2: <specific function> = specific_function %Cpp.long_long.as.RightShiftWith.impl.Op.b17816.1, @Cpp.long_long.as.RightShiftWith.impl.Op.2(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %BitAndWith.impl_witness.83a: <witness> = impl_witness imports.%BitAndWith.impl_witness_table.300, @Cpp.long_long.as.BitAndWith.impl.f59(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitAndWith.impl.Op.type.454427.1: type = fn_type @Cpp.long_long.as.BitAndWith.impl.Op.2, @Cpp.long_long.as.BitAndWith.impl.f59(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitAndWith.impl.Op.b2e429.1: %Cpp.long_long.as.BitAndWith.impl.Op.type.454427.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitAndWith.impl.Op.type.454427.2: type = fn_type @Cpp.long_long.as.BitAndWith.impl.Op.1, @Cpp.long_long.as.BitAndWith.impl.f59(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitAndWith.impl.Op.b2e429.2: %Cpp.long_long.as.BitAndWith.impl.Op.type.454427.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %BitAndWith.facet.126: %BitAndWith.type.011 = facet_value %Cpp.long_long, (%BitAndWith.impl_witness.83a) [concrete]
-// CHECK:STDOUT:   %.be5: type = fn_type_with_self_type %BitAndWith.Op.type.4bf, %BitAndWith.facet.126 [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitAndWith.impl.Op.specific_fn.87f720.1: <specific function> = specific_function %Cpp.long_long.as.BitAndWith.impl.Op.b2e429.2, @Cpp.long_long.as.BitAndWith.impl.Op.1(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitAndWith.impl.Op.specific_fn.87f720.2: <specific function> = specific_function %Cpp.long_long.as.BitAndWith.impl.Op.b2e429.1, @Cpp.long_long.as.BitAndWith.impl.Op.2(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %BitOrWith.impl_witness.dc3: <witness> = impl_witness imports.%BitOrWith.impl_witness_table.4ae, @Cpp.long_long.as.BitOrWith.impl.c9b(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitOrWith.impl.Op.type.2b2898.1: type = fn_type @Cpp.long_long.as.BitOrWith.impl.Op.2, @Cpp.long_long.as.BitOrWith.impl.c9b(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitOrWith.impl.Op.58469f.1: %Cpp.long_long.as.BitOrWith.impl.Op.type.2b2898.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitOrWith.impl.Op.type.2b2898.2: type = fn_type @Cpp.long_long.as.BitOrWith.impl.Op.1, @Cpp.long_long.as.BitOrWith.impl.c9b(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitOrWith.impl.Op.58469f.2: %Cpp.long_long.as.BitOrWith.impl.Op.type.2b2898.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %BitOrWith.facet.9c9: %BitOrWith.type.cba = facet_value %Cpp.long_long, (%BitOrWith.impl_witness.dc3) [concrete]
-// CHECK:STDOUT:   %.35b: type = fn_type_with_self_type %BitOrWith.Op.type.0e5, %BitOrWith.facet.9c9 [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitOrWith.impl.Op.specific_fn.c253d2.1: <specific function> = specific_function %Cpp.long_long.as.BitOrWith.impl.Op.58469f.2, @Cpp.long_long.as.BitOrWith.impl.Op.1(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitOrWith.impl.Op.specific_fn.c253d2.2: <specific function> = specific_function %Cpp.long_long.as.BitOrWith.impl.Op.58469f.1, @Cpp.long_long.as.BitOrWith.impl.Op.2(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %BitXorWith.impl_witness.943: <witness> = impl_witness imports.%BitXorWith.impl_witness_table.766, @Cpp.long_long.as.BitXorWith.impl.3a7(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitXorWith.impl.Op.type.23f010.1: type = fn_type @Cpp.long_long.as.BitXorWith.impl.Op.2, @Cpp.long_long.as.BitXorWith.impl.3a7(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitXorWith.impl.Op.b0b042.1: %Cpp.long_long.as.BitXorWith.impl.Op.type.23f010.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitXorWith.impl.Op.type.23f010.2: type = fn_type @Cpp.long_long.as.BitXorWith.impl.Op.1, @Cpp.long_long.as.BitXorWith.impl.3a7(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitXorWith.impl.Op.b0b042.2: %Cpp.long_long.as.BitXorWith.impl.Op.type.23f010.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %BitXorWith.facet.4ab: %BitXorWith.type.fd0 = facet_value %Cpp.long_long, (%BitXorWith.impl_witness.943) [concrete]
-// CHECK:STDOUT:   %.ce8: type = fn_type_with_self_type %BitXorWith.Op.type.1f1, %BitXorWith.facet.4ab [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitXorWith.impl.Op.specific_fn.3d8d22.1: <specific function> = specific_function %Cpp.long_long.as.BitXorWith.impl.Op.b0b042.2, @Cpp.long_long.as.BitXorWith.impl.Op.1(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitXorWith.impl.Op.specific_fn.3d8d22.2: <specific function> = specific_function %Cpp.long_long.as.BitXorWith.impl.Op.b0b042.1, @Cpp.long_long.as.BitXorWith.impl.Op.2(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %LeftShiftWith.impl_witness.0f1: <witness> = impl_witness imports.%LeftShiftWith.impl_witness_table.17a, @Cpp.long_long.as.LeftShiftWith.impl.93e(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.LeftShiftWith.impl.Op.type.7ec0de.1: type = fn_type @Cpp.long_long.as.LeftShiftWith.impl.Op.2, @Cpp.long_long.as.LeftShiftWith.impl.93e(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.LeftShiftWith.impl.Op.5502e8.1: %Cpp.long_long.as.LeftShiftWith.impl.Op.type.7ec0de.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.LeftShiftWith.impl.Op.type.7ec0de.2: type = fn_type @Cpp.long_long.as.LeftShiftWith.impl.Op.1, @Cpp.long_long.as.LeftShiftWith.impl.93e(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.LeftShiftWith.impl.Op.5502e8.2: %Cpp.long_long.as.LeftShiftWith.impl.Op.type.7ec0de.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %LeftShiftWith.facet.ecc: %LeftShiftWith.type.a1f = facet_value %Cpp.long_long, (%LeftShiftWith.impl_witness.0f1) [concrete]
-// CHECK:STDOUT:   %.b37: type = fn_type_with_self_type %LeftShiftWith.Op.type.55b, %LeftShiftWith.facet.ecc [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.LeftShiftWith.impl.Op.specific_fn.b9b4ae.1: <specific function> = specific_function %Cpp.long_long.as.LeftShiftWith.impl.Op.5502e8.2, @Cpp.long_long.as.LeftShiftWith.impl.Op.1(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.LeftShiftWith.impl.Op.specific_fn.b9b4ae.2: <specific function> = specific_function %Cpp.long_long.as.LeftShiftWith.impl.Op.5502e8.1, @Cpp.long_long.as.LeftShiftWith.impl.Op.2(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %RightShiftWith.impl_witness.1a5: <witness> = impl_witness imports.%RightShiftWith.impl_witness_table.00a, @Cpp.long_long.as.RightShiftWith.impl.8e7(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.RightShiftWith.impl.Op.type.94f032.1: type = fn_type @Cpp.long_long.as.RightShiftWith.impl.Op.2, @Cpp.long_long.as.RightShiftWith.impl.8e7(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.RightShiftWith.impl.Op.0261ea.1: %Cpp.long_long.as.RightShiftWith.impl.Op.type.94f032.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.RightShiftWith.impl.Op.type.94f032.2: type = fn_type @Cpp.long_long.as.RightShiftWith.impl.Op.1, @Cpp.long_long.as.RightShiftWith.impl.8e7(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.RightShiftWith.impl.Op.0261ea.2: %Cpp.long_long.as.RightShiftWith.impl.Op.type.94f032.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %RightShiftWith.facet.4d9: %RightShiftWith.type.18a = facet_value %Cpp.long_long, (%RightShiftWith.impl_witness.1a5) [concrete]
-// CHECK:STDOUT:   %.f6a: type = fn_type_with_self_type %RightShiftWith.Op.type.c0c, %RightShiftWith.facet.4d9 [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.RightShiftWith.impl.Op.specific_fn.fa8301.1: <specific function> = specific_function %Cpp.long_long.as.RightShiftWith.impl.Op.0261ea.2, @Cpp.long_long.as.RightShiftWith.impl.Op.1(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.RightShiftWith.impl.Op.specific_fn.fa8301.2: <specific function> = specific_function %Cpp.long_long.as.RightShiftWith.impl.Op.0261ea.1, @Cpp.long_long.as.RightShiftWith.impl.Op.2(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %Cpp: <namespace> = namespace file.%Cpp.import_cpp, [concrete] {
-// CHECK:STDOUT:     .long_long = constants.%Cpp.long_long
-// CHECK:STDOUT:     import Cpp//...
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %Core.import_ref.d64: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.aba = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness_table.896 = impl_witness_table (%Core.import_ref.d64), @Core.IntLiteral.as.ImplicitAs.impl.a26 [concrete]
-// CHECK:STDOUT:   %Core.import_ref.ce3a05.1 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.cea: @Cpp.long_long.as.BitAndWith.impl.f59.%Cpp.long_long.as.BitAndWith.impl.Op.type.2 (%Cpp.long_long.as.BitAndWith.impl.Op.type.fc814e.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long_long.as.BitAndWith.impl.f59.%Cpp.long_long.as.BitAndWith.impl.Op.2 (constants.%Cpp.long_long.as.BitAndWith.impl.Op.691e38.1)]
-// CHECK:STDOUT:   %BitAndWith.impl_witness_table.300 = impl_witness_table (%Core.import_ref.ce3a05.1, %Core.import_ref.cea), @Cpp.long_long.as.BitAndWith.impl.f59 [concrete]
-// CHECK:STDOUT:   %Core.Op.bf8: @Cpp.long_long.as.BitAndWith.impl.f59.%Cpp.long_long.as.BitAndWith.impl.Op.type.1 (%Cpp.long_long.as.BitAndWith.impl.Op.type.fc814e.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @Cpp.long_long.as.BitAndWith.impl.f59.%Cpp.long_long.as.BitAndWith.impl.Op.1 (constants.%Cpp.long_long.as.BitAndWith.impl.Op.691e38.2)]
-// CHECK:STDOUT:   %Core.import_ref.4f4: %i64.as.ImplicitAs.impl.Convert.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness_table.b19 = impl_witness_table (%Core.import_ref.4f4), @i64.as.ImplicitAs.impl [concrete]
-// CHECK:STDOUT:   %Core.import_ref.ce3a05.3 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.eac: @Cpp.long_long.as.BitOrWith.impl.c9b.%Cpp.long_long.as.BitOrWith.impl.Op.type.2 (%Cpp.long_long.as.BitOrWith.impl.Op.type.19efa0.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long_long.as.BitOrWith.impl.c9b.%Cpp.long_long.as.BitOrWith.impl.Op.2 (constants.%Cpp.long_long.as.BitOrWith.impl.Op.a5c104.1)]
-// CHECK:STDOUT:   %BitOrWith.impl_witness_table.4ae = impl_witness_table (%Core.import_ref.ce3a05.3, %Core.import_ref.eac), @Cpp.long_long.as.BitOrWith.impl.c9b [concrete]
-// CHECK:STDOUT:   %Core.Op.364: @Cpp.long_long.as.BitOrWith.impl.c9b.%Cpp.long_long.as.BitOrWith.impl.Op.type.1 (%Cpp.long_long.as.BitOrWith.impl.Op.type.19efa0.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @Cpp.long_long.as.BitOrWith.impl.c9b.%Cpp.long_long.as.BitOrWith.impl.Op.1 (constants.%Cpp.long_long.as.BitOrWith.impl.Op.a5c104.2)]
-// CHECK:STDOUT:   %Core.import_ref.ce3a05.5 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.d181: @Cpp.long_long.as.BitXorWith.impl.3a7.%Cpp.long_long.as.BitXorWith.impl.Op.type.2 (%Cpp.long_long.as.BitXorWith.impl.Op.type.bece73.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long_long.as.BitXorWith.impl.3a7.%Cpp.long_long.as.BitXorWith.impl.Op.2 (constants.%Cpp.long_long.as.BitXorWith.impl.Op.4a09b2.1)]
-// CHECK:STDOUT:   %BitXorWith.impl_witness_table.766 = impl_witness_table (%Core.import_ref.ce3a05.5, %Core.import_ref.d181), @Cpp.long_long.as.BitXorWith.impl.3a7 [concrete]
-// CHECK:STDOUT:   %Core.Op.08d: @Cpp.long_long.as.BitXorWith.impl.3a7.%Cpp.long_long.as.BitXorWith.impl.Op.type.1 (%Cpp.long_long.as.BitXorWith.impl.Op.type.bece73.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @Cpp.long_long.as.BitXorWith.impl.3a7.%Cpp.long_long.as.BitXorWith.impl.Op.1 (constants.%Cpp.long_long.as.BitXorWith.impl.Op.4a09b2.2)]
-// CHECK:STDOUT:   %Core.import_ref.ce3a05.7 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.c4f: @Cpp.long_long.as.LeftShiftWith.impl.93e.%Cpp.long_long.as.LeftShiftWith.impl.Op.type.2 (%Cpp.long_long.as.LeftShiftWith.impl.Op.type.1e8c9e.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long_long.as.LeftShiftWith.impl.93e.%Cpp.long_long.as.LeftShiftWith.impl.Op.2 (constants.%Cpp.long_long.as.LeftShiftWith.impl.Op.436dd3.1)]
-// CHECK:STDOUT:   %LeftShiftWith.impl_witness_table.17a = impl_witness_table (%Core.import_ref.ce3a05.7, %Core.import_ref.c4f), @Cpp.long_long.as.LeftShiftWith.impl.93e [concrete]
-// CHECK:STDOUT:   %Core.Op.e43: @Cpp.long_long.as.LeftShiftWith.impl.93e.%Cpp.long_long.as.LeftShiftWith.impl.Op.type.1 (%Cpp.long_long.as.LeftShiftWith.impl.Op.type.1e8c9e.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @Cpp.long_long.as.LeftShiftWith.impl.93e.%Cpp.long_long.as.LeftShiftWith.impl.Op.1 (constants.%Cpp.long_long.as.LeftShiftWith.impl.Op.436dd3.2)]
-// CHECK:STDOUT:   %Core.import_ref.ce3a05.9 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.60ac: @Cpp.long_long.as.RightShiftWith.impl.8e7.%Cpp.long_long.as.RightShiftWith.impl.Op.type.2 (%Cpp.long_long.as.RightShiftWith.impl.Op.type.65f3e2.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.long_long.as.RightShiftWith.impl.8e7.%Cpp.long_long.as.RightShiftWith.impl.Op.2 (constants.%Cpp.long_long.as.RightShiftWith.impl.Op.bf4ea4.1)]
-// CHECK:STDOUT:   %RightShiftWith.impl_witness_table.00a = impl_witness_table (%Core.import_ref.ce3a05.9, %Core.import_ref.60ac), @Cpp.long_long.as.RightShiftWith.impl.8e7 [concrete]
-// CHECK:STDOUT:   %Core.Op.bae: @Cpp.long_long.as.RightShiftWith.impl.8e7.%Cpp.long_long.as.RightShiftWith.impl.Op.type.1 (%Cpp.long_long.as.RightShiftWith.impl.Op.type.65f3e2.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @Cpp.long_long.as.RightShiftWith.impl.8e7.%Cpp.long_long.as.RightShiftWith.impl.Op.1 (constants.%Cpp.long_long.as.RightShiftWith.impl.Op.bf4ea4.2)]
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: fn @BitWiseHeterogeneousLongLongLeftSide() {
-// CHECK:STDOUT: !entry:
-// CHECK:STDOUT:   <elided>
-// CHECK:STDOUT:   name_binding_decl {
-// CHECK:STDOUT:     %a.patt: %pattern_type.76e = value_binding_pattern a [concrete]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %int_1.loc11: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %.loc11_13: type = splice_block %long_long.ref [concrete = constants.%Cpp.long_long] {
-// CHECK:STDOUT:     %Cpp.ref: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
-// CHECK:STDOUT:     %long_long.ref: type = name_ref long_long, constants.%Cpp.long_long [concrete = constants.%Cpp.long_long]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %impl.elem0.loc11: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %bound_method.loc11: <bound method> = bound_method %int_1.loc11, %impl.elem0.loc11 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc11: init %Cpp.long_long = call %bound_method.loc11(%int_1.loc11) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc11_26.1: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc11 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc11_26.2: %Cpp.long_long = converted %int_1.loc11, %.loc11_26.1 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %a: %Cpp.long_long = value_binding a, %.loc11_26.2
-// CHECK:STDOUT:   %AssertSameType.ref.loc13: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc13_18: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %b.ref.loc13: %i64 = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc13: %.69f = impl_witness_access constants.%BitAndWith.impl_witness.85b, element1 [concrete = constants.%Cpp.long_long.as.BitAndWith.impl.Op.8819bd.2]
-// CHECK:STDOUT:   %bound_method.loc13_20.1: <bound method> = bound_method %a.ref.loc13_18, %impl.elem1.loc13
-// CHECK:STDOUT:   %ImplicitAs.facet.loc13_20.1: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc13_20.1: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc13_20.1 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc13_20.2: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc13_20.2: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc13_20.2 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %specific_fn.loc13: <specific function> = specific_function %impl.elem1.loc13, @Cpp.long_long.as.BitAndWith.impl.Op.1(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.BitAndWith.impl.Op.specific_fn.944ed2.1]
-// CHECK:STDOUT:   %bound_method.loc13_20.2: <bound method> = bound_method %a.ref.loc13_18, %specific_fn.loc13
-// CHECK:STDOUT:   %.loc13_20.3: %Cpp.long_long.as.BitAndWith.impl.Op.type.46a434.1 = specific_constant imports.%Core.Op.bf8, @Cpp.long_long.as.BitAndWith.impl.f59(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.BitAndWith.impl.Op.8819bd.1]
-// CHECK:STDOUT:   %Op.ref.loc13: %Cpp.long_long.as.BitAndWith.impl.Op.type.46a434.1 = name_ref Op, %.loc13_20.3 [concrete = constants.%Cpp.long_long.as.BitAndWith.impl.Op.8819bd.1]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitAndWith.impl.Op.bound.loc13: <bound method> = bound_method %a.ref.loc13_18, %Op.ref.loc13
-// CHECK:STDOUT:   %impl.elem0.loc13_20: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc13_20.3: <bound method> = bound_method %b.ref.loc13, %impl.elem0.loc13_20
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc13_20: init %Cpp.long_long = call %bound_method.loc13_20.3(%b.ref.loc13)
-// CHECK:STDOUT:   %.loc13_20.4: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc13_20
-// CHECK:STDOUT:   %.loc13_20.5: %Cpp.long_long = converted %b.ref.loc13, %.loc13_20.4
-// CHECK:STDOUT:   %Cpp.long_long.as.BitAndWith.impl.Op.specific_fn.loc13: <specific function> = specific_function %Op.ref.loc13, @Cpp.long_long.as.BitAndWith.impl.Op.2(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.BitAndWith.impl.Op.specific_fn.944ed2.2]
-// CHECK:STDOUT:   %bound_method.loc13_20.4: <bound method> = bound_method %a.ref.loc13_18, %Cpp.long_long.as.BitAndWith.impl.Op.specific_fn.loc13
-// CHECK:STDOUT:   %impl.elem0.loc13_22: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc13_22: <bound method> = bound_method %b.ref.loc13, %impl.elem0.loc13_22
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc13_22: init %Cpp.long_long = call %bound_method.loc13_22(%b.ref.loc13)
-// CHECK:STDOUT:   %.loc13_22.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc13_22
-// CHECK:STDOUT:   %.loc13_22.2: %Cpp.long_long = converted %b.ref.loc13, %.loc13_22.1
-// CHECK:STDOUT:   %Cpp.long_long.as.BitAndWith.impl.Op.call.loc13: init %Cpp.long_long = call %bound_method.loc13_20.4(%a.ref.loc13_18, %.loc13_22.2)
-// CHECK:STDOUT:   %a.ref.loc13_25: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc13: <specific function> = specific_function %AssertSameType.ref.loc13, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc13_20.6: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.BitAndWith.impl.Op.call.loc13
-// CHECK:STDOUT:   %.loc13_20.7: %Cpp.long_long = converted %Cpp.long_long.as.BitAndWith.impl.Op.call.loc13, %.loc13_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc13: init %empty_tuple.type = call %AssertSameType.specific_fn.loc13(%.loc13_20.7, %a.ref.loc13_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc14: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc14_18: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %b.ref.loc14: %i64 = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc14: %.6dd = impl_witness_access constants.%BitOrWith.impl_witness.da7, element1 [concrete = constants.%Cpp.long_long.as.BitOrWith.impl.Op.7a35d3.2]
-// CHECK:STDOUT:   %bound_method.loc14_20.1: <bound method> = bound_method %a.ref.loc14_18, %impl.elem1.loc14
-// CHECK:STDOUT:   %ImplicitAs.facet.loc14_20.1: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc14_20.1: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc14_20.1 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc14_20.2: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc14_20.2: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc14_20.2 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %specific_fn.loc14: <specific function> = specific_function %impl.elem1.loc14, @Cpp.long_long.as.BitOrWith.impl.Op.1(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.BitOrWith.impl.Op.specific_fn.381f46.1]
-// CHECK:STDOUT:   %bound_method.loc14_20.2: <bound method> = bound_method %a.ref.loc14_18, %specific_fn.loc14
-// CHECK:STDOUT:   %.loc14_20.3: %Cpp.long_long.as.BitOrWith.impl.Op.type.d3ab21.1 = specific_constant imports.%Core.Op.364, @Cpp.long_long.as.BitOrWith.impl.c9b(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.BitOrWith.impl.Op.7a35d3.1]
-// CHECK:STDOUT:   %Op.ref.loc14: %Cpp.long_long.as.BitOrWith.impl.Op.type.d3ab21.1 = name_ref Op, %.loc14_20.3 [concrete = constants.%Cpp.long_long.as.BitOrWith.impl.Op.7a35d3.1]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitOrWith.impl.Op.bound.loc14: <bound method> = bound_method %a.ref.loc14_18, %Op.ref.loc14
-// CHECK:STDOUT:   %impl.elem0.loc14_20: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc14_20.3: <bound method> = bound_method %b.ref.loc14, %impl.elem0.loc14_20
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc14_20: init %Cpp.long_long = call %bound_method.loc14_20.3(%b.ref.loc14)
-// CHECK:STDOUT:   %.loc14_20.4: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc14_20
-// CHECK:STDOUT:   %.loc14_20.5: %Cpp.long_long = converted %b.ref.loc14, %.loc14_20.4
-// CHECK:STDOUT:   %Cpp.long_long.as.BitOrWith.impl.Op.specific_fn.loc14: <specific function> = specific_function %Op.ref.loc14, @Cpp.long_long.as.BitOrWith.impl.Op.2(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.BitOrWith.impl.Op.specific_fn.381f46.2]
-// CHECK:STDOUT:   %bound_method.loc14_20.4: <bound method> = bound_method %a.ref.loc14_18, %Cpp.long_long.as.BitOrWith.impl.Op.specific_fn.loc14
-// CHECK:STDOUT:   %impl.elem0.loc14_22: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc14_22: <bound method> = bound_method %b.ref.loc14, %impl.elem0.loc14_22
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc14_22: init %Cpp.long_long = call %bound_method.loc14_22(%b.ref.loc14)
-// CHECK:STDOUT:   %.loc14_22.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc14_22
-// CHECK:STDOUT:   %.loc14_22.2: %Cpp.long_long = converted %b.ref.loc14, %.loc14_22.1
-// CHECK:STDOUT:   %Cpp.long_long.as.BitOrWith.impl.Op.call.loc14: init %Cpp.long_long = call %bound_method.loc14_20.4(%a.ref.loc14_18, %.loc14_22.2)
-// CHECK:STDOUT:   %a.ref.loc14_25: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc14: <specific function> = specific_function %AssertSameType.ref.loc14, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc14_20.6: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.BitOrWith.impl.Op.call.loc14
-// CHECK:STDOUT:   %.loc14_20.7: %Cpp.long_long = converted %Cpp.long_long.as.BitOrWith.impl.Op.call.loc14, %.loc14_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc14: init %empty_tuple.type = call %AssertSameType.specific_fn.loc14(%.loc14_20.7, %a.ref.loc14_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc15: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc15_18: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %b.ref.loc15: %i64 = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc15: %.a1e = impl_witness_access constants.%BitXorWith.impl_witness.d73, element1 [concrete = constants.%Cpp.long_long.as.BitXorWith.impl.Op.8e4513.2]
-// CHECK:STDOUT:   %bound_method.loc15_20.1: <bound method> = bound_method %a.ref.loc15_18, %impl.elem1.loc15
-// CHECK:STDOUT:   %ImplicitAs.facet.loc15_20.1: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc15_20.1: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc15_20.1 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc15_20.2: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc15_20.2: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc15_20.2 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %specific_fn.loc15: <specific function> = specific_function %impl.elem1.loc15, @Cpp.long_long.as.BitXorWith.impl.Op.1(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.BitXorWith.impl.Op.specific_fn.741c0a.1]
-// CHECK:STDOUT:   %bound_method.loc15_20.2: <bound method> = bound_method %a.ref.loc15_18, %specific_fn.loc15
-// CHECK:STDOUT:   %.loc15_20.3: %Cpp.long_long.as.BitXorWith.impl.Op.type.5edc0b.1 = specific_constant imports.%Core.Op.08d, @Cpp.long_long.as.BitXorWith.impl.3a7(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.BitXorWith.impl.Op.8e4513.1]
-// CHECK:STDOUT:   %Op.ref.loc15: %Cpp.long_long.as.BitXorWith.impl.Op.type.5edc0b.1 = name_ref Op, %.loc15_20.3 [concrete = constants.%Cpp.long_long.as.BitXorWith.impl.Op.8e4513.1]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitXorWith.impl.Op.bound.loc15: <bound method> = bound_method %a.ref.loc15_18, %Op.ref.loc15
-// CHECK:STDOUT:   %impl.elem0.loc15_20: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc15_20.3: <bound method> = bound_method %b.ref.loc15, %impl.elem0.loc15_20
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc15_20: init %Cpp.long_long = call %bound_method.loc15_20.3(%b.ref.loc15)
-// CHECK:STDOUT:   %.loc15_20.4: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc15_20
-// CHECK:STDOUT:   %.loc15_20.5: %Cpp.long_long = converted %b.ref.loc15, %.loc15_20.4
-// CHECK:STDOUT:   %Cpp.long_long.as.BitXorWith.impl.Op.specific_fn.loc15: <specific function> = specific_function %Op.ref.loc15, @Cpp.long_long.as.BitXorWith.impl.Op.2(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.BitXorWith.impl.Op.specific_fn.741c0a.2]
-// CHECK:STDOUT:   %bound_method.loc15_20.4: <bound method> = bound_method %a.ref.loc15_18, %Cpp.long_long.as.BitXorWith.impl.Op.specific_fn.loc15
-// CHECK:STDOUT:   %impl.elem0.loc15_22: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc15_22: <bound method> = bound_method %b.ref.loc15, %impl.elem0.loc15_22
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc15_22: init %Cpp.long_long = call %bound_method.loc15_22(%b.ref.loc15)
-// CHECK:STDOUT:   %.loc15_22.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc15_22
-// CHECK:STDOUT:   %.loc15_22.2: %Cpp.long_long = converted %b.ref.loc15, %.loc15_22.1
-// CHECK:STDOUT:   %Cpp.long_long.as.BitXorWith.impl.Op.call.loc15: init %Cpp.long_long = call %bound_method.loc15_20.4(%a.ref.loc15_18, %.loc15_22.2)
-// CHECK:STDOUT:   %a.ref.loc15_25: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc15: <specific function> = specific_function %AssertSameType.ref.loc15, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc15_20.6: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.BitXorWith.impl.Op.call.loc15
-// CHECK:STDOUT:   %.loc15_20.7: %Cpp.long_long = converted %Cpp.long_long.as.BitXorWith.impl.Op.call.loc15, %.loc15_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc15: init %empty_tuple.type = call %AssertSameType.specific_fn.loc15(%.loc15_20.7, %a.ref.loc15_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc16: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc16_18: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %b.ref.loc16: %i64 = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc16: %.730 = impl_witness_access constants.%LeftShiftWith.impl_witness.78f, element1 [concrete = constants.%Cpp.long_long.as.LeftShiftWith.impl.Op.b726d7.2]
-// CHECK:STDOUT:   %bound_method.loc16_20.1: <bound method> = bound_method %a.ref.loc16_18, %impl.elem1.loc16
-// CHECK:STDOUT:   %ImplicitAs.facet.loc16_20.1: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc16_20.1: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc16_20.1 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc16_20.2: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc16_20.2: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc16_20.2 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %specific_fn.loc16: <specific function> = specific_function %impl.elem1.loc16, @Cpp.long_long.as.LeftShiftWith.impl.Op.1(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.LeftShiftWith.impl.Op.specific_fn.db6da6.1]
-// CHECK:STDOUT:   %bound_method.loc16_20.2: <bound method> = bound_method %a.ref.loc16_18, %specific_fn.loc16
-// CHECK:STDOUT:   %.loc16_20.3: %Cpp.long_long.as.LeftShiftWith.impl.Op.type.392305.1 = specific_constant imports.%Core.Op.e43, @Cpp.long_long.as.LeftShiftWith.impl.93e(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.LeftShiftWith.impl.Op.b726d7.1]
-// CHECK:STDOUT:   %Op.ref.loc16: %Cpp.long_long.as.LeftShiftWith.impl.Op.type.392305.1 = name_ref Op, %.loc16_20.3 [concrete = constants.%Cpp.long_long.as.LeftShiftWith.impl.Op.b726d7.1]
-// CHECK:STDOUT:   %Cpp.long_long.as.LeftShiftWith.impl.Op.bound.loc16: <bound method> = bound_method %a.ref.loc16_18, %Op.ref.loc16
-// CHECK:STDOUT:   %impl.elem0.loc16_20: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc16_20.3: <bound method> = bound_method %b.ref.loc16, %impl.elem0.loc16_20
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc16_20: init %Cpp.long_long = call %bound_method.loc16_20.3(%b.ref.loc16)
-// CHECK:STDOUT:   %.loc16_20.4: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc16_20
-// CHECK:STDOUT:   %.loc16_20.5: %Cpp.long_long = converted %b.ref.loc16, %.loc16_20.4
-// CHECK:STDOUT:   %Cpp.long_long.as.LeftShiftWith.impl.Op.specific_fn.loc16: <specific function> = specific_function %Op.ref.loc16, @Cpp.long_long.as.LeftShiftWith.impl.Op.2(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.LeftShiftWith.impl.Op.specific_fn.db6da6.2]
-// CHECK:STDOUT:   %bound_method.loc16_20.4: <bound method> = bound_method %a.ref.loc16_18, %Cpp.long_long.as.LeftShiftWith.impl.Op.specific_fn.loc16
-// CHECK:STDOUT:   %impl.elem0.loc16_23: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc16_23: <bound method> = bound_method %b.ref.loc16, %impl.elem0.loc16_23
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc16_23: init %Cpp.long_long = call %bound_method.loc16_23(%b.ref.loc16)
-// CHECK:STDOUT:   %.loc16_23.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc16_23
-// CHECK:STDOUT:   %.loc16_23.2: %Cpp.long_long = converted %b.ref.loc16, %.loc16_23.1
-// CHECK:STDOUT:   %Cpp.long_long.as.LeftShiftWith.impl.Op.call.loc16: init %Cpp.long_long = call %bound_method.loc16_20.4(%a.ref.loc16_18, %.loc16_23.2)
-// CHECK:STDOUT:   %a.ref.loc16_26: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc16: <specific function> = specific_function %AssertSameType.ref.loc16, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc16_20.6: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.LeftShiftWith.impl.Op.call.loc16
-// CHECK:STDOUT:   %.loc16_20.7: %Cpp.long_long = converted %Cpp.long_long.as.LeftShiftWith.impl.Op.call.loc16, %.loc16_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc16: init %empty_tuple.type = call %AssertSameType.specific_fn.loc16(%.loc16_20.7, %a.ref.loc16_26)
-// CHECK:STDOUT:   %AssertSameType.ref.loc17: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc17_18: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %b.ref.loc17: %i64 = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc17: %.6ec = impl_witness_access constants.%RightShiftWith.impl_witness.707, element1 [concrete = constants.%Cpp.long_long.as.RightShiftWith.impl.Op.b17816.2]
-// CHECK:STDOUT:   %bound_method.loc17_20.1: <bound method> = bound_method %a.ref.loc17_18, %impl.elem1.loc17
-// CHECK:STDOUT:   %ImplicitAs.facet.loc17_20.1: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc17_20.1: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc17_20.1 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc17_20.2: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc17_20.2: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc17_20.2 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %specific_fn.loc17: <specific function> = specific_function %impl.elem1.loc17, @Cpp.long_long.as.RightShiftWith.impl.Op.1(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.RightShiftWith.impl.Op.specific_fn.bee934.1]
-// CHECK:STDOUT:   %bound_method.loc17_20.2: <bound method> = bound_method %a.ref.loc17_18, %specific_fn.loc17
-// CHECK:STDOUT:   %.loc17_20.3: %Cpp.long_long.as.RightShiftWith.impl.Op.type.947ba1.1 = specific_constant imports.%Core.Op.bae, @Cpp.long_long.as.RightShiftWith.impl.8e7(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.RightShiftWith.impl.Op.b17816.1]
-// CHECK:STDOUT:   %Op.ref.loc17: %Cpp.long_long.as.RightShiftWith.impl.Op.type.947ba1.1 = name_ref Op, %.loc17_20.3 [concrete = constants.%Cpp.long_long.as.RightShiftWith.impl.Op.b17816.1]
-// CHECK:STDOUT:   %Cpp.long_long.as.RightShiftWith.impl.Op.bound.loc17: <bound method> = bound_method %a.ref.loc17_18, %Op.ref.loc17
-// CHECK:STDOUT:   %impl.elem0.loc17_20: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc17_20.3: <bound method> = bound_method %b.ref.loc17, %impl.elem0.loc17_20
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc17_20: init %Cpp.long_long = call %bound_method.loc17_20.3(%b.ref.loc17)
-// CHECK:STDOUT:   %.loc17_20.4: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc17_20
-// CHECK:STDOUT:   %.loc17_20.5: %Cpp.long_long = converted %b.ref.loc17, %.loc17_20.4
-// CHECK:STDOUT:   %Cpp.long_long.as.RightShiftWith.impl.Op.specific_fn.loc17: <specific function> = specific_function %Op.ref.loc17, @Cpp.long_long.as.RightShiftWith.impl.Op.2(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.RightShiftWith.impl.Op.specific_fn.bee934.2]
-// CHECK:STDOUT:   %bound_method.loc17_20.4: <bound method> = bound_method %a.ref.loc17_18, %Cpp.long_long.as.RightShiftWith.impl.Op.specific_fn.loc17
-// CHECK:STDOUT:   %impl.elem0.loc17_23: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc17_23: <bound method> = bound_method %b.ref.loc17, %impl.elem0.loc17_23
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc17_23: init %Cpp.long_long = call %bound_method.loc17_23(%b.ref.loc17)
-// CHECK:STDOUT:   %.loc17_23.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc17_23
-// CHECK:STDOUT:   %.loc17_23.2: %Cpp.long_long = converted %b.ref.loc17, %.loc17_23.1
-// CHECK:STDOUT:   %Cpp.long_long.as.RightShiftWith.impl.Op.call.loc17: init %Cpp.long_long = call %bound_method.loc17_20.4(%a.ref.loc17_18, %.loc17_23.2)
-// CHECK:STDOUT:   %a.ref.loc17_26: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc17: <specific function> = specific_function %AssertSameType.ref.loc17, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc17_20.6: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.RightShiftWith.impl.Op.call.loc17
-// CHECK:STDOUT:   %.loc17_20.7: %Cpp.long_long = converted %Cpp.long_long.as.RightShiftWith.impl.Op.call.loc17, %.loc17_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc17: init %empty_tuple.type = call %AssertSameType.specific_fn.loc17(%.loc17_20.7, %a.ref.loc17_26)
-// CHECK:STDOUT:   %AssertSameType.ref.loc19: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc19_18: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %int_1.loc19: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %impl.elem1.loc19: %.be5 = impl_witness_access constants.%BitAndWith.impl_witness.83a, element1 [concrete = constants.%Cpp.long_long.as.BitAndWith.impl.Op.b2e429.2]
-// CHECK:STDOUT:   %bound_method.loc19_20.1: <bound method> = bound_method %a.ref.loc19_18, %impl.elem1.loc19
-// CHECK:STDOUT:   %ImplicitAs.facet.loc19_20.1: %ImplicitAs.type.a03 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.82e) [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %.loc19_20.1: %ImplicitAs.type.a03 = converted Core.IntLiteral, %ImplicitAs.facet.loc19_20.1 [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc19_20.2: %ImplicitAs.type.a03 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.82e) [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %.loc19_20.2: %ImplicitAs.type.a03 = converted Core.IntLiteral, %ImplicitAs.facet.loc19_20.2 [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %specific_fn.loc19: <specific function> = specific_function %impl.elem1.loc19, @Cpp.long_long.as.BitAndWith.impl.Op.1(constants.%ImplicitAs.facet.d52) [concrete = constants.%Cpp.long_long.as.BitAndWith.impl.Op.specific_fn.87f720.1]
-// CHECK:STDOUT:   %bound_method.loc19_20.2: <bound method> = bound_method %a.ref.loc19_18, %specific_fn.loc19
-// CHECK:STDOUT:   %.loc19_20.3: %Cpp.long_long.as.BitAndWith.impl.Op.type.454427.1 = specific_constant imports.%Core.Op.bf8, @Cpp.long_long.as.BitAndWith.impl.f59(constants.%ImplicitAs.facet.d52) [concrete = constants.%Cpp.long_long.as.BitAndWith.impl.Op.b2e429.1]
-// CHECK:STDOUT:   %Op.ref.loc19: %Cpp.long_long.as.BitAndWith.impl.Op.type.454427.1 = name_ref Op, %.loc19_20.3 [concrete = constants.%Cpp.long_long.as.BitAndWith.impl.Op.b2e429.1]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitAndWith.impl.Op.bound.loc19: <bound method> = bound_method %a.ref.loc19_18, %Op.ref.loc19
-// CHECK:STDOUT:   %impl.elem0.loc19_20: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %bound_method.loc19_20.3: <bound method> = bound_method %int_1.loc19, %impl.elem0.loc19_20 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19_20: init %Cpp.long_long = call %bound_method.loc19_20.3(%int_1.loc19) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc19_20.4: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19_20 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc19_20.5: %Cpp.long_long = converted %int_1.loc19, %.loc19_20.4 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitAndWith.impl.Op.specific_fn.loc19: <specific function> = specific_function %Op.ref.loc19, @Cpp.long_long.as.BitAndWith.impl.Op.2(constants.%ImplicitAs.facet.d52) [concrete = constants.%Cpp.long_long.as.BitAndWith.impl.Op.specific_fn.87f720.2]
-// CHECK:STDOUT:   %bound_method.loc19_20.4: <bound method> = bound_method %a.ref.loc19_18, %Cpp.long_long.as.BitAndWith.impl.Op.specific_fn.loc19
-// CHECK:STDOUT:   %impl.elem0.loc19_22: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %bound_method.loc19_22: <bound method> = bound_method %int_1.loc19, %impl.elem0.loc19_22 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19_22: init %Cpp.long_long = call %bound_method.loc19_22(%int_1.loc19) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc19_22.1: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19_22 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc19_22.2: %Cpp.long_long = converted %int_1.loc19, %.loc19_22.1 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitAndWith.impl.Op.call.loc19: init %Cpp.long_long = call %bound_method.loc19_20.4(%a.ref.loc19_18, %.loc19_22.2)
-// CHECK:STDOUT:   %a.ref.loc19_25: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc19: <specific function> = specific_function %AssertSameType.ref.loc19, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc19_20.6: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.BitAndWith.impl.Op.call.loc19
-// CHECK:STDOUT:   %.loc19_20.7: %Cpp.long_long = converted %Cpp.long_long.as.BitAndWith.impl.Op.call.loc19, %.loc19_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc19: init %empty_tuple.type = call %AssertSameType.specific_fn.loc19(%.loc19_20.7, %a.ref.loc19_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc20: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc20_18: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %int_1.loc20: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %impl.elem1.loc20: %.35b = impl_witness_access constants.%BitOrWith.impl_witness.dc3, element1 [concrete = constants.%Cpp.long_long.as.BitOrWith.impl.Op.58469f.2]
-// CHECK:STDOUT:   %bound_method.loc20_20.1: <bound method> = bound_method %a.ref.loc20_18, %impl.elem1.loc20
-// CHECK:STDOUT:   %ImplicitAs.facet.loc20_20.1: %ImplicitAs.type.a03 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.82e) [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %.loc20_20.1: %ImplicitAs.type.a03 = converted Core.IntLiteral, %ImplicitAs.facet.loc20_20.1 [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc20_20.2: %ImplicitAs.type.a03 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.82e) [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %.loc20_20.2: %ImplicitAs.type.a03 = converted Core.IntLiteral, %ImplicitAs.facet.loc20_20.2 [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %specific_fn.loc20: <specific function> = specific_function %impl.elem1.loc20, @Cpp.long_long.as.BitOrWith.impl.Op.1(constants.%ImplicitAs.facet.d52) [concrete = constants.%Cpp.long_long.as.BitOrWith.impl.Op.specific_fn.c253d2.1]
-// CHECK:STDOUT:   %bound_method.loc20_20.2: <bound method> = bound_method %a.ref.loc20_18, %specific_fn.loc20
-// CHECK:STDOUT:   %.loc20_20.3: %Cpp.long_long.as.BitOrWith.impl.Op.type.2b2898.1 = specific_constant imports.%Core.Op.364, @Cpp.long_long.as.BitOrWith.impl.c9b(constants.%ImplicitAs.facet.d52) [concrete = constants.%Cpp.long_long.as.BitOrWith.impl.Op.58469f.1]
-// CHECK:STDOUT:   %Op.ref.loc20: %Cpp.long_long.as.BitOrWith.impl.Op.type.2b2898.1 = name_ref Op, %.loc20_20.3 [concrete = constants.%Cpp.long_long.as.BitOrWith.impl.Op.58469f.1]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitOrWith.impl.Op.bound.loc20: <bound method> = bound_method %a.ref.loc20_18, %Op.ref.loc20
-// CHECK:STDOUT:   %impl.elem0.loc20_20: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %bound_method.loc20_20.3: <bound method> = bound_method %int_1.loc20, %impl.elem0.loc20_20 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20_20: init %Cpp.long_long = call %bound_method.loc20_20.3(%int_1.loc20) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc20_20.4: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20_20 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc20_20.5: %Cpp.long_long = converted %int_1.loc20, %.loc20_20.4 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitOrWith.impl.Op.specific_fn.loc20: <specific function> = specific_function %Op.ref.loc20, @Cpp.long_long.as.BitOrWith.impl.Op.2(constants.%ImplicitAs.facet.d52) [concrete = constants.%Cpp.long_long.as.BitOrWith.impl.Op.specific_fn.c253d2.2]
-// CHECK:STDOUT:   %bound_method.loc20_20.4: <bound method> = bound_method %a.ref.loc20_18, %Cpp.long_long.as.BitOrWith.impl.Op.specific_fn.loc20
-// CHECK:STDOUT:   %impl.elem0.loc20_22: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %bound_method.loc20_22: <bound method> = bound_method %int_1.loc20, %impl.elem0.loc20_22 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20_22: init %Cpp.long_long = call %bound_method.loc20_22(%int_1.loc20) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc20_22.1: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20_22 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc20_22.2: %Cpp.long_long = converted %int_1.loc20, %.loc20_22.1 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitOrWith.impl.Op.call.loc20: init %Cpp.long_long = call %bound_method.loc20_20.4(%a.ref.loc20_18, %.loc20_22.2)
-// CHECK:STDOUT:   %a.ref.loc20_25: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc20: <specific function> = specific_function %AssertSameType.ref.loc20, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc20_20.6: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.BitOrWith.impl.Op.call.loc20
-// CHECK:STDOUT:   %.loc20_20.7: %Cpp.long_long = converted %Cpp.long_long.as.BitOrWith.impl.Op.call.loc20, %.loc20_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc20: init %empty_tuple.type = call %AssertSameType.specific_fn.loc20(%.loc20_20.7, %a.ref.loc20_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc21: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc21_18: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %int_1.loc21: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %impl.elem1.loc21: %.ce8 = impl_witness_access constants.%BitXorWith.impl_witness.943, element1 [concrete = constants.%Cpp.long_long.as.BitXorWith.impl.Op.b0b042.2]
-// CHECK:STDOUT:   %bound_method.loc21_20.1: <bound method> = bound_method %a.ref.loc21_18, %impl.elem1.loc21
-// CHECK:STDOUT:   %ImplicitAs.facet.loc21_20.1: %ImplicitAs.type.a03 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.82e) [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %.loc21_20.1: %ImplicitAs.type.a03 = converted Core.IntLiteral, %ImplicitAs.facet.loc21_20.1 [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc21_20.2: %ImplicitAs.type.a03 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.82e) [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %.loc21_20.2: %ImplicitAs.type.a03 = converted Core.IntLiteral, %ImplicitAs.facet.loc21_20.2 [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %specific_fn.loc21: <specific function> = specific_function %impl.elem1.loc21, @Cpp.long_long.as.BitXorWith.impl.Op.1(constants.%ImplicitAs.facet.d52) [concrete = constants.%Cpp.long_long.as.BitXorWith.impl.Op.specific_fn.3d8d22.1]
-// CHECK:STDOUT:   %bound_method.loc21_20.2: <bound method> = bound_method %a.ref.loc21_18, %specific_fn.loc21
-// CHECK:STDOUT:   %.loc21_20.3: %Cpp.long_long.as.BitXorWith.impl.Op.type.23f010.1 = specific_constant imports.%Core.Op.08d, @Cpp.long_long.as.BitXorWith.impl.3a7(constants.%ImplicitAs.facet.d52) [concrete = constants.%Cpp.long_long.as.BitXorWith.impl.Op.b0b042.1]
-// CHECK:STDOUT:   %Op.ref.loc21: %Cpp.long_long.as.BitXorWith.impl.Op.type.23f010.1 = name_ref Op, %.loc21_20.3 [concrete = constants.%Cpp.long_long.as.BitXorWith.impl.Op.b0b042.1]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitXorWith.impl.Op.bound.loc21: <bound method> = bound_method %a.ref.loc21_18, %Op.ref.loc21
-// CHECK:STDOUT:   %impl.elem0.loc21_20: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %bound_method.loc21_20.3: <bound method> = bound_method %int_1.loc21, %impl.elem0.loc21_20 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21_20: init %Cpp.long_long = call %bound_method.loc21_20.3(%int_1.loc21) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc21_20.4: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21_20 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc21_20.5: %Cpp.long_long = converted %int_1.loc21, %.loc21_20.4 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitXorWith.impl.Op.specific_fn.loc21: <specific function> = specific_function %Op.ref.loc21, @Cpp.long_long.as.BitXorWith.impl.Op.2(constants.%ImplicitAs.facet.d52) [concrete = constants.%Cpp.long_long.as.BitXorWith.impl.Op.specific_fn.3d8d22.2]
-// CHECK:STDOUT:   %bound_method.loc21_20.4: <bound method> = bound_method %a.ref.loc21_18, %Cpp.long_long.as.BitXorWith.impl.Op.specific_fn.loc21
-// CHECK:STDOUT:   %impl.elem0.loc21_22: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %bound_method.loc21_22: <bound method> = bound_method %int_1.loc21, %impl.elem0.loc21_22 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21_22: init %Cpp.long_long = call %bound_method.loc21_22(%int_1.loc21) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc21_22.1: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21_22 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc21_22.2: %Cpp.long_long = converted %int_1.loc21, %.loc21_22.1 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitXorWith.impl.Op.call.loc21: init %Cpp.long_long = call %bound_method.loc21_20.4(%a.ref.loc21_18, %.loc21_22.2)
-// CHECK:STDOUT:   %a.ref.loc21_25: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc21: <specific function> = specific_function %AssertSameType.ref.loc21, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc21_20.6: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.BitXorWith.impl.Op.call.loc21
-// CHECK:STDOUT:   %.loc21_20.7: %Cpp.long_long = converted %Cpp.long_long.as.BitXorWith.impl.Op.call.loc21, %.loc21_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc21: init %empty_tuple.type = call %AssertSameType.specific_fn.loc21(%.loc21_20.7, %a.ref.loc21_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc22: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc22_18: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %int_1.loc22: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %impl.elem1.loc22: %.b37 = impl_witness_access constants.%LeftShiftWith.impl_witness.0f1, element1 [concrete = constants.%Cpp.long_long.as.LeftShiftWith.impl.Op.5502e8.2]
-// CHECK:STDOUT:   %bound_method.loc22_20.1: <bound method> = bound_method %a.ref.loc22_18, %impl.elem1.loc22
-// CHECK:STDOUT:   %ImplicitAs.facet.loc22_20.1: %ImplicitAs.type.a03 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.82e) [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %.loc22_20.1: %ImplicitAs.type.a03 = converted Core.IntLiteral, %ImplicitAs.facet.loc22_20.1 [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc22_20.2: %ImplicitAs.type.a03 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.82e) [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %.loc22_20.2: %ImplicitAs.type.a03 = converted Core.IntLiteral, %ImplicitAs.facet.loc22_20.2 [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %specific_fn.loc22: <specific function> = specific_function %impl.elem1.loc22, @Cpp.long_long.as.LeftShiftWith.impl.Op.1(constants.%ImplicitAs.facet.d52) [concrete = constants.%Cpp.long_long.as.LeftShiftWith.impl.Op.specific_fn.b9b4ae.1]
-// CHECK:STDOUT:   %bound_method.loc22_20.2: <bound method> = bound_method %a.ref.loc22_18, %specific_fn.loc22
-// CHECK:STDOUT:   %.loc22_20.3: %Cpp.long_long.as.LeftShiftWith.impl.Op.type.7ec0de.1 = specific_constant imports.%Core.Op.e43, @Cpp.long_long.as.LeftShiftWith.impl.93e(constants.%ImplicitAs.facet.d52) [concrete = constants.%Cpp.long_long.as.LeftShiftWith.impl.Op.5502e8.1]
-// CHECK:STDOUT:   %Op.ref.loc22: %Cpp.long_long.as.LeftShiftWith.impl.Op.type.7ec0de.1 = name_ref Op, %.loc22_20.3 [concrete = constants.%Cpp.long_long.as.LeftShiftWith.impl.Op.5502e8.1]
-// CHECK:STDOUT:   %Cpp.long_long.as.LeftShiftWith.impl.Op.bound.loc22: <bound method> = bound_method %a.ref.loc22_18, %Op.ref.loc22
-// CHECK:STDOUT:   %impl.elem0.loc22_20: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %bound_method.loc22_20.3: <bound method> = bound_method %int_1.loc22, %impl.elem0.loc22_20 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22_20: init %Cpp.long_long = call %bound_method.loc22_20.3(%int_1.loc22) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc22_20.4: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22_20 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc22_20.5: %Cpp.long_long = converted %int_1.loc22, %.loc22_20.4 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %Cpp.long_long.as.LeftShiftWith.impl.Op.specific_fn.loc22: <specific function> = specific_function %Op.ref.loc22, @Cpp.long_long.as.LeftShiftWith.impl.Op.2(constants.%ImplicitAs.facet.d52) [concrete = constants.%Cpp.long_long.as.LeftShiftWith.impl.Op.specific_fn.b9b4ae.2]
-// CHECK:STDOUT:   %bound_method.loc22_20.4: <bound method> = bound_method %a.ref.loc22_18, %Cpp.long_long.as.LeftShiftWith.impl.Op.specific_fn.loc22
-// CHECK:STDOUT:   %impl.elem0.loc22_23: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %bound_method.loc22_23: <bound method> = bound_method %int_1.loc22, %impl.elem0.loc22_23 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22_23: init %Cpp.long_long = call %bound_method.loc22_23(%int_1.loc22) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc22_23.1: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22_23 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc22_23.2: %Cpp.long_long = converted %int_1.loc22, %.loc22_23.1 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %Cpp.long_long.as.LeftShiftWith.impl.Op.call.loc22: init %Cpp.long_long = call %bound_method.loc22_20.4(%a.ref.loc22_18, %.loc22_23.2)
-// CHECK:STDOUT:   %a.ref.loc22_26: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc22: <specific function> = specific_function %AssertSameType.ref.loc22, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc22_20.6: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.LeftShiftWith.impl.Op.call.loc22
-// CHECK:STDOUT:   %.loc22_20.7: %Cpp.long_long = converted %Cpp.long_long.as.LeftShiftWith.impl.Op.call.loc22, %.loc22_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc22: init %empty_tuple.type = call %AssertSameType.specific_fn.loc22(%.loc22_20.7, %a.ref.loc22_26)
-// CHECK:STDOUT:   %AssertSameType.ref.loc23: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc23_18: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %int_1.loc23: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %impl.elem1.loc23: %.f6a = impl_witness_access constants.%RightShiftWith.impl_witness.1a5, element1 [concrete = constants.%Cpp.long_long.as.RightShiftWith.impl.Op.0261ea.2]
-// CHECK:STDOUT:   %bound_method.loc23_20.1: <bound method> = bound_method %a.ref.loc23_18, %impl.elem1.loc23
-// CHECK:STDOUT:   %ImplicitAs.facet.loc23_20.1: %ImplicitAs.type.a03 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.82e) [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %.loc23_20.1: %ImplicitAs.type.a03 = converted Core.IntLiteral, %ImplicitAs.facet.loc23_20.1 [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc23_20.2: %ImplicitAs.type.a03 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.82e) [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %.loc23_20.2: %ImplicitAs.type.a03 = converted Core.IntLiteral, %ImplicitAs.facet.loc23_20.2 [concrete = constants.%ImplicitAs.facet.d52]
-// CHECK:STDOUT:   %specific_fn.loc23: <specific function> = specific_function %impl.elem1.loc23, @Cpp.long_long.as.RightShiftWith.impl.Op.1(constants.%ImplicitAs.facet.d52) [concrete = constants.%Cpp.long_long.as.RightShiftWith.impl.Op.specific_fn.fa8301.1]
-// CHECK:STDOUT:   %bound_method.loc23_20.2: <bound method> = bound_method %a.ref.loc23_18, %specific_fn.loc23
-// CHECK:STDOUT:   %.loc23_20.3: %Cpp.long_long.as.RightShiftWith.impl.Op.type.94f032.1 = specific_constant imports.%Core.Op.bae, @Cpp.long_long.as.RightShiftWith.impl.8e7(constants.%ImplicitAs.facet.d52) [concrete = constants.%Cpp.long_long.as.RightShiftWith.impl.Op.0261ea.1]
-// CHECK:STDOUT:   %Op.ref.loc23: %Cpp.long_long.as.RightShiftWith.impl.Op.type.94f032.1 = name_ref Op, %.loc23_20.3 [concrete = constants.%Cpp.long_long.as.RightShiftWith.impl.Op.0261ea.1]
-// CHECK:STDOUT:   %Cpp.long_long.as.RightShiftWith.impl.Op.bound.loc23: <bound method> = bound_method %a.ref.loc23_18, %Op.ref.loc23
-// CHECK:STDOUT:   %impl.elem0.loc23_20: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %bound_method.loc23_20.3: <bound method> = bound_method %int_1.loc23, %impl.elem0.loc23_20 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc23_20: init %Cpp.long_long = call %bound_method.loc23_20.3(%int_1.loc23) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc23_20.4: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc23_20 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc23_20.5: %Cpp.long_long = converted %int_1.loc23, %.loc23_20.4 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %Cpp.long_long.as.RightShiftWith.impl.Op.specific_fn.loc23: <specific function> = specific_function %Op.ref.loc23, @Cpp.long_long.as.RightShiftWith.impl.Op.2(constants.%ImplicitAs.facet.d52) [concrete = constants.%Cpp.long_long.as.RightShiftWith.impl.Op.specific_fn.fa8301.2]
-// CHECK:STDOUT:   %bound_method.loc23_20.4: <bound method> = bound_method %a.ref.loc23_18, %Cpp.long_long.as.RightShiftWith.impl.Op.specific_fn.loc23
-// CHECK:STDOUT:   %impl.elem0.loc23_23: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %bound_method.loc23_23: <bound method> = bound_method %int_1.loc23, %impl.elem0.loc23_23 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc23_23: init %Cpp.long_long = call %bound_method.loc23_23(%int_1.loc23) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc23_23.1: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc23_23 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc23_23.2: %Cpp.long_long = converted %int_1.loc23, %.loc23_23.1 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %Cpp.long_long.as.RightShiftWith.impl.Op.call.loc23: init %Cpp.long_long = call %bound_method.loc23_20.4(%a.ref.loc23_18, %.loc23_23.2)
-// CHECK:STDOUT:   %a.ref.loc23_26: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc23: <specific function> = specific_function %AssertSameType.ref.loc23, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc23_20.6: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.RightShiftWith.impl.Op.call.loc23
-// CHECK:STDOUT:   %.loc23_20.7: %Cpp.long_long = converted %Cpp.long_long.as.RightShiftWith.impl.Op.call.loc23, %.loc23_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc23: init %empty_tuple.type = call %AssertSameType.specific_fn.loc23(%.loc23_20.7, %a.ref.loc23_26)
-// CHECK:STDOUT:   %AssertSameType.ref.loc25: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc25_18: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %b.ref.loc25: %i64 = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc25: %.69f = impl_witness_access constants.%BitAndWith.impl_witness.85b, element1 [concrete = constants.%Cpp.long_long.as.BitAndWith.impl.Op.8819bd.2]
-// CHECK:STDOUT:   %bound_method.loc25_20.1: <bound method> = bound_method %a.ref.loc25_18, %impl.elem1.loc25
-// CHECK:STDOUT:   %ImplicitAs.facet.loc25_20.1: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc25_20.1: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc25_20.1 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc25_20.2: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc25_20.2: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc25_20.2 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %specific_fn.loc25: <specific function> = specific_function %impl.elem1.loc25, @Cpp.long_long.as.BitAndWith.impl.Op.1(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.BitAndWith.impl.Op.specific_fn.944ed2.1]
-// CHECK:STDOUT:   %bound_method.loc25_20.2: <bound method> = bound_method %a.ref.loc25_18, %specific_fn.loc25
-// CHECK:STDOUT:   %.loc25_20.3: %Cpp.long_long.as.BitAndWith.impl.Op.type.46a434.1 = specific_constant imports.%Core.Op.bf8, @Cpp.long_long.as.BitAndWith.impl.f59(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.BitAndWith.impl.Op.8819bd.1]
-// CHECK:STDOUT:   %Op.ref.loc25: %Cpp.long_long.as.BitAndWith.impl.Op.type.46a434.1 = name_ref Op, %.loc25_20.3 [concrete = constants.%Cpp.long_long.as.BitAndWith.impl.Op.8819bd.1]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitAndWith.impl.Op.bound.loc25: <bound method> = bound_method %a.ref.loc25_18, %Op.ref.loc25
-// CHECK:STDOUT:   %impl.elem0.loc25_20: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc25_20.3: <bound method> = bound_method %b.ref.loc25, %impl.elem0.loc25_20
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc25_20: init %Cpp.long_long = call %bound_method.loc25_20.3(%b.ref.loc25)
-// CHECK:STDOUT:   %.loc25_20.4: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc25_20
-// CHECK:STDOUT:   %.loc25_20.5: %Cpp.long_long = converted %b.ref.loc25, %.loc25_20.4
-// CHECK:STDOUT:   %Cpp.long_long.as.BitAndWith.impl.Op.specific_fn.loc25: <specific function> = specific_function %Op.ref.loc25, @Cpp.long_long.as.BitAndWith.impl.Op.2(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.BitAndWith.impl.Op.specific_fn.944ed2.2]
-// CHECK:STDOUT:   %bound_method.loc25_20.4: <bound method> = bound_method %a.ref.loc25_18, %Cpp.long_long.as.BitAndWith.impl.Op.specific_fn.loc25
-// CHECK:STDOUT:   %impl.elem0.loc25_22: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc25_22: <bound method> = bound_method %b.ref.loc25, %impl.elem0.loc25_22
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc25_22: init %Cpp.long_long = call %bound_method.loc25_22(%b.ref.loc25)
-// CHECK:STDOUT:   %.loc25_22.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc25_22
-// CHECK:STDOUT:   %.loc25_22.2: %Cpp.long_long = converted %b.ref.loc25, %.loc25_22.1
-// CHECK:STDOUT:   %Cpp.long_long.as.BitAndWith.impl.Op.call.loc25: init %Cpp.long_long = call %bound_method.loc25_20.4(%a.ref.loc25_18, %.loc25_22.2)
-// CHECK:STDOUT:   %a.ref.loc25_25: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc25: <specific function> = specific_function %AssertSameType.ref.loc25, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc25_20.6: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.BitAndWith.impl.Op.call.loc25
-// CHECK:STDOUT:   %.loc25_20.7: %Cpp.long_long = converted %Cpp.long_long.as.BitAndWith.impl.Op.call.loc25, %.loc25_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc25: init %empty_tuple.type = call %AssertSameType.specific_fn.loc25(%.loc25_20.7, %a.ref.loc25_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc26: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc26_18: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %b.ref.loc26: %i64 = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc26: %.6dd = impl_witness_access constants.%BitOrWith.impl_witness.da7, element1 [concrete = constants.%Cpp.long_long.as.BitOrWith.impl.Op.7a35d3.2]
-// CHECK:STDOUT:   %bound_method.loc26_20.1: <bound method> = bound_method %a.ref.loc26_18, %impl.elem1.loc26
-// CHECK:STDOUT:   %ImplicitAs.facet.loc26_20.1: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc26_20.1: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc26_20.1 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc26_20.2: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc26_20.2: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc26_20.2 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %specific_fn.loc26: <specific function> = specific_function %impl.elem1.loc26, @Cpp.long_long.as.BitOrWith.impl.Op.1(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.BitOrWith.impl.Op.specific_fn.381f46.1]
-// CHECK:STDOUT:   %bound_method.loc26_20.2: <bound method> = bound_method %a.ref.loc26_18, %specific_fn.loc26
-// CHECK:STDOUT:   %.loc26_20.3: %Cpp.long_long.as.BitOrWith.impl.Op.type.d3ab21.1 = specific_constant imports.%Core.Op.364, @Cpp.long_long.as.BitOrWith.impl.c9b(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.BitOrWith.impl.Op.7a35d3.1]
-// CHECK:STDOUT:   %Op.ref.loc26: %Cpp.long_long.as.BitOrWith.impl.Op.type.d3ab21.1 = name_ref Op, %.loc26_20.3 [concrete = constants.%Cpp.long_long.as.BitOrWith.impl.Op.7a35d3.1]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitOrWith.impl.Op.bound.loc26: <bound method> = bound_method %a.ref.loc26_18, %Op.ref.loc26
-// CHECK:STDOUT:   %impl.elem0.loc26_20: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc26_20.3: <bound method> = bound_method %b.ref.loc26, %impl.elem0.loc26_20
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc26_20: init %Cpp.long_long = call %bound_method.loc26_20.3(%b.ref.loc26)
-// CHECK:STDOUT:   %.loc26_20.4: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc26_20
-// CHECK:STDOUT:   %.loc26_20.5: %Cpp.long_long = converted %b.ref.loc26, %.loc26_20.4
-// CHECK:STDOUT:   %Cpp.long_long.as.BitOrWith.impl.Op.specific_fn.loc26: <specific function> = specific_function %Op.ref.loc26, @Cpp.long_long.as.BitOrWith.impl.Op.2(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.BitOrWith.impl.Op.specific_fn.381f46.2]
-// CHECK:STDOUT:   %bound_method.loc26_20.4: <bound method> = bound_method %a.ref.loc26_18, %Cpp.long_long.as.BitOrWith.impl.Op.specific_fn.loc26
-// CHECK:STDOUT:   %impl.elem0.loc26_22: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc26_22: <bound method> = bound_method %b.ref.loc26, %impl.elem0.loc26_22
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc26_22: init %Cpp.long_long = call %bound_method.loc26_22(%b.ref.loc26)
-// CHECK:STDOUT:   %.loc26_22.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc26_22
-// CHECK:STDOUT:   %.loc26_22.2: %Cpp.long_long = converted %b.ref.loc26, %.loc26_22.1
-// CHECK:STDOUT:   %Cpp.long_long.as.BitOrWith.impl.Op.call.loc26: init %Cpp.long_long = call %bound_method.loc26_20.4(%a.ref.loc26_18, %.loc26_22.2)
-// CHECK:STDOUT:   %a.ref.loc26_25: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc26: <specific function> = specific_function %AssertSameType.ref.loc26, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc26_20.6: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.BitOrWith.impl.Op.call.loc26
-// CHECK:STDOUT:   %.loc26_20.7: %Cpp.long_long = converted %Cpp.long_long.as.BitOrWith.impl.Op.call.loc26, %.loc26_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc26: init %empty_tuple.type = call %AssertSameType.specific_fn.loc26(%.loc26_20.7, %a.ref.loc26_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc27: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc27_18: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %b.ref.loc27: %i64 = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc27: %.a1e = impl_witness_access constants.%BitXorWith.impl_witness.d73, element1 [concrete = constants.%Cpp.long_long.as.BitXorWith.impl.Op.8e4513.2]
-// CHECK:STDOUT:   %bound_method.loc27_20.1: <bound method> = bound_method %a.ref.loc27_18, %impl.elem1.loc27
-// CHECK:STDOUT:   %ImplicitAs.facet.loc27_20.1: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc27_20.1: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc27_20.1 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc27_20.2: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc27_20.2: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc27_20.2 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %specific_fn.loc27: <specific function> = specific_function %impl.elem1.loc27, @Cpp.long_long.as.BitXorWith.impl.Op.1(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.BitXorWith.impl.Op.specific_fn.741c0a.1]
-// CHECK:STDOUT:   %bound_method.loc27_20.2: <bound method> = bound_method %a.ref.loc27_18, %specific_fn.loc27
-// CHECK:STDOUT:   %.loc27_20.3: %Cpp.long_long.as.BitXorWith.impl.Op.type.5edc0b.1 = specific_constant imports.%Core.Op.08d, @Cpp.long_long.as.BitXorWith.impl.3a7(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.BitXorWith.impl.Op.8e4513.1]
-// CHECK:STDOUT:   %Op.ref.loc27: %Cpp.long_long.as.BitXorWith.impl.Op.type.5edc0b.1 = name_ref Op, %.loc27_20.3 [concrete = constants.%Cpp.long_long.as.BitXorWith.impl.Op.8e4513.1]
-// CHECK:STDOUT:   %Cpp.long_long.as.BitXorWith.impl.Op.bound.loc27: <bound method> = bound_method %a.ref.loc27_18, %Op.ref.loc27
-// CHECK:STDOUT:   %impl.elem0.loc27_20: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc27_20.3: <bound method> = bound_method %b.ref.loc27, %impl.elem0.loc27_20
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc27_20: init %Cpp.long_long = call %bound_method.loc27_20.3(%b.ref.loc27)
-// CHECK:STDOUT:   %.loc27_20.4: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc27_20
-// CHECK:STDOUT:   %.loc27_20.5: %Cpp.long_long = converted %b.ref.loc27, %.loc27_20.4
-// CHECK:STDOUT:   %Cpp.long_long.as.BitXorWith.impl.Op.specific_fn.loc27: <specific function> = specific_function %Op.ref.loc27, @Cpp.long_long.as.BitXorWith.impl.Op.2(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.BitXorWith.impl.Op.specific_fn.741c0a.2]
-// CHECK:STDOUT:   %bound_method.loc27_20.4: <bound method> = bound_method %a.ref.loc27_18, %Cpp.long_long.as.BitXorWith.impl.Op.specific_fn.loc27
-// CHECK:STDOUT:   %impl.elem0.loc27_22: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc27_22: <bound method> = bound_method %b.ref.loc27, %impl.elem0.loc27_22
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc27_22: init %Cpp.long_long = call %bound_method.loc27_22(%b.ref.loc27)
-// CHECK:STDOUT:   %.loc27_22.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc27_22
-// CHECK:STDOUT:   %.loc27_22.2: %Cpp.long_long = converted %b.ref.loc27, %.loc27_22.1
-// CHECK:STDOUT:   %Cpp.long_long.as.BitXorWith.impl.Op.call.loc27: init %Cpp.long_long = call %bound_method.loc27_20.4(%a.ref.loc27_18, %.loc27_22.2)
-// CHECK:STDOUT:   %a.ref.loc27_25: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc27: <specific function> = specific_function %AssertSameType.ref.loc27, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc27_20.6: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.BitXorWith.impl.Op.call.loc27
-// CHECK:STDOUT:   %.loc27_20.7: %Cpp.long_long = converted %Cpp.long_long.as.BitXorWith.impl.Op.call.loc27, %.loc27_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc27: init %empty_tuple.type = call %AssertSameType.specific_fn.loc27(%.loc27_20.7, %a.ref.loc27_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc28: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc28_18: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %b.ref.loc28: %i64 = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc28: %.730 = impl_witness_access constants.%LeftShiftWith.impl_witness.78f, element1 [concrete = constants.%Cpp.long_long.as.LeftShiftWith.impl.Op.b726d7.2]
-// CHECK:STDOUT:   %bound_method.loc28_20.1: <bound method> = bound_method %a.ref.loc28_18, %impl.elem1.loc28
-// CHECK:STDOUT:   %ImplicitAs.facet.loc28_20.1: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc28_20.1: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc28_20.1 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc28_20.2: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc28_20.2: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc28_20.2 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %specific_fn.loc28: <specific function> = specific_function %impl.elem1.loc28, @Cpp.long_long.as.LeftShiftWith.impl.Op.1(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.LeftShiftWith.impl.Op.specific_fn.db6da6.1]
-// CHECK:STDOUT:   %bound_method.loc28_20.2: <bound method> = bound_method %a.ref.loc28_18, %specific_fn.loc28
-// CHECK:STDOUT:   %.loc28_20.3: %Cpp.long_long.as.LeftShiftWith.impl.Op.type.392305.1 = specific_constant imports.%Core.Op.e43, @Cpp.long_long.as.LeftShiftWith.impl.93e(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.LeftShiftWith.impl.Op.b726d7.1]
-// CHECK:STDOUT:   %Op.ref.loc28: %Cpp.long_long.as.LeftShiftWith.impl.Op.type.392305.1 = name_ref Op, %.loc28_20.3 [concrete = constants.%Cpp.long_long.as.LeftShiftWith.impl.Op.b726d7.1]
-// CHECK:STDOUT:   %Cpp.long_long.as.LeftShiftWith.impl.Op.bound.loc28: <bound method> = bound_method %a.ref.loc28_18, %Op.ref.loc28
-// CHECK:STDOUT:   %impl.elem0.loc28_20: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc28_20.3: <bound method> = bound_method %b.ref.loc28, %impl.elem0.loc28_20
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc28_20: init %Cpp.long_long = call %bound_method.loc28_20.3(%b.ref.loc28)
-// CHECK:STDOUT:   %.loc28_20.4: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc28_20
-// CHECK:STDOUT:   %.loc28_20.5: %Cpp.long_long = converted %b.ref.loc28, %.loc28_20.4
-// CHECK:STDOUT:   %Cpp.long_long.as.LeftShiftWith.impl.Op.specific_fn.loc28: <specific function> = specific_function %Op.ref.loc28, @Cpp.long_long.as.LeftShiftWith.impl.Op.2(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.LeftShiftWith.impl.Op.specific_fn.db6da6.2]
-// CHECK:STDOUT:   %bound_method.loc28_20.4: <bound method> = bound_method %a.ref.loc28_18, %Cpp.long_long.as.LeftShiftWith.impl.Op.specific_fn.loc28
-// CHECK:STDOUT:   %impl.elem0.loc28_23: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc28_23: <bound method> = bound_method %b.ref.loc28, %impl.elem0.loc28_23
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc28_23: init %Cpp.long_long = call %bound_method.loc28_23(%b.ref.loc28)
-// CHECK:STDOUT:   %.loc28_23.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc28_23
-// CHECK:STDOUT:   %.loc28_23.2: %Cpp.long_long = converted %b.ref.loc28, %.loc28_23.1
-// CHECK:STDOUT:   %Cpp.long_long.as.LeftShiftWith.impl.Op.call.loc28: init %Cpp.long_long = call %bound_method.loc28_20.4(%a.ref.loc28_18, %.loc28_23.2)
-// CHECK:STDOUT:   %a.ref.loc28_26: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc28: <specific function> = specific_function %AssertSameType.ref.loc28, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc28_20.6: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.LeftShiftWith.impl.Op.call.loc28
-// CHECK:STDOUT:   %.loc28_20.7: %Cpp.long_long = converted %Cpp.long_long.as.LeftShiftWith.impl.Op.call.loc28, %.loc28_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc28: init %empty_tuple.type = call %AssertSameType.specific_fn.loc28(%.loc28_20.7, %a.ref.loc28_26)
-// CHECK:STDOUT:   %AssertSameType.ref.loc29: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc29_18: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %b.ref.loc29: %i64 = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc29: %.6ec = impl_witness_access constants.%RightShiftWith.impl_witness.707, element1 [concrete = constants.%Cpp.long_long.as.RightShiftWith.impl.Op.b17816.2]
-// CHECK:STDOUT:   %bound_method.loc29_20.1: <bound method> = bound_method %a.ref.loc29_18, %impl.elem1.loc29
-// CHECK:STDOUT:   %ImplicitAs.facet.loc29_20.1: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc29_20.1: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc29_20.1 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %ImplicitAs.facet.loc29_20.2: %ImplicitAs.type.a03 = facet_value constants.%i64, (constants.%ImplicitAs.impl_witness.1b3) [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %.loc29_20.2: %ImplicitAs.type.a03 = converted constants.%i64, %ImplicitAs.facet.loc29_20.2 [concrete = constants.%ImplicitAs.facet.c59]
-// CHECK:STDOUT:   %specific_fn.loc29: <specific function> = specific_function %impl.elem1.loc29, @Cpp.long_long.as.RightShiftWith.impl.Op.1(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.RightShiftWith.impl.Op.specific_fn.bee934.1]
-// CHECK:STDOUT:   %bound_method.loc29_20.2: <bound method> = bound_method %a.ref.loc29_18, %specific_fn.loc29
-// CHECK:STDOUT:   %.loc29_20.3: %Cpp.long_long.as.RightShiftWith.impl.Op.type.947ba1.1 = specific_constant imports.%Core.Op.bae, @Cpp.long_long.as.RightShiftWith.impl.8e7(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.RightShiftWith.impl.Op.b17816.1]
-// CHECK:STDOUT:   %Op.ref.loc29: %Cpp.long_long.as.RightShiftWith.impl.Op.type.947ba1.1 = name_ref Op, %.loc29_20.3 [concrete = constants.%Cpp.long_long.as.RightShiftWith.impl.Op.b17816.1]
-// CHECK:STDOUT:   %Cpp.long_long.as.RightShiftWith.impl.Op.bound.loc29: <bound method> = bound_method %a.ref.loc29_18, %Op.ref.loc29
-// CHECK:STDOUT:   %impl.elem0.loc29_20: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc29_20.3: <bound method> = bound_method %b.ref.loc29, %impl.elem0.loc29_20
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc29_20: init %Cpp.long_long = call %bound_method.loc29_20.3(%b.ref.loc29)
-// CHECK:STDOUT:   %.loc29_20.4: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc29_20
-// CHECK:STDOUT:   %.loc29_20.5: %Cpp.long_long = converted %b.ref.loc29, %.loc29_20.4
-// CHECK:STDOUT:   %Cpp.long_long.as.RightShiftWith.impl.Op.specific_fn.loc29: <specific function> = specific_function %Op.ref.loc29, @Cpp.long_long.as.RightShiftWith.impl.Op.2(constants.%ImplicitAs.facet.c59) [concrete = constants.%Cpp.long_long.as.RightShiftWith.impl.Op.specific_fn.bee934.2]
-// CHECK:STDOUT:   %bound_method.loc29_20.4: <bound method> = bound_method %a.ref.loc29_18, %Cpp.long_long.as.RightShiftWith.impl.Op.specific_fn.loc29
-// CHECK:STDOUT:   %impl.elem0.loc29_23: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc29_23: <bound method> = bound_method %b.ref.loc29, %impl.elem0.loc29_23
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc29_23: init %Cpp.long_long = call %bound_method.loc29_23(%b.ref.loc29)
-// CHECK:STDOUT:   %.loc29_23.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc29_23
-// CHECK:STDOUT:   %.loc29_23.2: %Cpp.long_long = converted %b.ref.loc29, %.loc29_23.1
-// CHECK:STDOUT:   %Cpp.long_long.as.RightShiftWith.impl.Op.call.loc29: init %Cpp.long_long = call %bound_method.loc29_20.4(%a.ref.loc29_18, %.loc29_23.2)
-// CHECK:STDOUT:   %a.ref.loc29_26: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc29: <specific function> = specific_function %AssertSameType.ref.loc29, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc29_20.6: %Cpp.long_long = value_of_initializer %Cpp.long_long.as.RightShiftWith.impl.Op.call.loc29
-// CHECK:STDOUT:   %.loc29_20.7: %Cpp.long_long = converted %Cpp.long_long.as.RightShiftWith.impl.Op.call.loc29, %.loc29_20.6
-// CHECK:STDOUT:   %AssertSameType.call.loc29: init %empty_tuple.type = call %AssertSameType.specific_fn.loc29(%.loc29_20.7, %a.ref.loc29_26)
-// CHECK:STDOUT:   <elided>
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: --- bitwise_heterogeneous_long_long_right_side.carbon
-// CHECK:STDOUT:
-// CHECK:STDOUT: constants {
-// CHECK:STDOUT:   %AssertSameType.type: type = fn_type @AssertSameType [concrete]
-// CHECK:STDOUT:   %empty_tuple.type: type = tuple_type () [concrete]
-// CHECK:STDOUT:   %AssertSameType: %AssertSameType.type = struct_value () [concrete]
-// CHECK:STDOUT:   %int_64: Core.IntLiteral = int_value 64 [concrete]
-// CHECK:STDOUT:   %i64: type = class_type @Int, @Int(%int_64) [concrete]
-// CHECK:STDOUT:   %int_1.5b8: Core.IntLiteral = int_value 1 [concrete]
-// CHECK:STDOUT:   %Cpp.long_long: type = class_type @LongLong64 [concrete]
-// CHECK:STDOUT:   %pattern_type.76e: type = pattern_type %Cpp.long_long [concrete]
-// CHECK:STDOUT:   %ImplicitAs.type.a03: type = facet_type <@ImplicitAs, @ImplicitAs(%Cpp.long_long)> [concrete]
-// CHECK:STDOUT:   %ImplicitAs.Convert.type.6e4: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Cpp.long_long) [concrete]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness.82e: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.896 [concrete]
-// CHECK:STDOUT:   %ImplicitAs.facet.d52: %ImplicitAs.type.a03 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.82e) [concrete]
-// CHECK:STDOUT:   %.a93: type = fn_type_with_self_type %ImplicitAs.Convert.type.6e4, %ImplicitAs.facet.d52 [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.aba: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.2 [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.a20: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.aba = struct_value () [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae: <bound method> = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.a20 [concrete]
-// CHECK:STDOUT:   %int_1.092: %Cpp.long_long = int_value 1 [concrete]
-// CHECK:STDOUT:   %BitAndWith.type.97f: type = facet_type <@BitAndWith, @BitAndWith(%Cpp.long_long)> [concrete]
-// CHECK:STDOUT:   %BitAndWith.Op.type.c6c: type = fn_type @BitAndWith.Op, @BitAndWith(%Cpp.long_long) [concrete]
-// CHECK:STDOUT:   %T.ea5: %ImplicitAs.type.a03 = symbolic_binding T, 0 [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.type.e1600b.1: type = fn_type @T.binding.as_type.as.BitAndWith.impl.Op.3, @T.binding.as_type.as.BitAndWith.impl.972(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.183211.1: %T.binding.as_type.as.BitAndWith.impl.Op.type.e1600b.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.type.e1600b.2: type = fn_type @T.binding.as_type.as.BitAndWith.impl.Op.4, @T.binding.as_type.as.BitAndWith.impl.972(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.183211.2: %T.binding.as_type.as.BitAndWith.impl.Op.type.e1600b.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness.1b3: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.b19 [concrete]
-// CHECK:STDOUT:   %ImplicitAs.facet.c59: %ImplicitAs.type.a03 = facet_value %i64, (%ImplicitAs.impl_witness.1b3) [concrete]
-// CHECK:STDOUT:   %BitAndWith.impl_witness.668: <witness> = impl_witness imports.%BitAndWith.impl_witness_table.1b6, @T.binding.as_type.as.BitAndWith.impl.972(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.type.d0d4e3.1: type = fn_type @T.binding.as_type.as.BitAndWith.impl.Op.4, @T.binding.as_type.as.BitAndWith.impl.972(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.77d50f.1: %T.binding.as_type.as.BitAndWith.impl.Op.type.d0d4e3.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.type.d0d4e3.2: type = fn_type @T.binding.as_type.as.BitAndWith.impl.Op.3, @T.binding.as_type.as.BitAndWith.impl.972(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.77d50f.2: %T.binding.as_type.as.BitAndWith.impl.Op.type.d0d4e3.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %BitAndWith.facet.ed4: %BitAndWith.type.97f = facet_value %i64, (%BitAndWith.impl_witness.668) [concrete]
-// CHECK:STDOUT:   %.14d: type = fn_type_with_self_type %BitAndWith.Op.type.c6c, %BitAndWith.facet.ed4 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.16125d.1: <specific function> = specific_function %T.binding.as_type.as.BitAndWith.impl.Op.77d50f.2, @T.binding.as_type.as.BitAndWith.impl.Op.3(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.16125d.2: <specific function> = specific_function %T.binding.as_type.as.BitAndWith.impl.Op.77d50f.1, @T.binding.as_type.as.BitAndWith.impl.Op.4(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %.b29: type = fn_type_with_self_type %ImplicitAs.Convert.type.6e4, %ImplicitAs.facet.c59 [concrete]
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.type: type = fn_type @i64.as.ImplicitAs.impl.Convert [concrete]
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert: %i64.as.ImplicitAs.impl.Convert.type = struct_value () [concrete]
-// CHECK:STDOUT:   %AssertSameType.specific_fn: <specific function> = specific_function %AssertSameType, @AssertSameType(%Cpp.long_long) [concrete]
-// CHECK:STDOUT:   %BitOrWith.type.d59: type = facet_type <@BitOrWith, @BitOrWith(%Cpp.long_long)> [concrete]
-// CHECK:STDOUT:   %BitOrWith.Op.type.c9c: type = fn_type @BitOrWith.Op, @BitOrWith(%Cpp.long_long) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.type.aeba4a.1: type = fn_type @T.binding.as_type.as.BitOrWith.impl.Op.3, @T.binding.as_type.as.BitOrWith.impl.a9d(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.bafb09.1: %T.binding.as_type.as.BitOrWith.impl.Op.type.aeba4a.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.type.aeba4a.2: type = fn_type @T.binding.as_type.as.BitOrWith.impl.Op.4, @T.binding.as_type.as.BitOrWith.impl.a9d(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.bafb09.2: %T.binding.as_type.as.BitOrWith.impl.Op.type.aeba4a.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %BitOrWith.impl_witness.771: <witness> = impl_witness imports.%BitOrWith.impl_witness_table.54a, @T.binding.as_type.as.BitOrWith.impl.a9d(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.type.2c510c.1: type = fn_type @T.binding.as_type.as.BitOrWith.impl.Op.4, @T.binding.as_type.as.BitOrWith.impl.a9d(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.9b8362.1: %T.binding.as_type.as.BitOrWith.impl.Op.type.2c510c.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.type.2c510c.2: type = fn_type @T.binding.as_type.as.BitOrWith.impl.Op.3, @T.binding.as_type.as.BitOrWith.impl.a9d(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.9b8362.2: %T.binding.as_type.as.BitOrWith.impl.Op.type.2c510c.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %BitOrWith.facet.794: %BitOrWith.type.d59 = facet_value %i64, (%BitOrWith.impl_witness.771) [concrete]
-// CHECK:STDOUT:   %.a4a: type = fn_type_with_self_type %BitOrWith.Op.type.c9c, %BitOrWith.facet.794 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.specific_fn.bd6228.1: <specific function> = specific_function %T.binding.as_type.as.BitOrWith.impl.Op.9b8362.2, @T.binding.as_type.as.BitOrWith.impl.Op.3(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.specific_fn.bd6228.2: <specific function> = specific_function %T.binding.as_type.as.BitOrWith.impl.Op.9b8362.1, @T.binding.as_type.as.BitOrWith.impl.Op.4(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %BitXorWith.type.b7e: type = facet_type <@BitXorWith, @BitXorWith(%Cpp.long_long)> [concrete]
-// CHECK:STDOUT:   %BitXorWith.Op.type.1d5: type = fn_type @BitXorWith.Op, @BitXorWith(%Cpp.long_long) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.type.ac630d.1: type = fn_type @T.binding.as_type.as.BitXorWith.impl.Op.3, @T.binding.as_type.as.BitXorWith.impl.0e9(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.ffb1c4.1: %T.binding.as_type.as.BitXorWith.impl.Op.type.ac630d.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.type.ac630d.2: type = fn_type @T.binding.as_type.as.BitXorWith.impl.Op.4, @T.binding.as_type.as.BitXorWith.impl.0e9(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.ffb1c4.2: %T.binding.as_type.as.BitXorWith.impl.Op.type.ac630d.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %BitXorWith.impl_witness.28f: <witness> = impl_witness imports.%BitXorWith.impl_witness_table.2f7, @T.binding.as_type.as.BitXorWith.impl.0e9(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.type.02ef16.1: type = fn_type @T.binding.as_type.as.BitXorWith.impl.Op.4, @T.binding.as_type.as.BitXorWith.impl.0e9(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.f03227.1: %T.binding.as_type.as.BitXorWith.impl.Op.type.02ef16.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.type.02ef16.2: type = fn_type @T.binding.as_type.as.BitXorWith.impl.Op.3, @T.binding.as_type.as.BitXorWith.impl.0e9(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.f03227.2: %T.binding.as_type.as.BitXorWith.impl.Op.type.02ef16.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %BitXorWith.facet.e2c: %BitXorWith.type.b7e = facet_value %i64, (%BitXorWith.impl_witness.28f) [concrete]
-// CHECK:STDOUT:   %.f37: type = fn_type_with_self_type %BitXorWith.Op.type.1d5, %BitXorWith.facet.e2c [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.specific_fn.bae3fa.1: <specific function> = specific_function %T.binding.as_type.as.BitXorWith.impl.Op.f03227.2, @T.binding.as_type.as.BitXorWith.impl.Op.3(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.specific_fn.bae3fa.2: <specific function> = specific_function %T.binding.as_type.as.BitXorWith.impl.Op.f03227.1, @T.binding.as_type.as.BitXorWith.impl.Op.4(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %LeftShiftWith.type.091: type = facet_type <@LeftShiftWith, @LeftShiftWith(%Cpp.long_long)> [concrete]
-// CHECK:STDOUT:   %LeftShiftWith.Op.type.5df: type = fn_type @LeftShiftWith.Op, @LeftShiftWith(%Cpp.long_long) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.type.3ecd57.1: type = fn_type @T.binding.as_type.as.LeftShiftWith.impl.Op.3, @T.binding.as_type.as.LeftShiftWith.impl.b8c(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.3ee0c1.1: %T.binding.as_type.as.LeftShiftWith.impl.Op.type.3ecd57.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.type.3ecd57.2: type = fn_type @T.binding.as_type.as.LeftShiftWith.impl.Op.4, @T.binding.as_type.as.LeftShiftWith.impl.b8c(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.3ee0c1.2: %T.binding.as_type.as.LeftShiftWith.impl.Op.type.3ecd57.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %LeftShiftWith.impl_witness.95c: <witness> = impl_witness imports.%LeftShiftWith.impl_witness_table.6dc, @T.binding.as_type.as.LeftShiftWith.impl.b8c(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.type.c82b93.1: type = fn_type @T.binding.as_type.as.LeftShiftWith.impl.Op.4, @T.binding.as_type.as.LeftShiftWith.impl.b8c(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.300e5a.1: %T.binding.as_type.as.LeftShiftWith.impl.Op.type.c82b93.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.type.c82b93.2: type = fn_type @T.binding.as_type.as.LeftShiftWith.impl.Op.3, @T.binding.as_type.as.LeftShiftWith.impl.b8c(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.300e5a.2: %T.binding.as_type.as.LeftShiftWith.impl.Op.type.c82b93.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %LeftShiftWith.facet.3b6: %LeftShiftWith.type.091 = facet_value %i64, (%LeftShiftWith.impl_witness.95c) [concrete]
-// CHECK:STDOUT:   %.3c0: type = fn_type_with_self_type %LeftShiftWith.Op.type.5df, %LeftShiftWith.facet.3b6 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.specific_fn.c7ed9a.1: <specific function> = specific_function %T.binding.as_type.as.LeftShiftWith.impl.Op.300e5a.2, @T.binding.as_type.as.LeftShiftWith.impl.Op.3(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.specific_fn.c7ed9a.2: <specific function> = specific_function %T.binding.as_type.as.LeftShiftWith.impl.Op.300e5a.1, @T.binding.as_type.as.LeftShiftWith.impl.Op.4(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %RightShiftWith.type.382: type = facet_type <@RightShiftWith, @RightShiftWith(%Cpp.long_long)> [concrete]
-// CHECK:STDOUT:   %RightShiftWith.Op.type.202: type = fn_type @RightShiftWith.Op, @RightShiftWith(%Cpp.long_long) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.type.e5d568.1: type = fn_type @T.binding.as_type.as.RightShiftWith.impl.Op.3, @T.binding.as_type.as.RightShiftWith.impl.677(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.e94511.1: %T.binding.as_type.as.RightShiftWith.impl.Op.type.e5d568.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.type.e5d568.2: type = fn_type @T.binding.as_type.as.RightShiftWith.impl.Op.4, @T.binding.as_type.as.RightShiftWith.impl.677(%T.ea5) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.e94511.2: %T.binding.as_type.as.RightShiftWith.impl.Op.type.e5d568.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %RightShiftWith.impl_witness.015: <witness> = impl_witness imports.%RightShiftWith.impl_witness_table.6b8, @T.binding.as_type.as.RightShiftWith.impl.677(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.type.ff07c1.1: type = fn_type @T.binding.as_type.as.RightShiftWith.impl.Op.4, @T.binding.as_type.as.RightShiftWith.impl.677(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.513286.1: %T.binding.as_type.as.RightShiftWith.impl.Op.type.ff07c1.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.type.ff07c1.2: type = fn_type @T.binding.as_type.as.RightShiftWith.impl.Op.3, @T.binding.as_type.as.RightShiftWith.impl.677(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.513286.2: %T.binding.as_type.as.RightShiftWith.impl.Op.type.ff07c1.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %RightShiftWith.facet.532: %RightShiftWith.type.382 = facet_value %i64, (%RightShiftWith.impl_witness.015) [concrete]
-// CHECK:STDOUT:   %.c72: type = fn_type_with_self_type %RightShiftWith.Op.type.202, %RightShiftWith.facet.532 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.specific_fn.7142b6.1: <specific function> = specific_function %T.binding.as_type.as.RightShiftWith.impl.Op.513286.2, @T.binding.as_type.as.RightShiftWith.impl.Op.3(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.specific_fn.7142b6.2: <specific function> = specific_function %T.binding.as_type.as.RightShiftWith.impl.Op.513286.1, @T.binding.as_type.as.RightShiftWith.impl.Op.4(%ImplicitAs.facet.c59) [concrete]
-// CHECK:STDOUT:   %BitAndWith.impl_witness.d64: <witness> = impl_witness imports.%BitAndWith.impl_witness_table.1b6, @T.binding.as_type.as.BitAndWith.impl.972(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.type.41163c.1: type = fn_type @T.binding.as_type.as.BitAndWith.impl.Op.4, @T.binding.as_type.as.BitAndWith.impl.972(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.23dbf6.1: %T.binding.as_type.as.BitAndWith.impl.Op.type.41163c.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.type.41163c.2: type = fn_type @T.binding.as_type.as.BitAndWith.impl.Op.3, @T.binding.as_type.as.BitAndWith.impl.972(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.23dbf6.2: %T.binding.as_type.as.BitAndWith.impl.Op.type.41163c.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %BitAndWith.facet.da7: %BitAndWith.type.97f = facet_value Core.IntLiteral, (%BitAndWith.impl_witness.d64) [concrete]
-// CHECK:STDOUT:   %.47c: type = fn_type_with_self_type %BitAndWith.Op.type.c6c, %BitAndWith.facet.da7 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.bound.d8a3c5.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.BitAndWith.impl.Op.23dbf6.2 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.a59d01.1: <specific function> = specific_function %T.binding.as_type.as.BitAndWith.impl.Op.23dbf6.2, @T.binding.as_type.as.BitAndWith.impl.Op.3(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %bound_method.a03ffd.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.a59d01.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.bound.d8a3c5.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.BitAndWith.impl.Op.23dbf6.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.a59d01.2: <specific function> = specific_function %T.binding.as_type.as.BitAndWith.impl.Op.23dbf6.1, @T.binding.as_type.as.BitAndWith.impl.Op.4(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %bound_method.a03ffd.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.a59d01.2 [concrete]
-// CHECK:STDOUT:   %BitOrWith.impl_witness.502: <witness> = impl_witness imports.%BitOrWith.impl_witness_table.54a, @T.binding.as_type.as.BitOrWith.impl.a9d(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.type.30a2d8.1: type = fn_type @T.binding.as_type.as.BitOrWith.impl.Op.4, @T.binding.as_type.as.BitOrWith.impl.a9d(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.c03bdc.1: %T.binding.as_type.as.BitOrWith.impl.Op.type.30a2d8.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.type.30a2d8.2: type = fn_type @T.binding.as_type.as.BitOrWith.impl.Op.3, @T.binding.as_type.as.BitOrWith.impl.a9d(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.c03bdc.2: %T.binding.as_type.as.BitOrWith.impl.Op.type.30a2d8.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %BitOrWith.facet.9bb: %BitOrWith.type.d59 = facet_value Core.IntLiteral, (%BitOrWith.impl_witness.502) [concrete]
-// CHECK:STDOUT:   %.82a: type = fn_type_with_self_type %BitOrWith.Op.type.c9c, %BitOrWith.facet.9bb [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.bound.df7ea0.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.BitOrWith.impl.Op.c03bdc.2 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.specific_fn.caa89a.1: <specific function> = specific_function %T.binding.as_type.as.BitOrWith.impl.Op.c03bdc.2, @T.binding.as_type.as.BitOrWith.impl.Op.3(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %bound_method.c36bb1.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.BitOrWith.impl.Op.specific_fn.caa89a.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.bound.df7ea0.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.BitOrWith.impl.Op.c03bdc.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.specific_fn.caa89a.2: <specific function> = specific_function %T.binding.as_type.as.BitOrWith.impl.Op.c03bdc.1, @T.binding.as_type.as.BitOrWith.impl.Op.4(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %bound_method.c36bb1.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.BitOrWith.impl.Op.specific_fn.caa89a.2 [concrete]
-// CHECK:STDOUT:   %BitXorWith.impl_witness.f51: <witness> = impl_witness imports.%BitXorWith.impl_witness_table.2f7, @T.binding.as_type.as.BitXorWith.impl.0e9(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.type.5acb01.1: type = fn_type @T.binding.as_type.as.BitXorWith.impl.Op.4, @T.binding.as_type.as.BitXorWith.impl.0e9(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.b5e49f.1: %T.binding.as_type.as.BitXorWith.impl.Op.type.5acb01.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.type.5acb01.2: type = fn_type @T.binding.as_type.as.BitXorWith.impl.Op.3, @T.binding.as_type.as.BitXorWith.impl.0e9(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.b5e49f.2: %T.binding.as_type.as.BitXorWith.impl.Op.type.5acb01.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %BitXorWith.facet.289: %BitXorWith.type.b7e = facet_value Core.IntLiteral, (%BitXorWith.impl_witness.f51) [concrete]
-// CHECK:STDOUT:   %.012: type = fn_type_with_self_type %BitXorWith.Op.type.1d5, %BitXorWith.facet.289 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.bound.01bd1e.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.BitXorWith.impl.Op.b5e49f.2 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.specific_fn.0f91c3.1: <specific function> = specific_function %T.binding.as_type.as.BitXorWith.impl.Op.b5e49f.2, @T.binding.as_type.as.BitXorWith.impl.Op.3(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %bound_method.55c9d3.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.BitXorWith.impl.Op.specific_fn.0f91c3.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.bound.01bd1e.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.BitXorWith.impl.Op.b5e49f.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.specific_fn.0f91c3.2: <specific function> = specific_function %T.binding.as_type.as.BitXorWith.impl.Op.b5e49f.1, @T.binding.as_type.as.BitXorWith.impl.Op.4(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %bound_method.55c9d3.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.BitXorWith.impl.Op.specific_fn.0f91c3.2 [concrete]
-// CHECK:STDOUT:   %LeftShiftWith.impl_witness.399: <witness> = impl_witness imports.%LeftShiftWith.impl_witness_table.6dc, @T.binding.as_type.as.LeftShiftWith.impl.b8c(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.type.407181.1: type = fn_type @T.binding.as_type.as.LeftShiftWith.impl.Op.4, @T.binding.as_type.as.LeftShiftWith.impl.b8c(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.e1a1d9.1: %T.binding.as_type.as.LeftShiftWith.impl.Op.type.407181.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.type.407181.2: type = fn_type @T.binding.as_type.as.LeftShiftWith.impl.Op.3, @T.binding.as_type.as.LeftShiftWith.impl.b8c(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.e1a1d9.2: %T.binding.as_type.as.LeftShiftWith.impl.Op.type.407181.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %LeftShiftWith.facet.8de: %LeftShiftWith.type.091 = facet_value Core.IntLiteral, (%LeftShiftWith.impl_witness.399) [concrete]
-// CHECK:STDOUT:   %.8cf: type = fn_type_with_self_type %LeftShiftWith.Op.type.5df, %LeftShiftWith.facet.8de [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.bound.481050.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.LeftShiftWith.impl.Op.e1a1d9.2 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.specific_fn.3f9028.1: <specific function> = specific_function %T.binding.as_type.as.LeftShiftWith.impl.Op.e1a1d9.2, @T.binding.as_type.as.LeftShiftWith.impl.Op.3(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %bound_method.9fc9b7.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.LeftShiftWith.impl.Op.specific_fn.3f9028.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.bound.481050.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.LeftShiftWith.impl.Op.e1a1d9.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.specific_fn.3f9028.2: <specific function> = specific_function %T.binding.as_type.as.LeftShiftWith.impl.Op.e1a1d9.1, @T.binding.as_type.as.LeftShiftWith.impl.Op.4(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %bound_method.9fc9b7.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.LeftShiftWith.impl.Op.specific_fn.3f9028.2 [concrete]
-// CHECK:STDOUT:   %RightShiftWith.impl_witness.464: <witness> = impl_witness imports.%RightShiftWith.impl_witness_table.6b8, @T.binding.as_type.as.RightShiftWith.impl.677(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.type.82e117.1: type = fn_type @T.binding.as_type.as.RightShiftWith.impl.Op.4, @T.binding.as_type.as.RightShiftWith.impl.677(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.88b7d8.1: %T.binding.as_type.as.RightShiftWith.impl.Op.type.82e117.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.type.82e117.2: type = fn_type @T.binding.as_type.as.RightShiftWith.impl.Op.3, @T.binding.as_type.as.RightShiftWith.impl.677(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.88b7d8.2: %T.binding.as_type.as.RightShiftWith.impl.Op.type.82e117.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %RightShiftWith.facet.e35: %RightShiftWith.type.382 = facet_value Core.IntLiteral, (%RightShiftWith.impl_witness.464) [concrete]
-// CHECK:STDOUT:   %.543: type = fn_type_with_self_type %RightShiftWith.Op.type.202, %RightShiftWith.facet.e35 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.bound.d5049d.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.RightShiftWith.impl.Op.88b7d8.2 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.specific_fn.3d7026.1: <specific function> = specific_function %T.binding.as_type.as.RightShiftWith.impl.Op.88b7d8.2, @T.binding.as_type.as.RightShiftWith.impl.Op.3(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %bound_method.dacc1a.1: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.RightShiftWith.impl.Op.specific_fn.3d7026.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.bound.d5049d.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.RightShiftWith.impl.Op.88b7d8.1 [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.specific_fn.3d7026.2: <specific function> = specific_function %T.binding.as_type.as.RightShiftWith.impl.Op.88b7d8.1, @T.binding.as_type.as.RightShiftWith.impl.Op.4(%ImplicitAs.facet.d52) [concrete]
-// CHECK:STDOUT:   %bound_method.dacc1a.2: <bound method> = bound_method %int_1.5b8, %T.binding.as_type.as.RightShiftWith.impl.Op.specific_fn.3d7026.2 [concrete]
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %Cpp: <namespace> = namespace file.%Cpp.import_cpp, [concrete] {
-// CHECK:STDOUT:     .long_long = constants.%Cpp.long_long
-// CHECK:STDOUT:     import Cpp//...
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %Core.import_ref.d64: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.aba = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness_table.896 = impl_witness_table (%Core.import_ref.d64), @Core.IntLiteral.as.ImplicitAs.impl.a26 [concrete]
-// CHECK:STDOUT:   %Core.import_ref.ce3a05.2 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.b80: @T.binding.as_type.as.BitAndWith.impl.972.%T.binding.as_type.as.BitAndWith.impl.Op.type.2 (%T.binding.as_type.as.BitAndWith.impl.Op.type.e1600b.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @T.binding.as_type.as.BitAndWith.impl.972.%T.binding.as_type.as.BitAndWith.impl.Op.2 (constants.%T.binding.as_type.as.BitAndWith.impl.Op.183211.1)]
-// CHECK:STDOUT:   %BitAndWith.impl_witness_table.1b6 = impl_witness_table (%Core.import_ref.ce3a05.2, %Core.import_ref.b80), @T.binding.as_type.as.BitAndWith.impl.972 [concrete]
-// CHECK:STDOUT:   %Core.Op.f87: @T.binding.as_type.as.BitAndWith.impl.972.%T.binding.as_type.as.BitAndWith.impl.Op.type.1 (%T.binding.as_type.as.BitAndWith.impl.Op.type.e1600b.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @T.binding.as_type.as.BitAndWith.impl.972.%T.binding.as_type.as.BitAndWith.impl.Op.1 (constants.%T.binding.as_type.as.BitAndWith.impl.Op.183211.2)]
-// CHECK:STDOUT:   %Core.import_ref.4f4: %i64.as.ImplicitAs.impl.Convert.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness_table.b19 = impl_witness_table (%Core.import_ref.4f4), @i64.as.ImplicitAs.impl [concrete]
-// CHECK:STDOUT:   %Core.import_ref.ce3a05.4 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.d80: @T.binding.as_type.as.BitOrWith.impl.a9d.%T.binding.as_type.as.BitOrWith.impl.Op.type.2 (%T.binding.as_type.as.BitOrWith.impl.Op.type.aeba4a.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @T.binding.as_type.as.BitOrWith.impl.a9d.%T.binding.as_type.as.BitOrWith.impl.Op.2 (constants.%T.binding.as_type.as.BitOrWith.impl.Op.bafb09.1)]
-// CHECK:STDOUT:   %BitOrWith.impl_witness_table.54a = impl_witness_table (%Core.import_ref.ce3a05.4, %Core.import_ref.d80), @T.binding.as_type.as.BitOrWith.impl.a9d [concrete]
-// CHECK:STDOUT:   %Core.Op.eb3: @T.binding.as_type.as.BitOrWith.impl.a9d.%T.binding.as_type.as.BitOrWith.impl.Op.type.1 (%T.binding.as_type.as.BitOrWith.impl.Op.type.aeba4a.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @T.binding.as_type.as.BitOrWith.impl.a9d.%T.binding.as_type.as.BitOrWith.impl.Op.1 (constants.%T.binding.as_type.as.BitOrWith.impl.Op.bafb09.2)]
-// CHECK:STDOUT:   %Core.import_ref.ce3a05.6 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.720: @T.binding.as_type.as.BitXorWith.impl.0e9.%T.binding.as_type.as.BitXorWith.impl.Op.type.2 (%T.binding.as_type.as.BitXorWith.impl.Op.type.ac630d.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @T.binding.as_type.as.BitXorWith.impl.0e9.%T.binding.as_type.as.BitXorWith.impl.Op.2 (constants.%T.binding.as_type.as.BitXorWith.impl.Op.ffb1c4.1)]
-// CHECK:STDOUT:   %BitXorWith.impl_witness_table.2f7 = impl_witness_table (%Core.import_ref.ce3a05.6, %Core.import_ref.720), @T.binding.as_type.as.BitXorWith.impl.0e9 [concrete]
-// CHECK:STDOUT:   %Core.Op.06a: @T.binding.as_type.as.BitXorWith.impl.0e9.%T.binding.as_type.as.BitXorWith.impl.Op.type.1 (%T.binding.as_type.as.BitXorWith.impl.Op.type.ac630d.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @T.binding.as_type.as.BitXorWith.impl.0e9.%T.binding.as_type.as.BitXorWith.impl.Op.1 (constants.%T.binding.as_type.as.BitXorWith.impl.Op.ffb1c4.2)]
-// CHECK:STDOUT:   %Core.import_ref.ce3a05.8 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.cd3: @T.binding.as_type.as.LeftShiftWith.impl.b8c.%T.binding.as_type.as.LeftShiftWith.impl.Op.type.2 (%T.binding.as_type.as.LeftShiftWith.impl.Op.type.3ecd57.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @T.binding.as_type.as.LeftShiftWith.impl.b8c.%T.binding.as_type.as.LeftShiftWith.impl.Op.2 (constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.3ee0c1.1)]
-// CHECK:STDOUT:   %LeftShiftWith.impl_witness_table.6dc = impl_witness_table (%Core.import_ref.ce3a05.8, %Core.import_ref.cd3), @T.binding.as_type.as.LeftShiftWith.impl.b8c [concrete]
-// CHECK:STDOUT:   %Core.Op.0db: @T.binding.as_type.as.LeftShiftWith.impl.b8c.%T.binding.as_type.as.LeftShiftWith.impl.Op.type.1 (%T.binding.as_type.as.LeftShiftWith.impl.Op.type.3ecd57.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @T.binding.as_type.as.LeftShiftWith.impl.b8c.%T.binding.as_type.as.LeftShiftWith.impl.Op.1 (constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.3ee0c1.2)]
-// CHECK:STDOUT:   %Core.import_ref.ce3a05.10 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.64d: @T.binding.as_type.as.RightShiftWith.impl.677.%T.binding.as_type.as.RightShiftWith.impl.Op.type.2 (%T.binding.as_type.as.RightShiftWith.impl.Op.type.e5d568.1) = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [symbolic = @T.binding.as_type.as.RightShiftWith.impl.677.%T.binding.as_type.as.RightShiftWith.impl.Op.2 (constants.%T.binding.as_type.as.RightShiftWith.impl.Op.e94511.1)]
-// CHECK:STDOUT:   %RightShiftWith.impl_witness_table.6b8 = impl_witness_table (%Core.import_ref.ce3a05.10, %Core.import_ref.64d), @T.binding.as_type.as.RightShiftWith.impl.677 [concrete]
-// CHECK:STDOUT:   %Core.Op.db5: @T.binding.as_type.as.RightShiftWith.impl.677.%T.binding.as_type.as.RightShiftWith.impl.Op.type.1 (%T.binding.as_type.as.RightShiftWith.impl.Op.type.e5d568.2) = import_ref Core//prelude/types/cpp/int, Op, loaded [symbolic = @T.binding.as_type.as.RightShiftWith.impl.677.%T.binding.as_type.as.RightShiftWith.impl.Op.1 (constants.%T.binding.as_type.as.RightShiftWith.impl.Op.e94511.2)]
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: fn @BitWiseHeterogeneousLongLongRightSide() {
-// CHECK:STDOUT: !entry:
-// CHECK:STDOUT:   <elided>
-// CHECK:STDOUT:   name_binding_decl {
-// CHECK:STDOUT:     %a.patt: %pattern_type.76e = value_binding_pattern a [concrete]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %int_1.loc11: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %.loc11_13: type = splice_block %long_long.ref [concrete = constants.%Cpp.long_long] {
-// CHECK:STDOUT:     %Cpp.ref: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
-// CHECK:STDOUT:     %long_long.ref: type = name_ref long_long, constants.%Cpp.long_long [concrete = constants.%Cpp.long_long]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %impl.elem0.loc11: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %bound_method.loc11: <bound method> = bound_method %int_1.loc11, %impl.elem0.loc11 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc11: init %Cpp.long_long = call %bound_method.loc11(%int_1.loc11) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc11_26.1: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc11 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc11_26.2: %Cpp.long_long = converted %int_1.loc11, %.loc11_26.1 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %a: %Cpp.long_long = value_binding a, %.loc11_26.2
-// CHECK:STDOUT:   %AssertSameType.ref.loc13: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %b.ref.loc13: %i64 = name_ref b, %b
-// CHECK:STDOUT:   %a.ref.loc13_22: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %impl.elem1.loc13: %.14d = impl_witness_access constants.%BitAndWith.impl_witness.668, element1 [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.77d50f.2]
-// CHECK:STDOUT:   %bound_method.loc13_20.1: <bound method> = bound_method %b.ref.loc13, %impl.elem1.loc13
-// CHECK:STDOUT:   %specific_fn.loc13: <specific function> = specific_function %impl.elem1.loc13, @T.binding.as_type.as.BitAndWith.impl.Op.3(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.16125d.1]
-// CHECK:STDOUT:   %bound_method.loc13_20.2: <bound method> = bound_method %b.ref.loc13, %specific_fn.loc13
-// CHECK:STDOUT:   %.loc13_20.1: %T.binding.as_type.as.BitAndWith.impl.Op.type.d0d4e3.1 = specific_constant imports.%Core.Op.f87, @T.binding.as_type.as.BitAndWith.impl.972(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.77d50f.1]
-// CHECK:STDOUT:   %Op.ref.loc13: %T.binding.as_type.as.BitAndWith.impl.Op.type.d0d4e3.1 = name_ref Op, %.loc13_20.1 [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.77d50f.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.bound.loc13: <bound method> = bound_method %b.ref.loc13, %Op.ref.loc13
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.loc13: <specific function> = specific_function %Op.ref.loc13, @T.binding.as_type.as.BitAndWith.impl.Op.4(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.16125d.2]
-// CHECK:STDOUT:   %bound_method.loc13_20.3: <bound method> = bound_method %b.ref.loc13, %T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.loc13
-// CHECK:STDOUT:   %impl.elem0.loc13: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc13_18: <bound method> = bound_method %b.ref.loc13, %impl.elem0.loc13
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc13: init %Cpp.long_long = call %bound_method.loc13_18(%b.ref.loc13)
-// CHECK:STDOUT:   %.loc13_18.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc13
-// CHECK:STDOUT:   %.loc13_18.2: %Cpp.long_long = converted %b.ref.loc13, %.loc13_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.call.loc13: init %Cpp.long_long = call %bound_method.loc13_20.3(%.loc13_18.2, %a.ref.loc13_22)
-// CHECK:STDOUT:   %a.ref.loc13_25: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc13: <specific function> = specific_function %AssertSameType.ref.loc13, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc13_20.2: %Cpp.long_long = value_of_initializer %T.binding.as_type.as.BitAndWith.impl.Op.call.loc13
-// CHECK:STDOUT:   %.loc13_20.3: %Cpp.long_long = converted %T.binding.as_type.as.BitAndWith.impl.Op.call.loc13, %.loc13_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc13: init %empty_tuple.type = call %AssertSameType.specific_fn.loc13(%.loc13_20.3, %a.ref.loc13_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc14: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %b.ref.loc14: %i64 = name_ref b, %b
-// CHECK:STDOUT:   %a.ref.loc14_22: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %impl.elem1.loc14: %.a4a = impl_witness_access constants.%BitOrWith.impl_witness.771, element1 [concrete = constants.%T.binding.as_type.as.BitOrWith.impl.Op.9b8362.2]
-// CHECK:STDOUT:   %bound_method.loc14_20.1: <bound method> = bound_method %b.ref.loc14, %impl.elem1.loc14
-// CHECK:STDOUT:   %specific_fn.loc14: <specific function> = specific_function %impl.elem1.loc14, @T.binding.as_type.as.BitOrWith.impl.Op.3(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.BitOrWith.impl.Op.specific_fn.bd6228.1]
-// CHECK:STDOUT:   %bound_method.loc14_20.2: <bound method> = bound_method %b.ref.loc14, %specific_fn.loc14
-// CHECK:STDOUT:   %.loc14_20.1: %T.binding.as_type.as.BitOrWith.impl.Op.type.2c510c.1 = specific_constant imports.%Core.Op.eb3, @T.binding.as_type.as.BitOrWith.impl.a9d(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.BitOrWith.impl.Op.9b8362.1]
-// CHECK:STDOUT:   %Op.ref.loc14: %T.binding.as_type.as.BitOrWith.impl.Op.type.2c510c.1 = name_ref Op, %.loc14_20.1 [concrete = constants.%T.binding.as_type.as.BitOrWith.impl.Op.9b8362.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.bound.loc14: <bound method> = bound_method %b.ref.loc14, %Op.ref.loc14
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.specific_fn.loc14: <specific function> = specific_function %Op.ref.loc14, @T.binding.as_type.as.BitOrWith.impl.Op.4(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.BitOrWith.impl.Op.specific_fn.bd6228.2]
-// CHECK:STDOUT:   %bound_method.loc14_20.3: <bound method> = bound_method %b.ref.loc14, %T.binding.as_type.as.BitOrWith.impl.Op.specific_fn.loc14
-// CHECK:STDOUT:   %impl.elem0.loc14: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc14_18: <bound method> = bound_method %b.ref.loc14, %impl.elem0.loc14
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc14: init %Cpp.long_long = call %bound_method.loc14_18(%b.ref.loc14)
-// CHECK:STDOUT:   %.loc14_18.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc14
-// CHECK:STDOUT:   %.loc14_18.2: %Cpp.long_long = converted %b.ref.loc14, %.loc14_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.call.loc14: init %Cpp.long_long = call %bound_method.loc14_20.3(%.loc14_18.2, %a.ref.loc14_22)
-// CHECK:STDOUT:   %a.ref.loc14_25: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc14: <specific function> = specific_function %AssertSameType.ref.loc14, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc14_20.2: %Cpp.long_long = value_of_initializer %T.binding.as_type.as.BitOrWith.impl.Op.call.loc14
-// CHECK:STDOUT:   %.loc14_20.3: %Cpp.long_long = converted %T.binding.as_type.as.BitOrWith.impl.Op.call.loc14, %.loc14_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc14: init %empty_tuple.type = call %AssertSameType.specific_fn.loc14(%.loc14_20.3, %a.ref.loc14_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc15: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %b.ref.loc15: %i64 = name_ref b, %b
-// CHECK:STDOUT:   %a.ref.loc15_22: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %impl.elem1.loc15: %.f37 = impl_witness_access constants.%BitXorWith.impl_witness.28f, element1 [concrete = constants.%T.binding.as_type.as.BitXorWith.impl.Op.f03227.2]
-// CHECK:STDOUT:   %bound_method.loc15_20.1: <bound method> = bound_method %b.ref.loc15, %impl.elem1.loc15
-// CHECK:STDOUT:   %specific_fn.loc15: <specific function> = specific_function %impl.elem1.loc15, @T.binding.as_type.as.BitXorWith.impl.Op.3(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.BitXorWith.impl.Op.specific_fn.bae3fa.1]
-// CHECK:STDOUT:   %bound_method.loc15_20.2: <bound method> = bound_method %b.ref.loc15, %specific_fn.loc15
-// CHECK:STDOUT:   %.loc15_20.1: %T.binding.as_type.as.BitXorWith.impl.Op.type.02ef16.1 = specific_constant imports.%Core.Op.06a, @T.binding.as_type.as.BitXorWith.impl.0e9(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.BitXorWith.impl.Op.f03227.1]
-// CHECK:STDOUT:   %Op.ref.loc15: %T.binding.as_type.as.BitXorWith.impl.Op.type.02ef16.1 = name_ref Op, %.loc15_20.1 [concrete = constants.%T.binding.as_type.as.BitXorWith.impl.Op.f03227.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.bound.loc15: <bound method> = bound_method %b.ref.loc15, %Op.ref.loc15
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.specific_fn.loc15: <specific function> = specific_function %Op.ref.loc15, @T.binding.as_type.as.BitXorWith.impl.Op.4(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.BitXorWith.impl.Op.specific_fn.bae3fa.2]
-// CHECK:STDOUT:   %bound_method.loc15_20.3: <bound method> = bound_method %b.ref.loc15, %T.binding.as_type.as.BitXorWith.impl.Op.specific_fn.loc15
-// CHECK:STDOUT:   %impl.elem0.loc15: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc15_18: <bound method> = bound_method %b.ref.loc15, %impl.elem0.loc15
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc15: init %Cpp.long_long = call %bound_method.loc15_18(%b.ref.loc15)
-// CHECK:STDOUT:   %.loc15_18.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc15
-// CHECK:STDOUT:   %.loc15_18.2: %Cpp.long_long = converted %b.ref.loc15, %.loc15_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.call.loc15: init %Cpp.long_long = call %bound_method.loc15_20.3(%.loc15_18.2, %a.ref.loc15_22)
-// CHECK:STDOUT:   %a.ref.loc15_25: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc15: <specific function> = specific_function %AssertSameType.ref.loc15, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc15_20.2: %Cpp.long_long = value_of_initializer %T.binding.as_type.as.BitXorWith.impl.Op.call.loc15
-// CHECK:STDOUT:   %.loc15_20.3: %Cpp.long_long = converted %T.binding.as_type.as.BitXorWith.impl.Op.call.loc15, %.loc15_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc15: init %empty_tuple.type = call %AssertSameType.specific_fn.loc15(%.loc15_20.3, %a.ref.loc15_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc16: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %b.ref.loc16: %i64 = name_ref b, %b
-// CHECK:STDOUT:   %a.ref.loc16_23: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %impl.elem1.loc16: %.3c0 = impl_witness_access constants.%LeftShiftWith.impl_witness.95c, element1 [concrete = constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.300e5a.2]
-// CHECK:STDOUT:   %bound_method.loc16_20.1: <bound method> = bound_method %b.ref.loc16, %impl.elem1.loc16
-// CHECK:STDOUT:   %specific_fn.loc16: <specific function> = specific_function %impl.elem1.loc16, @T.binding.as_type.as.LeftShiftWith.impl.Op.3(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.specific_fn.c7ed9a.1]
-// CHECK:STDOUT:   %bound_method.loc16_20.2: <bound method> = bound_method %b.ref.loc16, %specific_fn.loc16
-// CHECK:STDOUT:   %.loc16_20.1: %T.binding.as_type.as.LeftShiftWith.impl.Op.type.c82b93.1 = specific_constant imports.%Core.Op.0db, @T.binding.as_type.as.LeftShiftWith.impl.b8c(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.300e5a.1]
-// CHECK:STDOUT:   %Op.ref.loc16: %T.binding.as_type.as.LeftShiftWith.impl.Op.type.c82b93.1 = name_ref Op, %.loc16_20.1 [concrete = constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.300e5a.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.bound.loc16: <bound method> = bound_method %b.ref.loc16, %Op.ref.loc16
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.specific_fn.loc16: <specific function> = specific_function %Op.ref.loc16, @T.binding.as_type.as.LeftShiftWith.impl.Op.4(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.specific_fn.c7ed9a.2]
-// CHECK:STDOUT:   %bound_method.loc16_20.3: <bound method> = bound_method %b.ref.loc16, %T.binding.as_type.as.LeftShiftWith.impl.Op.specific_fn.loc16
-// CHECK:STDOUT:   %impl.elem0.loc16: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc16_18: <bound method> = bound_method %b.ref.loc16, %impl.elem0.loc16
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc16: init %Cpp.long_long = call %bound_method.loc16_18(%b.ref.loc16)
-// CHECK:STDOUT:   %.loc16_18.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc16
-// CHECK:STDOUT:   %.loc16_18.2: %Cpp.long_long = converted %b.ref.loc16, %.loc16_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.call.loc16: init %Cpp.long_long = call %bound_method.loc16_20.3(%.loc16_18.2, %a.ref.loc16_23)
-// CHECK:STDOUT:   %a.ref.loc16_26: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc16: <specific function> = specific_function %AssertSameType.ref.loc16, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc16_20.2: %Cpp.long_long = value_of_initializer %T.binding.as_type.as.LeftShiftWith.impl.Op.call.loc16
-// CHECK:STDOUT:   %.loc16_20.3: %Cpp.long_long = converted %T.binding.as_type.as.LeftShiftWith.impl.Op.call.loc16, %.loc16_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc16: init %empty_tuple.type = call %AssertSameType.specific_fn.loc16(%.loc16_20.3, %a.ref.loc16_26)
-// CHECK:STDOUT:   %AssertSameType.ref.loc17: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %b.ref.loc17: %i64 = name_ref b, %b
-// CHECK:STDOUT:   %a.ref.loc17_23: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %impl.elem1.loc17: %.c72 = impl_witness_access constants.%RightShiftWith.impl_witness.015, element1 [concrete = constants.%T.binding.as_type.as.RightShiftWith.impl.Op.513286.2]
-// CHECK:STDOUT:   %bound_method.loc17_20.1: <bound method> = bound_method %b.ref.loc17, %impl.elem1.loc17
-// CHECK:STDOUT:   %specific_fn.loc17: <specific function> = specific_function %impl.elem1.loc17, @T.binding.as_type.as.RightShiftWith.impl.Op.3(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.RightShiftWith.impl.Op.specific_fn.7142b6.1]
-// CHECK:STDOUT:   %bound_method.loc17_20.2: <bound method> = bound_method %b.ref.loc17, %specific_fn.loc17
-// CHECK:STDOUT:   %.loc17_20.1: %T.binding.as_type.as.RightShiftWith.impl.Op.type.ff07c1.1 = specific_constant imports.%Core.Op.db5, @T.binding.as_type.as.RightShiftWith.impl.677(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.RightShiftWith.impl.Op.513286.1]
-// CHECK:STDOUT:   %Op.ref.loc17: %T.binding.as_type.as.RightShiftWith.impl.Op.type.ff07c1.1 = name_ref Op, %.loc17_20.1 [concrete = constants.%T.binding.as_type.as.RightShiftWith.impl.Op.513286.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.bound.loc17: <bound method> = bound_method %b.ref.loc17, %Op.ref.loc17
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.specific_fn.loc17: <specific function> = specific_function %Op.ref.loc17, @T.binding.as_type.as.RightShiftWith.impl.Op.4(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.RightShiftWith.impl.Op.specific_fn.7142b6.2]
-// CHECK:STDOUT:   %bound_method.loc17_20.3: <bound method> = bound_method %b.ref.loc17, %T.binding.as_type.as.RightShiftWith.impl.Op.specific_fn.loc17
-// CHECK:STDOUT:   %impl.elem0.loc17: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc17_18: <bound method> = bound_method %b.ref.loc17, %impl.elem0.loc17
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc17: init %Cpp.long_long = call %bound_method.loc17_18(%b.ref.loc17)
-// CHECK:STDOUT:   %.loc17_18.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc17
-// CHECK:STDOUT:   %.loc17_18.2: %Cpp.long_long = converted %b.ref.loc17, %.loc17_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.call.loc17: init %Cpp.long_long = call %bound_method.loc17_20.3(%.loc17_18.2, %a.ref.loc17_23)
-// CHECK:STDOUT:   %a.ref.loc17_26: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc17: <specific function> = specific_function %AssertSameType.ref.loc17, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc17_20.2: %Cpp.long_long = value_of_initializer %T.binding.as_type.as.RightShiftWith.impl.Op.call.loc17
-// CHECK:STDOUT:   %.loc17_20.3: %Cpp.long_long = converted %T.binding.as_type.as.RightShiftWith.impl.Op.call.loc17, %.loc17_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc17: init %empty_tuple.type = call %AssertSameType.specific_fn.loc17(%.loc17_20.3, %a.ref.loc17_26)
-// CHECK:STDOUT:   %AssertSameType.ref.loc19: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %int_1.loc19: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %a.ref.loc19_22: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %impl.elem1.loc19: %.47c = impl_witness_access constants.%BitAndWith.impl_witness.d64, element1 [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.23dbf6.2]
-// CHECK:STDOUT:   %bound_method.loc19_20.1: <bound method> = bound_method %int_1.loc19, %impl.elem1.loc19 [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.bound.d8a3c5.1]
-// CHECK:STDOUT:   %specific_fn.loc19: <specific function> = specific_function %impl.elem1.loc19, @T.binding.as_type.as.BitAndWith.impl.Op.3(constants.%ImplicitAs.facet.d52) [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.a59d01.1]
-// CHECK:STDOUT:   %bound_method.loc19_20.2: <bound method> = bound_method %int_1.loc19, %specific_fn.loc19 [concrete = constants.%bound_method.a03ffd.1]
-// CHECK:STDOUT:   %.loc19_20.1: %T.binding.as_type.as.BitAndWith.impl.Op.type.41163c.1 = specific_constant imports.%Core.Op.f87, @T.binding.as_type.as.BitAndWith.impl.972(constants.%ImplicitAs.facet.d52) [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.23dbf6.1]
-// CHECK:STDOUT:   %Op.ref.loc19: %T.binding.as_type.as.BitAndWith.impl.Op.type.41163c.1 = name_ref Op, %.loc19_20.1 [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.23dbf6.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.bound.loc19: <bound method> = bound_method %int_1.loc19, %Op.ref.loc19 [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.bound.d8a3c5.2]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.loc19: <specific function> = specific_function %Op.ref.loc19, @T.binding.as_type.as.BitAndWith.impl.Op.4(constants.%ImplicitAs.facet.d52) [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.a59d01.2]
-// CHECK:STDOUT:   %bound_method.loc19_20.3: <bound method> = bound_method %int_1.loc19, %T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.loc19 [concrete = constants.%bound_method.a03ffd.2]
-// CHECK:STDOUT:   %impl.elem0.loc19: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %bound_method.loc19_18: <bound method> = bound_method %int_1.loc19, %impl.elem0.loc19 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19: init %Cpp.long_long = call %bound_method.loc19_18(%int_1.loc19) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc19_18.1: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc19 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc19_18.2: %Cpp.long_long = converted %int_1.loc19, %.loc19_18.1 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.call.loc19: init %Cpp.long_long = call %bound_method.loc19_20.3(%.loc19_18.2, %a.ref.loc19_22)
-// CHECK:STDOUT:   %a.ref.loc19_25: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc19: <specific function> = specific_function %AssertSameType.ref.loc19, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc19_20.2: %Cpp.long_long = value_of_initializer %T.binding.as_type.as.BitAndWith.impl.Op.call.loc19
-// CHECK:STDOUT:   %.loc19_20.3: %Cpp.long_long = converted %T.binding.as_type.as.BitAndWith.impl.Op.call.loc19, %.loc19_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc19: init %empty_tuple.type = call %AssertSameType.specific_fn.loc19(%.loc19_20.3, %a.ref.loc19_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc20: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %int_1.loc20: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %a.ref.loc20_22: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %impl.elem1.loc20: %.82a = impl_witness_access constants.%BitOrWith.impl_witness.502, element1 [concrete = constants.%T.binding.as_type.as.BitOrWith.impl.Op.c03bdc.2]
-// CHECK:STDOUT:   %bound_method.loc20_20.1: <bound method> = bound_method %int_1.loc20, %impl.elem1.loc20 [concrete = constants.%T.binding.as_type.as.BitOrWith.impl.Op.bound.df7ea0.1]
-// CHECK:STDOUT:   %specific_fn.loc20: <specific function> = specific_function %impl.elem1.loc20, @T.binding.as_type.as.BitOrWith.impl.Op.3(constants.%ImplicitAs.facet.d52) [concrete = constants.%T.binding.as_type.as.BitOrWith.impl.Op.specific_fn.caa89a.1]
-// CHECK:STDOUT:   %bound_method.loc20_20.2: <bound method> = bound_method %int_1.loc20, %specific_fn.loc20 [concrete = constants.%bound_method.c36bb1.1]
-// CHECK:STDOUT:   %.loc20_20.1: %T.binding.as_type.as.BitOrWith.impl.Op.type.30a2d8.1 = specific_constant imports.%Core.Op.eb3, @T.binding.as_type.as.BitOrWith.impl.a9d(constants.%ImplicitAs.facet.d52) [concrete = constants.%T.binding.as_type.as.BitOrWith.impl.Op.c03bdc.1]
-// CHECK:STDOUT:   %Op.ref.loc20: %T.binding.as_type.as.BitOrWith.impl.Op.type.30a2d8.1 = name_ref Op, %.loc20_20.1 [concrete = constants.%T.binding.as_type.as.BitOrWith.impl.Op.c03bdc.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.bound.loc20: <bound method> = bound_method %int_1.loc20, %Op.ref.loc20 [concrete = constants.%T.binding.as_type.as.BitOrWith.impl.Op.bound.df7ea0.2]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.specific_fn.loc20: <specific function> = specific_function %Op.ref.loc20, @T.binding.as_type.as.BitOrWith.impl.Op.4(constants.%ImplicitAs.facet.d52) [concrete = constants.%T.binding.as_type.as.BitOrWith.impl.Op.specific_fn.caa89a.2]
-// CHECK:STDOUT:   %bound_method.loc20_20.3: <bound method> = bound_method %int_1.loc20, %T.binding.as_type.as.BitOrWith.impl.Op.specific_fn.loc20 [concrete = constants.%bound_method.c36bb1.2]
-// CHECK:STDOUT:   %impl.elem0.loc20: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %bound_method.loc20_18: <bound method> = bound_method %int_1.loc20, %impl.elem0.loc20 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20: init %Cpp.long_long = call %bound_method.loc20_18(%int_1.loc20) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc20_18.1: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc20 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc20_18.2: %Cpp.long_long = converted %int_1.loc20, %.loc20_18.1 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.call.loc20: init %Cpp.long_long = call %bound_method.loc20_20.3(%.loc20_18.2, %a.ref.loc20_22)
-// CHECK:STDOUT:   %a.ref.loc20_25: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc20: <specific function> = specific_function %AssertSameType.ref.loc20, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc20_20.2: %Cpp.long_long = value_of_initializer %T.binding.as_type.as.BitOrWith.impl.Op.call.loc20
-// CHECK:STDOUT:   %.loc20_20.3: %Cpp.long_long = converted %T.binding.as_type.as.BitOrWith.impl.Op.call.loc20, %.loc20_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc20: init %empty_tuple.type = call %AssertSameType.specific_fn.loc20(%.loc20_20.3, %a.ref.loc20_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc21: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %int_1.loc21: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %a.ref.loc21_22: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %impl.elem1.loc21: %.012 = impl_witness_access constants.%BitXorWith.impl_witness.f51, element1 [concrete = constants.%T.binding.as_type.as.BitXorWith.impl.Op.b5e49f.2]
-// CHECK:STDOUT:   %bound_method.loc21_20.1: <bound method> = bound_method %int_1.loc21, %impl.elem1.loc21 [concrete = constants.%T.binding.as_type.as.BitXorWith.impl.Op.bound.01bd1e.1]
-// CHECK:STDOUT:   %specific_fn.loc21: <specific function> = specific_function %impl.elem1.loc21, @T.binding.as_type.as.BitXorWith.impl.Op.3(constants.%ImplicitAs.facet.d52) [concrete = constants.%T.binding.as_type.as.BitXorWith.impl.Op.specific_fn.0f91c3.1]
-// CHECK:STDOUT:   %bound_method.loc21_20.2: <bound method> = bound_method %int_1.loc21, %specific_fn.loc21 [concrete = constants.%bound_method.55c9d3.1]
-// CHECK:STDOUT:   %.loc21_20.1: %T.binding.as_type.as.BitXorWith.impl.Op.type.5acb01.1 = specific_constant imports.%Core.Op.06a, @T.binding.as_type.as.BitXorWith.impl.0e9(constants.%ImplicitAs.facet.d52) [concrete = constants.%T.binding.as_type.as.BitXorWith.impl.Op.b5e49f.1]
-// CHECK:STDOUT:   %Op.ref.loc21: %T.binding.as_type.as.BitXorWith.impl.Op.type.5acb01.1 = name_ref Op, %.loc21_20.1 [concrete = constants.%T.binding.as_type.as.BitXorWith.impl.Op.b5e49f.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.bound.loc21: <bound method> = bound_method %int_1.loc21, %Op.ref.loc21 [concrete = constants.%T.binding.as_type.as.BitXorWith.impl.Op.bound.01bd1e.2]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.specific_fn.loc21: <specific function> = specific_function %Op.ref.loc21, @T.binding.as_type.as.BitXorWith.impl.Op.4(constants.%ImplicitAs.facet.d52) [concrete = constants.%T.binding.as_type.as.BitXorWith.impl.Op.specific_fn.0f91c3.2]
-// CHECK:STDOUT:   %bound_method.loc21_20.3: <bound method> = bound_method %int_1.loc21, %T.binding.as_type.as.BitXorWith.impl.Op.specific_fn.loc21 [concrete = constants.%bound_method.55c9d3.2]
-// CHECK:STDOUT:   %impl.elem0.loc21: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %bound_method.loc21_18: <bound method> = bound_method %int_1.loc21, %impl.elem0.loc21 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21: init %Cpp.long_long = call %bound_method.loc21_18(%int_1.loc21) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc21_18.1: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc21 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc21_18.2: %Cpp.long_long = converted %int_1.loc21, %.loc21_18.1 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.call.loc21: init %Cpp.long_long = call %bound_method.loc21_20.3(%.loc21_18.2, %a.ref.loc21_22)
-// CHECK:STDOUT:   %a.ref.loc21_25: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc21: <specific function> = specific_function %AssertSameType.ref.loc21, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc21_20.2: %Cpp.long_long = value_of_initializer %T.binding.as_type.as.BitXorWith.impl.Op.call.loc21
-// CHECK:STDOUT:   %.loc21_20.3: %Cpp.long_long = converted %T.binding.as_type.as.BitXorWith.impl.Op.call.loc21, %.loc21_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc21: init %empty_tuple.type = call %AssertSameType.specific_fn.loc21(%.loc21_20.3, %a.ref.loc21_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc22: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %int_1.loc22: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %a.ref.loc22_23: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %impl.elem1.loc22: %.8cf = impl_witness_access constants.%LeftShiftWith.impl_witness.399, element1 [concrete = constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.e1a1d9.2]
-// CHECK:STDOUT:   %bound_method.loc22_20.1: <bound method> = bound_method %int_1.loc22, %impl.elem1.loc22 [concrete = constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.bound.481050.1]
-// CHECK:STDOUT:   %specific_fn.loc22: <specific function> = specific_function %impl.elem1.loc22, @T.binding.as_type.as.LeftShiftWith.impl.Op.3(constants.%ImplicitAs.facet.d52) [concrete = constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.specific_fn.3f9028.1]
-// CHECK:STDOUT:   %bound_method.loc22_20.2: <bound method> = bound_method %int_1.loc22, %specific_fn.loc22 [concrete = constants.%bound_method.9fc9b7.1]
-// CHECK:STDOUT:   %.loc22_20.1: %T.binding.as_type.as.LeftShiftWith.impl.Op.type.407181.1 = specific_constant imports.%Core.Op.0db, @T.binding.as_type.as.LeftShiftWith.impl.b8c(constants.%ImplicitAs.facet.d52) [concrete = constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.e1a1d9.1]
-// CHECK:STDOUT:   %Op.ref.loc22: %T.binding.as_type.as.LeftShiftWith.impl.Op.type.407181.1 = name_ref Op, %.loc22_20.1 [concrete = constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.e1a1d9.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.bound.loc22: <bound method> = bound_method %int_1.loc22, %Op.ref.loc22 [concrete = constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.bound.481050.2]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.specific_fn.loc22: <specific function> = specific_function %Op.ref.loc22, @T.binding.as_type.as.LeftShiftWith.impl.Op.4(constants.%ImplicitAs.facet.d52) [concrete = constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.specific_fn.3f9028.2]
-// CHECK:STDOUT:   %bound_method.loc22_20.3: <bound method> = bound_method %int_1.loc22, %T.binding.as_type.as.LeftShiftWith.impl.Op.specific_fn.loc22 [concrete = constants.%bound_method.9fc9b7.2]
-// CHECK:STDOUT:   %impl.elem0.loc22: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %bound_method.loc22_18: <bound method> = bound_method %int_1.loc22, %impl.elem0.loc22 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22: init %Cpp.long_long = call %bound_method.loc22_18(%int_1.loc22) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc22_18.1: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc22 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc22_18.2: %Cpp.long_long = converted %int_1.loc22, %.loc22_18.1 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.call.loc22: init %Cpp.long_long = call %bound_method.loc22_20.3(%.loc22_18.2, %a.ref.loc22_23)
-// CHECK:STDOUT:   %a.ref.loc22_26: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc22: <specific function> = specific_function %AssertSameType.ref.loc22, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc22_20.2: %Cpp.long_long = value_of_initializer %T.binding.as_type.as.LeftShiftWith.impl.Op.call.loc22
-// CHECK:STDOUT:   %.loc22_20.3: %Cpp.long_long = converted %T.binding.as_type.as.LeftShiftWith.impl.Op.call.loc22, %.loc22_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc22: init %empty_tuple.type = call %AssertSameType.specific_fn.loc22(%.loc22_20.3, %a.ref.loc22_26)
-// CHECK:STDOUT:   %AssertSameType.ref.loc23: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %int_1.loc23: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %a.ref.loc23_23: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %impl.elem1.loc23: %.543 = impl_witness_access constants.%RightShiftWith.impl_witness.464, element1 [concrete = constants.%T.binding.as_type.as.RightShiftWith.impl.Op.88b7d8.2]
-// CHECK:STDOUT:   %bound_method.loc23_20.1: <bound method> = bound_method %int_1.loc23, %impl.elem1.loc23 [concrete = constants.%T.binding.as_type.as.RightShiftWith.impl.Op.bound.d5049d.1]
-// CHECK:STDOUT:   %specific_fn.loc23: <specific function> = specific_function %impl.elem1.loc23, @T.binding.as_type.as.RightShiftWith.impl.Op.3(constants.%ImplicitAs.facet.d52) [concrete = constants.%T.binding.as_type.as.RightShiftWith.impl.Op.specific_fn.3d7026.1]
-// CHECK:STDOUT:   %bound_method.loc23_20.2: <bound method> = bound_method %int_1.loc23, %specific_fn.loc23 [concrete = constants.%bound_method.dacc1a.1]
-// CHECK:STDOUT:   %.loc23_20.1: %T.binding.as_type.as.RightShiftWith.impl.Op.type.82e117.1 = specific_constant imports.%Core.Op.db5, @T.binding.as_type.as.RightShiftWith.impl.677(constants.%ImplicitAs.facet.d52) [concrete = constants.%T.binding.as_type.as.RightShiftWith.impl.Op.88b7d8.1]
-// CHECK:STDOUT:   %Op.ref.loc23: %T.binding.as_type.as.RightShiftWith.impl.Op.type.82e117.1 = name_ref Op, %.loc23_20.1 [concrete = constants.%T.binding.as_type.as.RightShiftWith.impl.Op.88b7d8.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.bound.loc23: <bound method> = bound_method %int_1.loc23, %Op.ref.loc23 [concrete = constants.%T.binding.as_type.as.RightShiftWith.impl.Op.bound.d5049d.2]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.specific_fn.loc23: <specific function> = specific_function %Op.ref.loc23, @T.binding.as_type.as.RightShiftWith.impl.Op.4(constants.%ImplicitAs.facet.d52) [concrete = constants.%T.binding.as_type.as.RightShiftWith.impl.Op.specific_fn.3d7026.2]
-// CHECK:STDOUT:   %bound_method.loc23_20.3: <bound method> = bound_method %int_1.loc23, %T.binding.as_type.as.RightShiftWith.impl.Op.specific_fn.loc23 [concrete = constants.%bound_method.dacc1a.2]
-// CHECK:STDOUT:   %impl.elem0.loc23: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %bound_method.loc23_18: <bound method> = bound_method %int_1.loc23, %impl.elem0.loc23 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc23: init %Cpp.long_long = call %bound_method.loc23_18(%int_1.loc23) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc23_18.1: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc23 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc23_18.2: %Cpp.long_long = converted %int_1.loc23, %.loc23_18.1 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.call.loc23: init %Cpp.long_long = call %bound_method.loc23_20.3(%.loc23_18.2, %a.ref.loc23_23)
-// CHECK:STDOUT:   %a.ref.loc23_26: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc23: <specific function> = specific_function %AssertSameType.ref.loc23, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc23_20.2: %Cpp.long_long = value_of_initializer %T.binding.as_type.as.RightShiftWith.impl.Op.call.loc23
-// CHECK:STDOUT:   %.loc23_20.3: %Cpp.long_long = converted %T.binding.as_type.as.RightShiftWith.impl.Op.call.loc23, %.loc23_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc23: init %empty_tuple.type = call %AssertSameType.specific_fn.loc23(%.loc23_20.3, %a.ref.loc23_26)
-// CHECK:STDOUT:   %AssertSameType.ref.loc25: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %b.ref.loc25: %i64 = name_ref b, %b
-// CHECK:STDOUT:   %a.ref.loc25_22: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %impl.elem1.loc25: %.14d = impl_witness_access constants.%BitAndWith.impl_witness.668, element1 [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.77d50f.2]
-// CHECK:STDOUT:   %bound_method.loc25_20.1: <bound method> = bound_method %b.ref.loc25, %impl.elem1.loc25
-// CHECK:STDOUT:   %specific_fn.loc25: <specific function> = specific_function %impl.elem1.loc25, @T.binding.as_type.as.BitAndWith.impl.Op.3(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.16125d.1]
-// CHECK:STDOUT:   %bound_method.loc25_20.2: <bound method> = bound_method %b.ref.loc25, %specific_fn.loc25
-// CHECK:STDOUT:   %.loc25_20.1: %T.binding.as_type.as.BitAndWith.impl.Op.type.d0d4e3.1 = specific_constant imports.%Core.Op.f87, @T.binding.as_type.as.BitAndWith.impl.972(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.77d50f.1]
-// CHECK:STDOUT:   %Op.ref.loc25: %T.binding.as_type.as.BitAndWith.impl.Op.type.d0d4e3.1 = name_ref Op, %.loc25_20.1 [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.77d50f.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.bound.loc25: <bound method> = bound_method %b.ref.loc25, %Op.ref.loc25
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.loc25: <specific function> = specific_function %Op.ref.loc25, @T.binding.as_type.as.BitAndWith.impl.Op.4(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.16125d.2]
-// CHECK:STDOUT:   %bound_method.loc25_20.3: <bound method> = bound_method %b.ref.loc25, %T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.loc25
-// CHECK:STDOUT:   %impl.elem0.loc25: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc25_18: <bound method> = bound_method %b.ref.loc25, %impl.elem0.loc25
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc25: init %Cpp.long_long = call %bound_method.loc25_18(%b.ref.loc25)
-// CHECK:STDOUT:   %.loc25_18.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc25
-// CHECK:STDOUT:   %.loc25_18.2: %Cpp.long_long = converted %b.ref.loc25, %.loc25_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.call.loc25: init %Cpp.long_long = call %bound_method.loc25_20.3(%.loc25_18.2, %a.ref.loc25_22)
-// CHECK:STDOUT:   %a.ref.loc25_25: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc25: <specific function> = specific_function %AssertSameType.ref.loc25, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc25_20.2: %Cpp.long_long = value_of_initializer %T.binding.as_type.as.BitAndWith.impl.Op.call.loc25
-// CHECK:STDOUT:   %.loc25_20.3: %Cpp.long_long = converted %T.binding.as_type.as.BitAndWith.impl.Op.call.loc25, %.loc25_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc25: init %empty_tuple.type = call %AssertSameType.specific_fn.loc25(%.loc25_20.3, %a.ref.loc25_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc26: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %b.ref.loc26: %i64 = name_ref b, %b
-// CHECK:STDOUT:   %a.ref.loc26_22: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %impl.elem1.loc26: %.a4a = impl_witness_access constants.%BitOrWith.impl_witness.771, element1 [concrete = constants.%T.binding.as_type.as.BitOrWith.impl.Op.9b8362.2]
-// CHECK:STDOUT:   %bound_method.loc26_20.1: <bound method> = bound_method %b.ref.loc26, %impl.elem1.loc26
-// CHECK:STDOUT:   %specific_fn.loc26: <specific function> = specific_function %impl.elem1.loc26, @T.binding.as_type.as.BitOrWith.impl.Op.3(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.BitOrWith.impl.Op.specific_fn.bd6228.1]
-// CHECK:STDOUT:   %bound_method.loc26_20.2: <bound method> = bound_method %b.ref.loc26, %specific_fn.loc26
-// CHECK:STDOUT:   %.loc26_20.1: %T.binding.as_type.as.BitOrWith.impl.Op.type.2c510c.1 = specific_constant imports.%Core.Op.eb3, @T.binding.as_type.as.BitOrWith.impl.a9d(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.BitOrWith.impl.Op.9b8362.1]
-// CHECK:STDOUT:   %Op.ref.loc26: %T.binding.as_type.as.BitOrWith.impl.Op.type.2c510c.1 = name_ref Op, %.loc26_20.1 [concrete = constants.%T.binding.as_type.as.BitOrWith.impl.Op.9b8362.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.bound.loc26: <bound method> = bound_method %b.ref.loc26, %Op.ref.loc26
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.specific_fn.loc26: <specific function> = specific_function %Op.ref.loc26, @T.binding.as_type.as.BitOrWith.impl.Op.4(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.BitOrWith.impl.Op.specific_fn.bd6228.2]
-// CHECK:STDOUT:   %bound_method.loc26_20.3: <bound method> = bound_method %b.ref.loc26, %T.binding.as_type.as.BitOrWith.impl.Op.specific_fn.loc26
-// CHECK:STDOUT:   %impl.elem0.loc26: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc26_18: <bound method> = bound_method %b.ref.loc26, %impl.elem0.loc26
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc26: init %Cpp.long_long = call %bound_method.loc26_18(%b.ref.loc26)
-// CHECK:STDOUT:   %.loc26_18.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc26
-// CHECK:STDOUT:   %.loc26_18.2: %Cpp.long_long = converted %b.ref.loc26, %.loc26_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.BitOrWith.impl.Op.call.loc26: init %Cpp.long_long = call %bound_method.loc26_20.3(%.loc26_18.2, %a.ref.loc26_22)
-// CHECK:STDOUT:   %a.ref.loc26_25: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc26: <specific function> = specific_function %AssertSameType.ref.loc26, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc26_20.2: %Cpp.long_long = value_of_initializer %T.binding.as_type.as.BitOrWith.impl.Op.call.loc26
-// CHECK:STDOUT:   %.loc26_20.3: %Cpp.long_long = converted %T.binding.as_type.as.BitOrWith.impl.Op.call.loc26, %.loc26_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc26: init %empty_tuple.type = call %AssertSameType.specific_fn.loc26(%.loc26_20.3, %a.ref.loc26_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc27: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %b.ref.loc27: %i64 = name_ref b, %b
-// CHECK:STDOUT:   %a.ref.loc27_22: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %impl.elem1.loc27: %.f37 = impl_witness_access constants.%BitXorWith.impl_witness.28f, element1 [concrete = constants.%T.binding.as_type.as.BitXorWith.impl.Op.f03227.2]
-// CHECK:STDOUT:   %bound_method.loc27_20.1: <bound method> = bound_method %b.ref.loc27, %impl.elem1.loc27
-// CHECK:STDOUT:   %specific_fn.loc27: <specific function> = specific_function %impl.elem1.loc27, @T.binding.as_type.as.BitXorWith.impl.Op.3(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.BitXorWith.impl.Op.specific_fn.bae3fa.1]
-// CHECK:STDOUT:   %bound_method.loc27_20.2: <bound method> = bound_method %b.ref.loc27, %specific_fn.loc27
-// CHECK:STDOUT:   %.loc27_20.1: %T.binding.as_type.as.BitXorWith.impl.Op.type.02ef16.1 = specific_constant imports.%Core.Op.06a, @T.binding.as_type.as.BitXorWith.impl.0e9(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.BitXorWith.impl.Op.f03227.1]
-// CHECK:STDOUT:   %Op.ref.loc27: %T.binding.as_type.as.BitXorWith.impl.Op.type.02ef16.1 = name_ref Op, %.loc27_20.1 [concrete = constants.%T.binding.as_type.as.BitXorWith.impl.Op.f03227.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.bound.loc27: <bound method> = bound_method %b.ref.loc27, %Op.ref.loc27
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.specific_fn.loc27: <specific function> = specific_function %Op.ref.loc27, @T.binding.as_type.as.BitXorWith.impl.Op.4(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.BitXorWith.impl.Op.specific_fn.bae3fa.2]
-// CHECK:STDOUT:   %bound_method.loc27_20.3: <bound method> = bound_method %b.ref.loc27, %T.binding.as_type.as.BitXorWith.impl.Op.specific_fn.loc27
-// CHECK:STDOUT:   %impl.elem0.loc27: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc27_18: <bound method> = bound_method %b.ref.loc27, %impl.elem0.loc27
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc27: init %Cpp.long_long = call %bound_method.loc27_18(%b.ref.loc27)
-// CHECK:STDOUT:   %.loc27_18.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc27
-// CHECK:STDOUT:   %.loc27_18.2: %Cpp.long_long = converted %b.ref.loc27, %.loc27_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.BitXorWith.impl.Op.call.loc27: init %Cpp.long_long = call %bound_method.loc27_20.3(%.loc27_18.2, %a.ref.loc27_22)
-// CHECK:STDOUT:   %a.ref.loc27_25: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc27: <specific function> = specific_function %AssertSameType.ref.loc27, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc27_20.2: %Cpp.long_long = value_of_initializer %T.binding.as_type.as.BitXorWith.impl.Op.call.loc27
-// CHECK:STDOUT:   %.loc27_20.3: %Cpp.long_long = converted %T.binding.as_type.as.BitXorWith.impl.Op.call.loc27, %.loc27_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc27: init %empty_tuple.type = call %AssertSameType.specific_fn.loc27(%.loc27_20.3, %a.ref.loc27_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc28: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %b.ref.loc28: %i64 = name_ref b, %b
-// CHECK:STDOUT:   %a.ref.loc28_23: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %impl.elem1.loc28: %.3c0 = impl_witness_access constants.%LeftShiftWith.impl_witness.95c, element1 [concrete = constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.300e5a.2]
-// CHECK:STDOUT:   %bound_method.loc28_20.1: <bound method> = bound_method %b.ref.loc28, %impl.elem1.loc28
-// CHECK:STDOUT:   %specific_fn.loc28: <specific function> = specific_function %impl.elem1.loc28, @T.binding.as_type.as.LeftShiftWith.impl.Op.3(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.specific_fn.c7ed9a.1]
-// CHECK:STDOUT:   %bound_method.loc28_20.2: <bound method> = bound_method %b.ref.loc28, %specific_fn.loc28
-// CHECK:STDOUT:   %.loc28_20.1: %T.binding.as_type.as.LeftShiftWith.impl.Op.type.c82b93.1 = specific_constant imports.%Core.Op.0db, @T.binding.as_type.as.LeftShiftWith.impl.b8c(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.300e5a.1]
-// CHECK:STDOUT:   %Op.ref.loc28: %T.binding.as_type.as.LeftShiftWith.impl.Op.type.c82b93.1 = name_ref Op, %.loc28_20.1 [concrete = constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.300e5a.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.bound.loc28: <bound method> = bound_method %b.ref.loc28, %Op.ref.loc28
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.specific_fn.loc28: <specific function> = specific_function %Op.ref.loc28, @T.binding.as_type.as.LeftShiftWith.impl.Op.4(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.LeftShiftWith.impl.Op.specific_fn.c7ed9a.2]
-// CHECK:STDOUT:   %bound_method.loc28_20.3: <bound method> = bound_method %b.ref.loc28, %T.binding.as_type.as.LeftShiftWith.impl.Op.specific_fn.loc28
-// CHECK:STDOUT:   %impl.elem0.loc28: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc28_18: <bound method> = bound_method %b.ref.loc28, %impl.elem0.loc28
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc28: init %Cpp.long_long = call %bound_method.loc28_18(%b.ref.loc28)
-// CHECK:STDOUT:   %.loc28_18.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc28
-// CHECK:STDOUT:   %.loc28_18.2: %Cpp.long_long = converted %b.ref.loc28, %.loc28_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.LeftShiftWith.impl.Op.call.loc28: init %Cpp.long_long = call %bound_method.loc28_20.3(%.loc28_18.2, %a.ref.loc28_23)
-// CHECK:STDOUT:   %a.ref.loc28_26: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc28: <specific function> = specific_function %AssertSameType.ref.loc28, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc28_20.2: %Cpp.long_long = value_of_initializer %T.binding.as_type.as.LeftShiftWith.impl.Op.call.loc28
-// CHECK:STDOUT:   %.loc28_20.3: %Cpp.long_long = converted %T.binding.as_type.as.LeftShiftWith.impl.Op.call.loc28, %.loc28_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc28: init %empty_tuple.type = call %AssertSameType.specific_fn.loc28(%.loc28_20.3, %a.ref.loc28_26)
-// CHECK:STDOUT:   %AssertSameType.ref.loc29: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %b.ref.loc29: %i64 = name_ref b, %b
-// CHECK:STDOUT:   %a.ref.loc29_23: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %impl.elem1.loc29: %.c72 = impl_witness_access constants.%RightShiftWith.impl_witness.015, element1 [concrete = constants.%T.binding.as_type.as.RightShiftWith.impl.Op.513286.2]
-// CHECK:STDOUT:   %bound_method.loc29_20.1: <bound method> = bound_method %b.ref.loc29, %impl.elem1.loc29
-// CHECK:STDOUT:   %specific_fn.loc29: <specific function> = specific_function %impl.elem1.loc29, @T.binding.as_type.as.RightShiftWith.impl.Op.3(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.RightShiftWith.impl.Op.specific_fn.7142b6.1]
-// CHECK:STDOUT:   %bound_method.loc29_20.2: <bound method> = bound_method %b.ref.loc29, %specific_fn.loc29
-// CHECK:STDOUT:   %.loc29_20.1: %T.binding.as_type.as.RightShiftWith.impl.Op.type.ff07c1.1 = specific_constant imports.%Core.Op.db5, @T.binding.as_type.as.RightShiftWith.impl.677(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.RightShiftWith.impl.Op.513286.1]
-// CHECK:STDOUT:   %Op.ref.loc29: %T.binding.as_type.as.RightShiftWith.impl.Op.type.ff07c1.1 = name_ref Op, %.loc29_20.1 [concrete = constants.%T.binding.as_type.as.RightShiftWith.impl.Op.513286.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.bound.loc29: <bound method> = bound_method %b.ref.loc29, %Op.ref.loc29
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.specific_fn.loc29: <specific function> = specific_function %Op.ref.loc29, @T.binding.as_type.as.RightShiftWith.impl.Op.4(constants.%ImplicitAs.facet.c59) [concrete = constants.%T.binding.as_type.as.RightShiftWith.impl.Op.specific_fn.7142b6.2]
-// CHECK:STDOUT:   %bound_method.loc29_20.3: <bound method> = bound_method %b.ref.loc29, %T.binding.as_type.as.RightShiftWith.impl.Op.specific_fn.loc29
-// CHECK:STDOUT:   %impl.elem0.loc29: %.b29 = impl_witness_access constants.%ImplicitAs.impl_witness.1b3, element0 [concrete = constants.%i64.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc29_18: <bound method> = bound_method %b.ref.loc29, %impl.elem0.loc29
-// CHECK:STDOUT:   %i64.as.ImplicitAs.impl.Convert.call.loc29: init %Cpp.long_long = call %bound_method.loc29_18(%b.ref.loc29)
-// CHECK:STDOUT:   %.loc29_18.1: %Cpp.long_long = value_of_initializer %i64.as.ImplicitAs.impl.Convert.call.loc29
-// CHECK:STDOUT:   %.loc29_18.2: %Cpp.long_long = converted %b.ref.loc29, %.loc29_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.RightShiftWith.impl.Op.call.loc29: init %Cpp.long_long = call %bound_method.loc29_20.3(%.loc29_18.2, %a.ref.loc29_23)
-// CHECK:STDOUT:   %a.ref.loc29_26: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc29: <specific function> = specific_function %AssertSameType.ref.loc29, @AssertSameType(constants.%Cpp.long_long) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc29_20.2: %Cpp.long_long = value_of_initializer %T.binding.as_type.as.RightShiftWith.impl.Op.call.loc29
-// CHECK:STDOUT:   %.loc29_20.3: %Cpp.long_long = converted %T.binding.as_type.as.RightShiftWith.impl.Op.call.loc29, %.loc29_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc29: init %empty_tuple.type = call %AssertSameType.specific_fn.loc29(%.loc29_20.3, %a.ref.loc29_26)
-// CHECK:STDOUT:   <elided>
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: --- bitwise_heterogeneous_long_long_and_i128.carbon
-// CHECK:STDOUT:
-// CHECK:STDOUT: constants {
-// CHECK:STDOUT:   %AssertSameType.type: type = fn_type @AssertSameType [concrete]
-// CHECK:STDOUT:   %empty_tuple.type: type = tuple_type () [concrete]
-// CHECK:STDOUT:   %AssertSameType: %AssertSameType.type = struct_value () [concrete]
-// CHECK:STDOUT:   %Cpp.long_long: type = class_type @LongLong64 [concrete]
-// CHECK:STDOUT:   %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic]
-// CHECK:STDOUT:   %Int.fc6021.1: type = class_type @Int, @Int(%N) [symbolic]
-// CHECK:STDOUT:   %pattern_type.76e: type = pattern_type %Cpp.long_long [concrete]
-// CHECK:STDOUT:   %int_1.5b8: Core.IntLiteral = int_value 1 [concrete]
-// CHECK:STDOUT:   %ImplicitAs.type.a03: type = facet_type <@ImplicitAs, @ImplicitAs(%Cpp.long_long)> [concrete]
-// CHECK:STDOUT:   %ImplicitAs.Convert.type.6e4: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%Cpp.long_long) [concrete]
-// CHECK:STDOUT:   %int_128: Core.IntLiteral = int_value 128 [concrete]
-// CHECK:STDOUT:   %i128: type = class_type @Int, @Int(%int_128) [concrete]
-// CHECK:STDOUT:   %ImplicitAs.type.e19: type = facet_type <@ImplicitAs, @ImplicitAs(%i128)> [concrete]
-// CHECK:STDOUT:   %ImplicitAs.Convert.type.812: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i128) [concrete]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness.82e: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.896 [concrete]
-// CHECK:STDOUT:   %ImplicitAs.facet.d52: %ImplicitAs.type.a03 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.82e) [concrete]
-// CHECK:STDOUT:   %.a93: type = fn_type_with_self_type %ImplicitAs.Convert.type.6e4, %ImplicitAs.facet.d52 [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.aba: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.1 [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.a20: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.aba = struct_value () [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae: <bound method> = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.a20 [concrete]
-// CHECK:STDOUT:   %int_1.092: %Cpp.long_long = int_value 1 [concrete]
-// CHECK:STDOUT:   %pattern_type.57d: type = pattern_type %i128 [concrete]
-// CHECK:STDOUT:   %To: Core.IntLiteral = symbolic_binding To, 0 [symbolic]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.4e6: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.2, @Core.IntLiteral.as.ImplicitAs.impl.b2d(%To) [symbolic]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.3c2: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.4e6 = struct_value () [symbolic]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness.47a: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.74f, @Core.IntLiteral.as.ImplicitAs.impl.b2d(%int_128) [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.74a: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert.2, @Core.IntLiteral.as.ImplicitAs.impl.b2d(%int_128) [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.75a: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.74a = struct_value () [concrete]
-// CHECK:STDOUT:   %ImplicitAs.facet.daa: %ImplicitAs.type.e19 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.47a) [concrete]
-// CHECK:STDOUT:   %.700: type = fn_type_with_self_type %ImplicitAs.Convert.type.812, %ImplicitAs.facet.daa [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.e09: <bound method> = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.75a [concrete]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: <specific function> = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.75a, @Core.IntLiteral.as.ImplicitAs.impl.Convert.2(%int_128) [concrete]
-// CHECK:STDOUT:   %bound_method: <bound method> = bound_method %int_1.5b8, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete]
-// CHECK:STDOUT:   %int_1.611: %i128 = int_value 1 [concrete]
-// CHECK:STDOUT:   %BitAndWith.type.a54: type = facet_type <@BitAndWith, @BitAndWith(%i128)> [concrete]
-// CHECK:STDOUT:   %BitAndWith.Op.type.77e: type = fn_type @BitAndWith.Op, @BitAndWith(%i128) [concrete]
-// CHECK:STDOUT:   %BitAndWith.type.97f: type = facet_type <@BitAndWith, @BitAndWith(%Cpp.long_long)> [concrete]
-// CHECK:STDOUT:   %BitAndWith.Op.type.c6c: type = fn_type @BitAndWith.Op, @BitAndWith(%Cpp.long_long) [concrete]
-// CHECK:STDOUT:   %ImplicitAs.type.39a54f.2: type = facet_type <@ImplicitAs, @ImplicitAs(%Int.fc6021.1)> [symbolic]
-// CHECK:STDOUT:   %U.354: %ImplicitAs.type.39a54f.2 = symbolic_binding U, 1 [symbolic]
-// CHECK:STDOUT:   %Int.as.BitAndWith.impl.Op.type.1b6537.1: type = fn_type @Int.as.BitAndWith.impl.Op.2, @Int.as.BitAndWith.impl.4ac(%N, %U.354) [symbolic]
-// CHECK:STDOUT:   %Int.as.BitAndWith.impl.Op.b9569a.1: %Int.as.BitAndWith.impl.Op.type.1b6537.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %Int.as.BitAndWith.impl.Op.type.1b6537.2: type = fn_type @Int.as.BitAndWith.impl.Op.3, @Int.as.BitAndWith.impl.4ac(%N, %U.354) [symbolic]
-// CHECK:STDOUT:   %Int.as.BitAndWith.impl.Op.b9569a.2: %Int.as.BitAndWith.impl.Op.type.1b6537.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %T.354: %ImplicitAs.type.39a54f.2 = symbolic_binding T, 1 [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.type.e95062.1: type = fn_type @T.binding.as_type.as.BitAndWith.impl.Op.5, @T.binding.as_type.as.BitAndWith.impl.96d(%N, %T.354) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.892c6d.1: %T.binding.as_type.as.BitAndWith.impl.Op.type.e95062.1 = struct_value () [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.type.e95062.2: type = fn_type @T.binding.as_type.as.BitAndWith.impl.Op.6, @T.binding.as_type.as.BitAndWith.impl.96d(%N, %T.354) [symbolic]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.892c6d.2: %T.binding.as_type.as.BitAndWith.impl.Op.type.e95062.2 = struct_value () [symbolic]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness.0f2: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.eb2 [concrete]
-// CHECK:STDOUT:   %ImplicitAs.facet.211: %ImplicitAs.type.e19 = facet_value %Cpp.long_long, (%ImplicitAs.impl_witness.0f2) [concrete]
-// CHECK:STDOUT:   %BitAndWith.impl_witness.da1: <witness> = impl_witness imports.%BitAndWith.impl_witness_table.5e7, @T.binding.as_type.as.BitAndWith.impl.96d(%int_128, %ImplicitAs.facet.211) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.type.4c32e1.1: type = fn_type @T.binding.as_type.as.BitAndWith.impl.Op.6, @T.binding.as_type.as.BitAndWith.impl.96d(%int_128, %ImplicitAs.facet.211) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.85dfed.1: %T.binding.as_type.as.BitAndWith.impl.Op.type.4c32e1.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.type.4c32e1.2: type = fn_type @T.binding.as_type.as.BitAndWith.impl.Op.5, @T.binding.as_type.as.BitAndWith.impl.96d(%int_128, %ImplicitAs.facet.211) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.85dfed.2: %T.binding.as_type.as.BitAndWith.impl.Op.type.4c32e1.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %BitAndWith.facet.1ed: %BitAndWith.type.a54 = facet_value %Cpp.long_long, (%BitAndWith.impl_witness.da1) [concrete]
-// CHECK:STDOUT:   %.53c: type = fn_type_with_self_type %BitAndWith.Op.type.77e, %BitAndWith.facet.1ed [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.98f0dd.1: <specific function> = specific_function %T.binding.as_type.as.BitAndWith.impl.Op.85dfed.2, @T.binding.as_type.as.BitAndWith.impl.Op.5(%int_128, %ImplicitAs.facet.211) [concrete]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.98f0dd.2: <specific function> = specific_function %T.binding.as_type.as.BitAndWith.impl.Op.85dfed.1, @T.binding.as_type.as.BitAndWith.impl.Op.6(%int_128, %ImplicitAs.facet.211) [concrete]
-// CHECK:STDOUT:   %.6e1: type = fn_type_with_self_type %ImplicitAs.Convert.type.812, %ImplicitAs.facet.211 [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.ImplicitAs.impl.Convert.type: type = fn_type @Cpp.long_long.as.ImplicitAs.impl.Convert [concrete]
-// CHECK:STDOUT:   %Cpp.long_long.as.ImplicitAs.impl.Convert: %Cpp.long_long.as.ImplicitAs.impl.Convert.type = struct_value () [concrete]
-// CHECK:STDOUT:   %AssertSameType.specific_fn: <specific function> = specific_function %AssertSameType, @AssertSameType(%i128) [concrete]
-// CHECK:STDOUT:   %BitAndWith.impl_witness.df1: <witness> = impl_witness imports.%BitAndWith.impl_witness_table.ebf, @Int.as.BitAndWith.impl.4ac(%int_128, %ImplicitAs.facet.211) [concrete]
-// CHECK:STDOUT:   %Int.as.BitAndWith.impl.Op.type.f78821.1: type = fn_type @Int.as.BitAndWith.impl.Op.3, @Int.as.BitAndWith.impl.4ac(%int_128, %ImplicitAs.facet.211) [concrete]
-// CHECK:STDOUT:   %Int.as.BitAndWith.impl.Op.498f57.1: %Int.as.BitAndWith.impl.Op.type.f78821.1 = struct_value () [concrete]
-// CHECK:STDOUT:   %Int.as.BitAndWith.impl.Op.type.f78821.2: type = fn_type @Int.as.BitAndWith.impl.Op.2, @Int.as.BitAndWith.impl.4ac(%int_128, %ImplicitAs.facet.211) [concrete]
-// CHECK:STDOUT:   %Int.as.BitAndWith.impl.Op.498f57.2: %Int.as.BitAndWith.impl.Op.type.f78821.2 = struct_value () [concrete]
-// CHECK:STDOUT:   %BitAndWith.facet.63c: %BitAndWith.type.97f = facet_value %i128, (%BitAndWith.impl_witness.df1) [concrete]
-// CHECK:STDOUT:   %.2ad: type = fn_type_with_self_type %BitAndWith.Op.type.c6c, %BitAndWith.facet.63c [concrete]
-// CHECK:STDOUT:   %Int.as.BitAndWith.impl.Op.specific_fn.a5933f.1: <specific function> = specific_function %Int.as.BitAndWith.impl.Op.498f57.2, @Int.as.BitAndWith.impl.Op.2(%int_128, %ImplicitAs.facet.211) [concrete]
-// CHECK:STDOUT:   %Int.as.BitAndWith.impl.Op.specific_fn.a5933f.2: <specific function> = specific_function %Int.as.BitAndWith.impl.Op.498f57.1, @Int.as.BitAndWith.impl.Op.3(%int_128, %ImplicitAs.facet.211) [concrete]
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: imports {
-// CHECK:STDOUT:   %Cpp: <namespace> = namespace file.%Cpp.import_cpp, [concrete] {
-// CHECK:STDOUT:     .long_long = constants.%Cpp.long_long
-// CHECK:STDOUT:     import Cpp//...
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %Core.import_ref.d64: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.aba = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness_table.896 = impl_witness_table (%Core.import_ref.d64), @Core.IntLiteral.as.ImplicitAs.impl.a26 [concrete]
-// CHECK:STDOUT:   %Core.import_ref.42d: @Core.IntLiteral.as.ImplicitAs.impl.b2d.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.4e6) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.b2d.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.3c2)]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness_table.74f = impl_witness_table (%Core.import_ref.42d), @Core.IntLiteral.as.ImplicitAs.impl.b2d [concrete]
-// CHECK:STDOUT:   %Core.import_ref.475cb3.2 = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.611: @Int.as.BitAndWith.impl.4ac.%Int.as.BitAndWith.impl.Op.type.2 (%Int.as.BitAndWith.impl.Op.type.1b6537.1) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.BitAndWith.impl.4ac.%Int.as.BitAndWith.impl.Op.2 (constants.%Int.as.BitAndWith.impl.Op.b9569a.1)]
-// CHECK:STDOUT:   %BitAndWith.impl_witness_table.ebf = impl_witness_table (%Core.import_ref.475cb3.2, %Core.import_ref.611), @Int.as.BitAndWith.impl.4ac [concrete]
-// CHECK:STDOUT:   %Core.Op.36f: @Int.as.BitAndWith.impl.4ac.%Int.as.BitAndWith.impl.Op.type.1 (%Int.as.BitAndWith.impl.Op.type.1b6537.2) = import_ref Core//prelude/types/int, Op, loaded [symbolic = @Int.as.BitAndWith.impl.4ac.%Int.as.BitAndWith.impl.Op.1 (constants.%Int.as.BitAndWith.impl.Op.b9569a.2)]
-// CHECK:STDOUT:   %Core.import_ref.475cb3.3 = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, unloaded
-// CHECK:STDOUT:   %Core.import_ref.29d: @T.binding.as_type.as.BitAndWith.impl.96d.%T.binding.as_type.as.BitAndWith.impl.Op.type.2 (%T.binding.as_type.as.BitAndWith.impl.Op.type.e95062.1) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @T.binding.as_type.as.BitAndWith.impl.96d.%T.binding.as_type.as.BitAndWith.impl.Op.2 (constants.%T.binding.as_type.as.BitAndWith.impl.Op.892c6d.1)]
-// CHECK:STDOUT:   %BitAndWith.impl_witness_table.5e7 = impl_witness_table (%Core.import_ref.475cb3.3, %Core.import_ref.29d), @T.binding.as_type.as.BitAndWith.impl.96d [concrete]
-// CHECK:STDOUT:   %Core.Op.944: @T.binding.as_type.as.BitAndWith.impl.96d.%T.binding.as_type.as.BitAndWith.impl.Op.type.1 (%T.binding.as_type.as.BitAndWith.impl.Op.type.e95062.2) = import_ref Core//prelude/types/int, Op, loaded [symbolic = @T.binding.as_type.as.BitAndWith.impl.96d.%T.binding.as_type.as.BitAndWith.impl.Op.1 (constants.%T.binding.as_type.as.BitAndWith.impl.Op.892c6d.2)]
-// CHECK:STDOUT:   %Core.import_ref.eca: %Cpp.long_long.as.ImplicitAs.impl.Convert.type = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long_long.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %ImplicitAs.impl_witness_table.eb2 = impl_witness_table (%Core.import_ref.eca), @Cpp.long_long.as.ImplicitAs.impl.0cb [concrete]
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
-// CHECK:STDOUT: fn @BitWiseHeterogeneousLongLongAndI128() {
-// CHECK:STDOUT: !entry:
-// CHECK:STDOUT:   name_binding_decl {
-// CHECK:STDOUT:     %a.patt: %pattern_type.76e = value_binding_pattern a [concrete]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %int_1.loc10: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %.loc10_13: type = splice_block %long_long.ref [concrete = constants.%Cpp.long_long] {
-// CHECK:STDOUT:     %Cpp.ref: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
-// CHECK:STDOUT:     %long_long.ref: type = name_ref long_long, constants.%Cpp.long_long [concrete = constants.%Cpp.long_long]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %impl.elem0.loc10: %.a93 = impl_witness_access constants.%ImplicitAs.impl_witness.82e, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.a20]
-// CHECK:STDOUT:   %bound_method.loc10: <bound method> = bound_method %int_1.loc10, %impl.elem0.loc10 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aae]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10: init %Cpp.long_long = call %bound_method.loc10(%int_1.loc10) [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc10_26.1: %Cpp.long_long = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc10 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %.loc10_26.2: %Cpp.long_long = converted %int_1.loc10, %.loc10_26.1 [concrete = constants.%int_1.092]
-// CHECK:STDOUT:   %a: %Cpp.long_long = value_binding a, %.loc10_26.2
-// CHECK:STDOUT:   name_binding_decl {
-// CHECK:STDOUT:     %b.patt: %pattern_type.57d = value_binding_pattern b [concrete]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %int_1.loc11: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
-// CHECK:STDOUT:   %.loc11_10: type = splice_block %i128 [concrete = constants.%i128] {
-// CHECK:STDOUT:     %int_128: Core.IntLiteral = int_value 128 [concrete = constants.%int_128]
-// CHECK:STDOUT:     %i128: type = class_type @Int, @Int(constants.%int_128) [concrete = constants.%i128]
-// CHECK:STDOUT:   }
-// CHECK:STDOUT:   %impl.elem0.loc11: %.700 = impl_witness_access constants.%ImplicitAs.impl_witness.47a, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.75a]
-// CHECK:STDOUT:   %bound_method.loc11_17.1: <bound method> = bound_method %int_1.loc11, %impl.elem0.loc11 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.e09]
-// CHECK:STDOUT:   %specific_fn.loc11: <specific function> = specific_function %impl.elem0.loc11, @Core.IntLiteral.as.ImplicitAs.impl.Convert.2(constants.%int_128) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn]
-// CHECK:STDOUT:   %bound_method.loc11_17.2: <bound method> = bound_method %int_1.loc11, %specific_fn.loc11 [concrete = constants.%bound_method]
-// CHECK:STDOUT:   %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc11: init %i128 = call %bound_method.loc11_17.2(%int_1.loc11) [concrete = constants.%int_1.611]
-// CHECK:STDOUT:   %.loc11_17.1: %i128 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call.loc11 [concrete = constants.%int_1.611]
-// CHECK:STDOUT:   %.loc11_17.2: %i128 = converted %int_1.loc11, %.loc11_17.1 [concrete = constants.%int_1.611]
-// CHECK:STDOUT:   %b: %i128 = value_binding b, %.loc11_17.2
-// CHECK:STDOUT:   %AssertSameType.ref.loc13: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %a.ref.loc13: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %b.ref.loc13_22: %i128 = name_ref b, %b
-// CHECK:STDOUT:   %impl.elem1.loc13: %.53c = impl_witness_access constants.%BitAndWith.impl_witness.da1, element1 [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.85dfed.2]
-// CHECK:STDOUT:   %bound_method.loc13_20.1: <bound method> = bound_method %a.ref.loc13, %impl.elem1.loc13
-// CHECK:STDOUT:   %specific_fn.loc13: <specific function> = specific_function %impl.elem1.loc13, @T.binding.as_type.as.BitAndWith.impl.Op.5(constants.%int_128, constants.%ImplicitAs.facet.211) [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.98f0dd.1]
-// CHECK:STDOUT:   %bound_method.loc13_20.2: <bound method> = bound_method %a.ref.loc13, %specific_fn.loc13
-// CHECK:STDOUT:   %.loc13_20.1: %T.binding.as_type.as.BitAndWith.impl.Op.type.4c32e1.1 = specific_constant imports.%Core.Op.944, @T.binding.as_type.as.BitAndWith.impl.96d(constants.%int_128, constants.%ImplicitAs.facet.211) [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.85dfed.1]
-// CHECK:STDOUT:   %Op.ref.loc13: %T.binding.as_type.as.BitAndWith.impl.Op.type.4c32e1.1 = name_ref Op, %.loc13_20.1 [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.85dfed.1]
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.bound: <bound method> = bound_method %a.ref.loc13, %Op.ref.loc13
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.specific_fn: <specific function> = specific_function %Op.ref.loc13, @T.binding.as_type.as.BitAndWith.impl.Op.6(constants.%int_128, constants.%ImplicitAs.facet.211) [concrete = constants.%T.binding.as_type.as.BitAndWith.impl.Op.specific_fn.98f0dd.2]
-// CHECK:STDOUT:   %bound_method.loc13_20.3: <bound method> = bound_method %a.ref.loc13, %T.binding.as_type.as.BitAndWith.impl.Op.specific_fn
-// CHECK:STDOUT:   %impl.elem0.loc13: %.6e1 = impl_witness_access constants.%ImplicitAs.impl_witness.0f2, element0 [concrete = constants.%Cpp.long_long.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc13_18: <bound method> = bound_method %a.ref.loc13, %impl.elem0.loc13
-// CHECK:STDOUT:   %Cpp.long_long.as.ImplicitAs.impl.Convert.call.loc13: init %i128 = call %bound_method.loc13_18(%a.ref.loc13)
-// CHECK:STDOUT:   %.loc13_18.1: %i128 = value_of_initializer %Cpp.long_long.as.ImplicitAs.impl.Convert.call.loc13
-// CHECK:STDOUT:   %.loc13_18.2: %i128 = converted %a.ref.loc13, %.loc13_18.1
-// CHECK:STDOUT:   %T.binding.as_type.as.BitAndWith.impl.Op.call: init %i128 = call %bound_method.loc13_20.3(%.loc13_18.2, %b.ref.loc13_22)
-// CHECK:STDOUT:   %b.ref.loc13_25: %i128 = name_ref b, %b
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc13: <specific function> = specific_function %AssertSameType.ref.loc13, @AssertSameType(constants.%i128) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc13_20.2: %i128 = value_of_initializer %T.binding.as_type.as.BitAndWith.impl.Op.call
-// CHECK:STDOUT:   %.loc13_20.3: %i128 = converted %T.binding.as_type.as.BitAndWith.impl.Op.call, %.loc13_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc13: init %empty_tuple.type = call %AssertSameType.specific_fn.loc13(%.loc13_20.3, %b.ref.loc13_25)
-// CHECK:STDOUT:   %AssertSameType.ref.loc14: %AssertSameType.type = name_ref AssertSameType, file.%AssertSameType.decl [concrete = constants.%AssertSameType]
-// CHECK:STDOUT:   %b.ref.loc14_18: %i128 = name_ref b, %b
-// CHECK:STDOUT:   %a.ref.loc14: %Cpp.long_long = name_ref a, %a
-// CHECK:STDOUT:   %impl.elem1.loc14: %.2ad = impl_witness_access constants.%BitAndWith.impl_witness.df1, element1 [concrete = constants.%Int.as.BitAndWith.impl.Op.498f57.2]
-// CHECK:STDOUT:   %bound_method.loc14_20.1: <bound method> = bound_method %b.ref.loc14_18, %impl.elem1.loc14
-// CHECK:STDOUT:   %specific_fn.loc14: <specific function> = specific_function %impl.elem1.loc14, @Int.as.BitAndWith.impl.Op.2(constants.%int_128, constants.%ImplicitAs.facet.211) [concrete = constants.%Int.as.BitAndWith.impl.Op.specific_fn.a5933f.1]
-// CHECK:STDOUT:   %bound_method.loc14_20.2: <bound method> = bound_method %b.ref.loc14_18, %specific_fn.loc14
-// CHECK:STDOUT:   %.loc14_20.1: %Int.as.BitAndWith.impl.Op.type.f78821.1 = specific_constant imports.%Core.Op.36f, @Int.as.BitAndWith.impl.4ac(constants.%int_128, constants.%ImplicitAs.facet.211) [concrete = constants.%Int.as.BitAndWith.impl.Op.498f57.1]
-// CHECK:STDOUT:   %Op.ref.loc14: %Int.as.BitAndWith.impl.Op.type.f78821.1 = name_ref Op, %.loc14_20.1 [concrete = constants.%Int.as.BitAndWith.impl.Op.498f57.1]
-// CHECK:STDOUT:   %Int.as.BitAndWith.impl.Op.bound: <bound method> = bound_method %b.ref.loc14_18, %Op.ref.loc14
-// CHECK:STDOUT:   %Int.as.BitAndWith.impl.Op.specific_fn: <specific function> = specific_function %Op.ref.loc14, @Int.as.BitAndWith.impl.Op.3(constants.%int_128, constants.%ImplicitAs.facet.211) [concrete = constants.%Int.as.BitAndWith.impl.Op.specific_fn.a5933f.2]
-// CHECK:STDOUT:   %bound_method.loc14_20.3: <bound method> = bound_method %b.ref.loc14_18, %Int.as.BitAndWith.impl.Op.specific_fn
-// CHECK:STDOUT:   %impl.elem0.loc14: %.6e1 = impl_witness_access constants.%ImplicitAs.impl_witness.0f2, element0 [concrete = constants.%Cpp.long_long.as.ImplicitAs.impl.Convert]
-// CHECK:STDOUT:   %bound_method.loc14_22: <bound method> = bound_method %a.ref.loc14, %impl.elem0.loc14
-// CHECK:STDOUT:   %Cpp.long_long.as.ImplicitAs.impl.Convert.call.loc14: init %i128 = call %bound_method.loc14_22(%a.ref.loc14)
-// CHECK:STDOUT:   %.loc14_22.1: %i128 = value_of_initializer %Cpp.long_long.as.ImplicitAs.impl.Convert.call.loc14
-// CHECK:STDOUT:   %.loc14_22.2: %i128 = converted %a.ref.loc14, %.loc14_22.1
-// CHECK:STDOUT:   %Int.as.BitAndWith.impl.Op.call: init %i128 = call %bound_method.loc14_20.3(%b.ref.loc14_18, %.loc14_22.2)
-// CHECK:STDOUT:   %b.ref.loc14_25: %i128 = name_ref b, %b
-// CHECK:STDOUT:   %AssertSameType.specific_fn.loc14: <specific function> = specific_function %AssertSameType.ref.loc14, @AssertSameType(constants.%i128) [concrete = constants.%AssertSameType.specific_fn]
-// CHECK:STDOUT:   %.loc14_20.2: %i128 = value_of_initializer %Int.as.BitAndWith.impl.Op.call
-// CHECK:STDOUT:   %.loc14_20.3: %i128 = converted %Int.as.BitAndWith.impl.Op.call, %.loc14_20.2
-// CHECK:STDOUT:   %AssertSameType.call.loc14: init %empty_tuple.type = call %AssertSameType.specific_fn.loc14(%.loc14_20.3, %b.ref.loc14_25)
-// CHECK:STDOUT:   <elided>
-// CHECK:STDOUT: }
-// CHECK:STDOUT:
 // CHECK:STDOUT: --- compound_assignment_homogeneous_long_long.carbon
 // CHECK:STDOUT:
 // CHECK:STDOUT: constants {