protected void Visit(KeywordExpression expression)
 {
     if (expression.Name.Text == keyword)
     {
         var list = new List<Statement>(containerStack);
         list.Reverse();
         if (ParentNode is ExpressionStatement)
             list.Add(ParentNode as ExpressionStatement);
         else
             parserResult.Error("{0} keyword detected, but outside of an ExpressionStatement. It is impossible to unroll the loop", expression.Span, keyword);
         
         scopeList.Add(list);
     }
 }
 private static KeywordExpression Clone(KeywordExpression expression)
 {
     return expression;
 }
 protected virtual void Visit(KeywordExpression keywordExpression)
 {
     // A discard will be transformed to 'return'
     if (keywordExpression.Name.Text == "discard")
     {
         WriteLinkLine(keywordExpression);
         WriteLine("context.Discard();");
     }
     else
     {
         base.Visit(keywordExpression);
     }
 }