public override void Visit(BlockExpression expression)
{
Block newblock = new Block(null, this.block);
// TODO Review is the copy of argument and local names is needed
foreach (var parname in this.block.ParameterNames)
newblock.CompileArgument(parname);
foreach (var locname in this.block.LocalNames)
newblock.CompileLocal(locname);
if (expression.ParameterNames != null)
foreach (var parname in expression.ParameterNames)
newblock.CompileArgument(parname);
if (expression.LocalVariables != null)
foreach (var locname in expression.LocalVariables)
newblock.CompileLocal(locname);
var compiler = new BytecodeCompiler(newblock);
compiler.Visit(expression.Body);
this.block.CompileGetBlock(newblock);
}