internal void Transfer(string label)
{
AssertNotFinished();
if (String.IsNullOrEmpty(label))
throw new ArgumentNullException("label");
var statement = FindInTree(Statement, label);
if (statement == null)
throw new StatementException(String.Format("Could not find any block labeled '{0}' in the execution tree.", label));
var block = NewBlock(statement);
statement.Execute(block);
if (block.HasResult)
SetResult(block.Result);
}