           if m() == Empty
             asTree r
           else
-            new Deep m().first().asDigit(), (=> m().rest()), r
+            new Deep m().first().asDigit(), suspend(=> m().rest()), r
         else
           new Deep l, m, r
 

      asTree = (s) -> s.reduceLeft Empty, (a, b) -> a.before b
      asSeq  = (s) -> s.reduceRight ((a, b) -> Sequence.conj a, -> b), null

      constructor: (@l, m, @r) -> @m = -> val = m(); (@m = -> val)()

      isEmpty: -> false


          if m() == Empty
            asTree l
          else
            new Deep l, suspend(=> m().init()), m().last().asDigit()
        else
          new Deep l, m, r

