import testlib.util.*;
public class StringPatternsUsage {
void requiresA(@PatternA String arg) {}
void requiresB(@PatternB String arg) {}
void requiresC(@PatternC String arg) {}
void requiresAB(@PatternAB String arg) {}
void requiresBC(@PatternBC String arg) {}
void requiresAC(@PatternAC String arg) {}
void requiresAny(String arg) {}
void m() {
String a = "A";
String b = "B";
String c = "C";
String d = "D";
String e = "";
requiresA(a);
//:: error: (argument.type.incompatible)
requiresB(a);
//:: error: (argument.type.incompatible)
requiresC(a);
requiresAB(a);
//:: error: (argument.type.incompatible)
requiresBC(a);
requiresAC(a);
requiresAny(a);
//:: error: (argument.type.incompatible)
requiresA(b);
requiresB(b);
//:: error: (argument.type.incompatible)
requiresC(b);
requiresAB(b);
requiresBC(b);
//:: error: (argument.type.incompatible)
requiresAC(b);
requiresAny(b);
//:: error: (argument.type.incompatible)
requiresA(c);
//:: error: (argument.type.incompatible)
requiresB(c);
requiresC(c);
//:: error: (argument.type.incompatible)
requiresAB(c);
requiresBC(c);
requiresAC(c);
requiresAny(c);
//:: error: (argument.type.incompatible)
requiresA(d);
//:: error: (argument.type.incompatible)
requiresB(d);
//:: error: (argument.type.incompatible)
requiresC(d);
//:: error: (argument.type.incompatible)
requiresAB(d);
//:: error: (argument.type.incompatible)
requiresBC(d);
//:: error: (argument.type.incompatible)
requiresAC(d);
requiresAny(d);
//:: error: (argument.type.incompatible)
requiresA(e);
//:: error: (argument.type.incompatible)
requiresB(e);
//:: error: (argument.type.incompatible)
requiresC(e);
//:: error: (argument.type.incompatible)
requiresAB(e);
//:: error: (argument.type.incompatible)
requiresBC(e);
//:: error: (argument.type.incompatible)
requiresAC(e);
requiresAny(e);
}
}