public class A { boolean scrub(B bparam) { if (bparam.foam(cvar)) blist.add(bparam); } private C cvar; private ArrayList blist; } public class B { public boolean foam(C cparam) { return cfield.equals(cparam); } private C cfield; } public class C { public boolean equals (C) { //... } private String name; } /***************** Let's draw a sequence diagram of scrub. make a table of the method calls in order. List the caller class and the callee class. Method caller class callee class ------ ------------ ------------ scrub (none) A foam A B Now make boxes and lifelines for the 4 classes. Add a labeled arrow for each row in the table, from the caller class's lifeline to the callee class's lifeline (label is method). Then add activation records to capture the duration of each method. ******************/