d.push( obj3 );
d.push( obj4 );
assertNotNull( d.peek( 0 ) );
// for obj4, a copy should have been pushed
assertNotSame( obj4, d.peek( 0 ) );
assertEquals( obj4, d.peek( 0 ) );
// for obj3, replacement only occurs on pop
assertSame( obj3, d.peek( 1 ) );
assertSame( obj2, d.peek( 2 ) );
assertSame( obj1, d.peek( 3 ) );