//[a1a
public class Q2
{

    public static void tryToSwap(PhoneNumber a, PhoneNumber b)
    {
	PhoneNumber    temp;
//]a1a
//[a2
	System.out.printf("\nStart of tryToSwap\n");
	System.out.printf("a   : %d\n", MemoryTracker.addressOf(a));
	System.out.printf("b   : %d\n", MemoryTracker.addressOf(b));
//]a2
//[a1b
	temp = a;
	a = b;
	b = temp;
//]a1b
//[a3
	System.out.printf("\nEnd of tryToSwap\n");
	System.out.printf("a   : %d\n", MemoryTracker.addressOf(a));
	System.out.printf("b   : %d\n", MemoryTracker.addressOf(b));
//]a3
//[a1c
    }


    public static void main(String[] args)
    {
	PhoneNumber          ahPhone, dbPhone, nhPhone;

	ahPhone = new PhoneNumber(540,568,2774);
	dbPhone = new PhoneNumber(540,568,1671);
	nhPhone = new PhoneNumber(540,568,8771);
//]a1c
//[a4
	System.out.printf("\nInitialization\n");
	System.out.printf("ahPhone  : %d\n", MemoryTracker.addressOf(ahPhone));
	System.out.printf("dbPhone  : %d\n", MemoryTracker.addressOf(dbPhone));
	System.out.printf("nhPhone  : %d\n", MemoryTracker.addressOf(nhPhone));
//]a4
//[a5a
	tryToSwap(ahPhone, dbPhone);
//]a5a
//[a6
	System.out.printf("\nAfter call to tryToSwap\n");
	System.out.printf("ahPhone  : %d\n", MemoryTracker.addressOf(ahPhone));
	System.out.printf("dbPhone  : %d\n", MemoryTracker.addressOf(dbPhone));
	System.out.printf("nhPhone  : %d\n", MemoryTracker.addressOf(nhPhone));
//]a6
//[a5b
    }

}
//]a5b
