public override void HandleElement(Expression item)
 {
     if (IsElseBlock(item))
     {
         _accumulatedExpression = HandlebarsExpression.IteratorExpression(
             _startingNode.Arguments.Single(),
             Expression.Block(_body));
         _body = new List <Expression>();
     }
     else
     {
         _body.Add(item);
     }
 }
        public override bool IsClosingElement(Expression item)
        {
            if (!IsClosingNode(item))
            {
                return(false);
            }

            if (_accumulatedExpression == null)
            {
                _accumulatedExpression = HandlebarsExpression.IteratorExpression(
                    _startingNode.Arguments.Single(),
                    Expression.Block(_body));
            }
            else
            {
                _accumulatedExpression = HandlebarsExpression.IteratorExpression(
                    ((IteratorExpression)_accumulatedExpression).Sequence,
                    ((IteratorExpression)_accumulatedExpression).Template,
                    Expression.Block(_body));
            }
            return(true);
        }