expect(expected, actual) {}
final int topLevelDuplicateFieldAndDuplicateSetter = 1;
final int topLevelDuplicateFieldAndDuplicateSetter = 2;
final int topLevelDuplicateFieldAndSetter = 1;
final int topLevelDuplicateFieldAndSetter = 2;
final int topLevelFieldAndDuplicateSetter = 1;
int get topLevelGetter => 1;
int get topLevelGetter => 2;
int topLevelField = 1;
int topLevelField = 2;
int topLevelFieldAndSetter1 = 1;
int topLevelFieldAndSetter2 = 1;
int topLevelMethod() => 1;
int topLevelMethod() => 2;
int topLevelMethodAndSetter1() => 1;
int topLevelMethodAndSetter2() => 1;
late final int topLevelLateFinalFieldAndSetter1;
late final int topLevelLateFinalFieldAndSetter2;
main() {}
@topLevelMethod
test() {}
throws(dynamic Function() f) {}
var field = topLevelMethod;
var result;
void set topLevelDuplicateFieldAndDuplicateSetter(int value) {}
void set topLevelDuplicateFieldAndDuplicateSetter(int value) {}
void set topLevelDuplicateFieldAndSetter(int value) {}
void set topLevelFieldAndDuplicateSetter(int value) {}
void set topLevelFieldAndDuplicateSetter(int value) {}
void set topLevelFieldAndSetter1(int value) {}
void set topLevelFieldAndSetter2(int value) {}
void set topLevelLateFinalFieldAndSetter1(int value) {}
void set topLevelLateFinalFieldAndSetter2(int value) {}
void set topLevelMethodAndSetter1(int value) {}
void set topLevelMethodAndSetter2(int value) {}
void set topLevelSetter(value) {}
void set topLevelSetter(value) {}
