import 'main_lib.dart';

class UnusedClass {}

class UnusedInterface {
  UnusedInterface(this.usedInterfaceField);
  int? usedInterfaceField;
}

class UsedClass implements UnusedInterface {
  int? unusedField;
  int? usedField;
  int? usedInterfaceField;
}

enum UnusedEnum { a, b }
enum UsedEnum {
  unusedValue,
  usedValue,
}
main() {}
unusedMethod() {}
usedMethod(UnusedInterface c) {}
