collaboration UsePublisherSubscriber { cd {{ Point = . InterestedInPointChange = . Main = . }} classes {{ class Main { public static void main(String args[]) throws Exception { Point c = Point.parse(System.in); c.usedButNotDefined(ClassGraph); System.out.println("done"); } } }} {{ class Point { void set(...) {} } }} {{ class InterestedInPointChange { void public notifyChange() {} } }} subCollaborations collaboration PublisherSubscriber { cd {{ Publisher = Vector(Subscriber). Subscriber = . }} interfaces {{interface PublisherI { public void attach(Subscriber subsc); public void detach(Subscriber subsc); abstract void changeOp(...); public void replaced_changeOp(... Method expected_changeOp, ...) { expected_changeOp.invoke(thisObject, args); for (int i=0; i