Index: src/tests/.expect/references.txt
===================================================================
--- src/tests/.expect/references.txt	(revision 8ad653339f39e704e4be3cbd354de857c44a52f4)
+++ src/tests/.expect/references.txt	(revision 43c6fe7754328f68f45ca7e7c1e7c6820b3b6867)
@@ -4,4 +4,8 @@
 13 1 12
 14 14
+x = 6 ; x2 = 789
+x = 6 ; x2 = 999
+x = 12345 ; x2 = 999
+x = 22222 ; x2 = 999
 Default constructing a Y
 Copy constructing a Y
Index: src/tests/operators.c
===================================================================
--- src/tests/operators.c	(revision 8ad653339f39e704e4be3cbd354de857c44a52f4)
+++ src/tests/operators.c	(revision 43c6fe7754328f68f45ca7e7c1e7c6820b3b6867)
@@ -27,6 +27,4 @@
 	a(b);
 	a + b;
-	struct accumulator ?+?;	// why not, eh?
-	a + b;
 }
 
Index: src/tests/references.c
===================================================================
--- src/tests/references.c	(revision 8ad653339f39e704e4be3cbd354de857c44a52f4)
+++ src/tests/references.c	(revision 43c6fe7754328f68f45ca7e7c1e7c6820b3b6867)
@@ -46,13 +46,9 @@
 
 int main() {
-	int x = 123456, *p1 = &x, **p2 = &p1, ***p3 = &p2,
+	int x = 123456, x2 = 789, *p1 = &x, **p2 = &p1, ***p3 = &p2,
 		&r1 = x,    &&r2 = r1,   &&&r3 = r2;
 	***p3 = 3;                          // change x
-	// ((int&)r3 = 3;                      // change x, ***r3
 	**p3 = &x;                          // change p1
-	// ((int*&)&r3) = &x;                  // change r1, (&*)**r3
 	*p3 = &p1;                          // change p2
-	// ((int**&)&&r3) = &p2;               // change r2, (&(&*)*)*r3
-	// ((int***&)&&&r3) = p3;              // change r3 to p3, (&(&(&*)*)*)r3
 	int y = 0, z = 11, & ar[3] = { x, y, z };    // initialize array of references
 	// &ar[1] = &z;                        // change reference array element
@@ -62,4 +58,6 @@
 	// sizeof( &ar[1] ) == sizeof( int *); // is true, i.e., the size of a reference
 
+	((int*&)&r3) = &x;                  // change r1, (&*)**r3
+	x = 3;
 	// test that basic reference properties are true - r1 should be an alias for x
 	printf("%d %d %d\n", x, r1, &x == &r1);
@@ -76,4 +74,16 @@
 	changeRef( r1 );
 	printf("%d %d\n", r1, x);
+
+	((int&)r3) = 6;                       // change x, ***r3
+	printf("x = %d ; x2 = %d\n", x, x2);  // check that x was changed
+	((int*&)&r3) = &x2;                   // change r1 to refer to x2, (&*)**r3
+	((int&)r3) = 999;                     // modify x2
+	printf("x = %d ; x2 = %d\n", x, x2);  // check that x2 was changed
+	((int**&)&&r3) = p2;                  // change r2, (&(&*)*)*r3
+	((int&)r3) = 12345;                   // modify x
+	printf("x = %d ; x2 = %d\n", x, x2);  // check that x was changed
+	((int***&)&&&r3) = p3;                // change r3 to p3, (&(&(&*)*)*)r3
+	((int&)r3) = 22222;                   // modify x
+	printf("x = %d ; x2 = %d\n", x, x2);  // check that x was changed
 
 	// test that reference members are not implicitly constructed/destructed/assigned
