 }
 
 public func compare_Cauxmparables<T:Cauxmparable>(_ x: T, _ y: T) -> Bool {
-  return x < y
+  return x .< y
 }
 
 public func compare_FauxtingPoint<T:FauxtingPoint>(_ x: T, _ y: T) -> Bool {
-  return x < y
+  return x .< y
 }
 
 public func compare_Fauxts(_ x: Fauxt, _ y: Fauxt) -> Bool {
-  return x < y
+  return x .< y
 }
 
 public func main() {

public var comparedAsCauxmparablesCount : Int = 0
public var comparedAsFauxtsCount : Int = 0

public protocol Cauxmparable {
  static func < (lhs: Self, rhs: Self) -> Bool
}

public protocol FauxtingPoint : Cauxmparable {

}

public extension Fauxt {
  // 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 Cauxmparable..< up above.
  static func .<(_ lhs: Fauxt, _ rhs: Fauxt) -> Bool {
    print("compared as Fauxts")
    comparedAsFauxtsCount += 1
    if lhs.state == .Nan || rhs.state == .Nan {
