Index: src/InitTweak/InitTweak.cc
===================================================================
--- src/InitTweak/InitTweak.cc	(revision 5af7306aa8aedc45c7e1b675f42139b19edd2a7c)
+++ src/InitTweak/InitTweak.cc	(revision 42107b41a887b7888f179ea48e8f6e41ba1607d8)
@@ -529,10 +529,15 @@
 		}
 		if ( dynamic_cast< ReferenceType * >( dst->result ) ) {
-			dst = new AddressExpr( dst );
+			for (int depth = dst->result->referenceDepth(); depth > 0; depth--) {
+				dst = new AddressExpr( dst );
+			}
 		} else {
 			dst = new CastExpr( dst, new ReferenceType( noQualifiers, dst->result->clone() ) );
 		}
 		if ( dynamic_cast< ReferenceType * >( src->result ) ) {
-			src = new CastExpr( src, new ReferenceType( noQualifiers, src->result->stripReferences()->clone() ) );
+			for (int depth = src->result->referenceDepth(); depth > 0; depth--) {
+				src = new AddressExpr( src );
+			}
+			// src = new CastExpr( src, new ReferenceType( noQualifiers, src->result->stripReferences()->clone() ) );
 		}
 		return new ApplicationExpr( VariableExpr::functionPointer( assign ), { dst, src } );
