$c+
module test20_2 { deep nesting and non local variables
-- This is a completely meaningless program, meant to test codegen only.
-- Do not try to run the macc code, just generate it.  }
private
	integer i;
	tuple [procedure a( value integer aa; reference integer result)] lev0;
	procedure lev0@a
		tuple [procedure b(value integer bb; reference integer result)] lev1;
		procedure lev1@b
			tuple [procedure c(value integer cc; reference integer result)] lev2;
			procedure lev2@c
				tuple [procedure d(value integer dd; reference integer result)] lev3;
				procedure lev3@d
					tuple [procedure e(value integer ee; reference integer result)] lev4;
					procedure lev4@e
					begin
						lev0!a(aa, result); { great-great}
						lev1!b(bb, result); { great}
						lev2!c(cc, result); { grand}
						lev3!d(dd, result); { parent}
						lev4!e(ee, result); { recursive}
					end;
				begin
					lev4!e(dd, result); { child}
				end;
			begin
				 lev3!d(cc, result); { child}
			end;
		begin
			 lev2!c(bb, result); { child}
		end;
	begin
		lev1!b(aa, result); { child}
	end;
				
begin
 lev0!a(1, i);
end.
