public LNodeList EliminateSequenceExpressions(LNodeList stmts, bool isDeclContext)
 {
     return(stmts.SmartSelectMany(stmt => {
         /*
          * // Optimization: scan find out whether this construct has any block
          * // expressions. If not, skip it.
          * hasBlockExprs = false;
          * stmt.ReplaceRecursive(new Func<LNode, Maybe<LNode>>(n => {
          *      if (!hasBlockExprs)
          *              hasBlockExprs = n.IsCall && (
          *                      (n.Calls(S.ColonColon, 2) && n.Args[1].IsId) ||
          *                      (n.Calls(S.Var, 2) && n.AttrNamed(S.Out) != null) ||
          *                      (n.Calls(S.In, 2) && n.Args[1].Calls(S.Braces)));
          *      return hasBlockExprs ? n : null;
          * }));
          * if (!hasBlockExprs)
          *      return stmt;
          */
         LNode result = EliminateSequenceExpressions(stmt, isDeclContext);
         if (result != stmt)
         {
             if (result.Calls(sy__numrunSequence))
             {
                 return result.Args;
             }
         }
         _arrayOf1[0] = result;
         return _arrayOf1;
     }));
 }