Function dmd.statementsem.makeTupleForeach
Type check and unroll foreach over an expression tuple as well
 as static foreach statements and static foreach
 declarations. For static foreach statements and `static
 foreach` declarations, the visitor interface is used (and the
 result is written into the result field.) For `static
 foreach` declarations, the resulting Dsymbols* are returned
 directly.
						
				dmd
				  dmd
				  bool isStatic,
				
				  bool isDecl,
				
				  ForeachStatement fs,
				
				  dmd
				  bool needExpansion
				
				);
						
					
				The unrolled body is wrapped into a
  - UnrolledLoopStatement, for foreach over an expression tuple.
  - ForwardingStatement, for static foreach statements.
  - ForwardingAttribDeclaration, for static foreach declarations.
 static foreach variables are declared as STC, such
 that they are inserted into the local symbol tables of the
 forwarding constructs instead of forwarded. For `static
 foreach` with multiple foreach loop variables whose aggregate
 has been lowered into a sequence of tuples, this function
 expands the tuples into multiple STC static foreach
 variables.