// @dart = 2.6
abstract class M {
  var m;
}

abstract class N extends M {
  get superM => super.m;
  void set superM(value) {}
}

class S {}

class Named = S with M, N, M;
main() {}
