protocol Eq { static func (a: Self, b: Self) -> Bool }
protocol EqX { associatedtype X static func (a: X, b: X) -> Bool } struct Hoge : EqX { typealias X = Hoge }