class A {}

class B implements A {
  @override
  IntET get hashCode => IntET(super.hashCode);
  @override
  TypeET get runtimeType => TypeET(super.runtimeType);
  @override
  BoolET operator ==(Object? other) => BoolET(other == this);
}

extension type ET1(B b) implements A {}

extension type ET2(B b) implements ET1, B {}

extension type IntET(int i) implements int {}

extension type TypeET(Type t) implements Type {}

extension type BoolET(bool b) implements bool {}

void test() {}
