--- /dev/null
+package concrete;
+
+public interface Cement {
+ public int getWeight();
+}
--- /dev/null
+package concrete;
+
+import java.util.Vector;
+
+public class ConcreteClass extends SuperClass<WetCement> {
+
+ @Override
+ public Vector<WetCement> getSomeTs() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public void addSomeTs(Vector<WetCement> newTs) {
+ // TODO Auto-generated method stub
+ someTs.addAll(newTs);
+ }
+
+}
--- /dev/null
+package concrete;
+
+import java.util.*;
+
+public class Main {
+ public static void main(String[] args) {
+ ConcreteClass cc = new ConcreteClass();
+ WetCement wc = new WetCement();
+ Vector<WetCement> v = new Vector<WetCement>();
+ v.add(wc);
+ cc.addSomeTs(v);
+ System.out.println("ran!");
+ }
+}
\ No newline at end of file
--- /dev/null
+package concrete;
+import java.util.Vector;
+
+public abstract class SuperClass<T extends Cement> {
+ Vector<T> someTs = new Vector<T>();
+ public abstract Vector<T> getSomeTs();
+ public abstract void addSomeTs(Vector<T> newTs);
+}
--- /dev/null
+package concrete;
+
+import java.util.Vector;
+
+
+public aspect SuperClassAspect {
+ declare parents : WetCement implements Cement;
+
+ after(SuperClass sc, Vector cm) returning: execution(void SuperClass.addSomeTs(Vector)) && target(sc) && args(cm) {
+ // System.out.println(cm);
+ }
+}
--- /dev/null
+package concrete;
+
+public class WetCement {
+ boolean wet = true;
+ public int getWeight() { return 5; }
+}