--- /dev/null
+package a.b.c;
+import java.lang.annotation.*;
+
+@Retention(RetentionPolicy.RUNTIME)
+public @interface RelatedType {
+ Class<?> value();
+}
--- /dev/null
+package a.b.c;
+
+@RelatedType(value=Vote._.choice.class)
+public class Runner {
+ public static void main(String[]argv) {
+ Vote._ v = new Vote._("wibble");
+ System.out.println(v.getString());
+ System.out.println(Runner.class.getDeclaredAnnotations()[0]);
+ }
+}
+
--- /dev/null
+package a.b.c;
+
+public aspect Underscorer {
+ public int Vote.i = 5;
+ public String Vote.zzz() { return "abc"; }
+ public static class Vote._ {
+ private String string;
+ public static class choice {}
+ public Ip ip = new Ip();
+ public _(String string) { this.string = string; }
+ public String getString() { return this.string; }
+ public class Ip {
+ public String fieldName() { return "ip"; }
+ public Class<Vote> type() { return Vote.class; }
+ }
+ }
+}
--- /dev/null
+package a.b.c;
+
+public class Vote {
+
+ public static Vote._ _() { return new Vote._(null); }
+
+ static class RealInner {}
+
+}
--- /dev/null
+package a.b.c;
+
+public class Vote {
+
+ public static Vote._ _() { return new Vote._(null); }
+
+
+ static class RealInner {}
+
+}
--- /dev/null
+aspect Aspect1 {
+ public static class Vote._ {
+ private String s;
+ public _() {s="abc";}
+ public _(String string) {s=string;}
+ }
+}
--- /dev/null
+aspect Aspect2 {
+ public Vote._ _() { return new Vote._("abc"); }
+}
--- /dev/null
+public class Vote {
+ public static void main(String []argv) {
+ _ o = new Vote._();
+ _ y = new _("abc");
+ }
+}
--- /dev/null
+aspect Aspect1 {
+ public static class Vote._ {
+ private String s;
+ public _() {s="abc";}
+ public _(String string) {s=string;}
+ }
+}
--- /dev/null
+aspect Aspect2 {
+ public Vote._ _() { return new Vote._("abc"); }
+}
--- /dev/null
+public class Vote {
+}