+ // FEATURE: Remove these - they are just here to be compatible with the old api
+ public final static MethodRef methodRef(Type.Object c, String name, Type ret, Type[] args) {
+ return new MethodRef(c,name,ret,args);
+ }
+ public final static FieldRef fieldRef(Type.Object c, String name, Type type) {
+ return new FieldRef(c,name,type);
+ }
+
+ public static class NameAndType {
+ String name;
+ String type;
+ NameAndType(String name, String type) { this.name = name; this.type = type; }
+ public boolean equals(Object o_) {
+ if(!(o_ instanceof NameAndType)) return false;
+ NameAndType o = (NameAndType) o_;
+ return o.name.equals(name) && o.type.equals(type);
+ }
+ public int hashCode() { return name.hashCode() ^ type.hashCode(); }
+ }
+
+ public static abstract class FieldMethodRef {
+ Type.Object klass;
+ NameAndType nameAndType;
+ FieldMethodRef(Type.Object klass, NameAndType nameAndType) { this.klass = klass; this.nameAndType = nameAndType; }
+ public boolean equals(Object o_) {
+ if(!(o_ instanceof FieldMethodRef)) return false;
+ FieldMethodRef o = (FieldMethodRef) o_;
+ return o.klass.equals(klass) && o.nameAndType.equals(nameAndType);
+ }
+ public int hashCode() { return klass.hashCode() ^ nameAndType.hashCode(); }
+ }
+
+ public static class InterfaceMethodRef extends FieldMethodRef {
+ public InterfaceMethodRef(MethodRef r) { super(r.klass,r.nameAndType); }
+ public InterfaceMethodRef(Type.Object c, NameAndType t) { super(c,t); }
+ }
+