private Expression AccumulateBlock(
     IEnumerator<object> enumerator, 
     BlockAccumulatorContext context)
 {
     while (enumerator.MoveNext())
     {
         var item = (Expression)enumerator.Current;
         var innerContext = BlockAccumulatorContext.Create(item, _configuration);
         if (innerContext != null)
         {
             context.HandleElement(AccumulateBlock(enumerator, innerContext));
         }
         else if (context.IsClosingElement(item))
         {
             return context.GetAccumulatedBlock();
         }
         else
         {
             context.HandleElement(item);
         }
     }
     throw new HandlebarsCompilerException("Reached end of template before block expression was closed");
 }
 private Expression AccumulateBlock(
     IEnumerator <object> enumerator,
     BlockAccumulatorContext context)
 {
     while (enumerator.MoveNext())
     {
         var item         = (Expression)enumerator.Current;
         var innerContext = BlockAccumulatorContext.Create(item, _configuration);
         if (innerContext != null)
         {
             context.HandleElement(AccumulateBlock(enumerator, innerContext));
         }
         else if (context.IsClosingElement(item))
         {
             return(context.GetAccumulatedBlock());
         }
         else
         {
             context.HandleElement(item);
         }
     }
     throw new HandlebarsCompilerException(
               $"Reached end of template before block expression '{context.Name}' was closed");
 }