 }
 
 public extension BinaryFauxtingPoint {
-  // This version of < will be called in a context that only knows it has a Comparable.
-  @_implements(Comparable, <(_:_:))
-  static func _ComparableLessThan(_ lhs: Fauxt, _ rhs: Fauxt) -> Bool {
-    print("compared as Comparables")
-    comparedAsComparablesCount += 1
+  // This version of < will be called in a context that only knows it has a Cauxmparable.
+  @_implements(Cauxmparable, <(_:_:))
+  static func _CauxmparableLessThan(_ lhs: Fauxt, _ rhs: Fauxt) -> Bool {
+    print("compared as Cauxmparables")
+    comparedAsCauxmparablesCount += 1
     return lhs.bitPattern < rhs.bitPattern
   }
 }

  // This version of < will be called in a context that knows it has a Fauxt.
  // It is inside an extension of Fauxt rather than the declaration of Fauxt
  // itself in order to avoid a warning about near-matches with the defaulted
  // requirement from Comparable.< up above.
  static func <(_ lhs: Fauxt, _ rhs: Fauxt) -> Bool {
    print("compared as Fauxts")
    comparedAsFauxtsCount += 1

}

public func main() {
  assert(compare_Cauxmparables(Fauxt.one, Fauxt.two))
  assert(comparedAsCauxmparablesCount == 1)
  // CHECK: compared as Cauxmparables
  assert(compare_Cauxmparables(Fauxt.one, Fauxt.nan))
  assert(comparedAsCauxmparablesCount == 2)
  // CHECK: compared as Cauxmparables
  assert(!compare_Cauxmparables(Fauxt.nan, Fauxt.one))
  assert(comparedAsCauxmparablesCount == 3)
  // CHECK: compared as Cauxmparables

  assert(compare_FauxtingPoint(Fauxt.one, Fauxt.two))
  assert(comparedAsCauxmparablesCount == 4)
  // CHECK: compared as Cauxmparables
  assert(compare_FauxtingPoint(Fauxt.one, Fauxt.nan))
  assert(comparedAsCauxmparablesCount == 5)
  // CHECK: compared as Cauxmparables
  assert(!compare_FauxtingPoint(Fauxt.nan, Fauxt.one))
  assert(comparedAsCauxmparablesCount == 6)
  // CHECK: compared as Cauxmparables

  assert(compare_Fauxts(Fauxt.one, Fauxt.two))
  assert(comparedAsFauxtsCount == 1)
