diff --git a/src/libraries/stdlib/transitioning.ml b/src/libraries/stdlib/transitioning.ml
index ba4203fb98deeb9b1d4b1fe8753fd8564e52cc6b..eaab4f83716a602c1422965b389f73ba6f4935f6 100644
--- a/src/libraries/stdlib/transitioning.ml
+++ b/src/libraries/stdlib/transitioning.ml
@@ -62,17 +62,10 @@ module Seq = struct
     | Nil -> ys ()
     | Cons (x, xt) -> Cons (x, append xt ys)
 
-  let take n xs =
-    if n < 0 then invalid_arg "Seq.take";
-    let rec aux n xs =
-      if n = 0
-      then empty
-      else fun () ->
-        match xs () with
-        | Nil -> Nil
-        | Cons (x, xs) -> Cons (x, aux (n-1) xs)
-    in
-    aux n xs
+  let is_empty xs =
+    match xs () with
+    | Nil -> true
+    | Cons _ -> false
 
   let drop n xs =
     if n < 0
diff --git a/src/libraries/stdlib/transitioning.mli b/src/libraries/stdlib/transitioning.mli
index eff4a5548f621e20e40a606d6cfaaacf557a619f..d33ebe8091fff51daf6012c20c3251f5855eb5ef 100644
--- a/src/libraries/stdlib/transitioning.mli
+++ b/src/libraries/stdlib/transitioning.mli
@@ -46,6 +46,9 @@ end
 module Seq: sig
   open Stdlib.Seq
 
+  (** since 4.14.0 *)
+  val is_empty: 'a t -> bool
+
   (** since 4.14.0 *)
   val mapi: (int -> 'a -> 'b) -> 'a t -> 'b t
 
@@ -55,9 +58,6 @@ module Seq: sig
   (** since 4.11.0 *)
   val append : 'a t -> 'a t -> 'a t
 
-  (** since 4.14.0 *)
-  val take : int -> 'a t -> 'a t
-
   (** since 4.14.0 *)
   val drop : int -> 'a t -> 'a t
 end
diff --git a/src/plugins/dive/build.ml b/src/plugins/dive/build.ml
index 993c989e2d446545caec4aa8b57676cb655abb22..2bb9dbb53a750d62a6e21d03490c8044ca57f18f 100644
--- a/src/plugins/dive/build.ml
+++ b/src/plugins/dive/build.ml
@@ -183,10 +183,9 @@ let build_node_kind ~is_folded_base lval kinstr =
     (* Build a scalar node even if kinstr is dead *)
     Scalar (vi, Cil.typeOfLval lval, offset)
   | Mem _, _ ->
-    match
-      enumerate_cells ~is_folded_base lval kinstr |> Seq.take 2 |> List.of_seq
-    with
-    | [node_kind] -> node_kind
+    let cells_seq = enumerate_cells ~is_folded_base lval kinstr in
+    match cells_seq () with
+    | Seq.Cons (node_kind, seq) when Seq.is_empty seq -> node_kind
     | _ -> Scattered (lval, kinstr)
 
 let default_node_locality callstack =