// @dart = 2.9
class Cat {
  bool eatFood(String food) => true;
}

class MockCat implements Cat {
  dynamic noSuchMethod(Invocation invocation) {}
}

class MockCat2 extends MockCat {
  noSuchMethod(_);
}

class MockCat3 extends MockCat2 implements Cat {
  bool eatFood(String food, {double amount});
}

class MockCat4 extends MockCat2 implements HungryCat {}

abstract class HungryCat {
  bool eatFood(String food, {double amount, double yetAnother});
}

main() {}
