public class MyStackClass extends MyStackWithCount { //inner class to glom on the componenet. abstract class LockBase extends LockAPPC.LockComponent { public void expected_pushOp(Object passed) { expected_pushOn(passed); } public Object expected_popOp() { return expected_popOff(); } public Object get_host() { return MyStackWithCount.this; } public Object actual_popOp() {return expected_popOff();} } LockBase s1 = new LockBase() { public void actual_pushOp(Object passed) { expected_pushOn(passed); } }; LockBase s2 = new LockBase() { public void actual_pushOp(Object passed) { expected_pushTwice(passed); } }; public void expected_pushOn(Object passed) { super.pushOn2(passed); } public void expected_pushTwice(Object passed) { super.pushTwice2(passed); } public Object expected_popOff() { return super.popOff2(); } // overridden new methods public void pushOn(Object passed) { s1.pushOp(passed); } public void pushTwice(Object passed) { s2.pushOp(passed); } public Object popOff() { return s1.popOp(); } static public void main(String argv[]) { MyStackClass stack1 = new MyStackClass(); MyStackClass stack2 = new MyStackClass(); stack1.pushOn(new Integer(5)); stack2.pushOn(new Integer(2)); stack2.pushTwice(new Integer(2)); Integer number1 = (Integer)stack1.popOff(); Integer number2 = (Integer)stack2.popOff(); Integer number3 = (Integer)stack2.popOff(); Integer number4 = (Integer)stack2.popOff(); System.out.println(number1 + " " + number4); } }