 
     # The method `toSeq` returns the triangles contained in the triangulation
     # as a lazy sequence.
-    toSeq: -> @triangles__.toSeq()
+    memo @, 'toSeq', -> @triangles__.toSeq()
 
     # The method `third` finds the unique third vertex forming a triangle with
     # the two given ones in the given orientation, if any.

class PointAtInfinity
  constructor: (@x, @y) ->
  isInfinite: -> true
  toString:   -> "inf(#{@x}, #{@y})"
  equals: (p) -> @constructor == p.constructor and @x == p.x and @y == p.y


# ----

      @sites__         = args[1] || new HashSet()
      @children__      = args[2] || new HashMap()

    # The method `toSeq` returns the proper (non-virtual) triangles contained
    # in this triangulation as a lazy sequence. It does so by removing any
    # triangles from the underlying triangulation object which contain a
    # virtual vertex.
    memo @, 'toSeq', -> seq.select @triangulation__, (t) ->
      seq.forall t, (p) -> not p.isInfinite()

    # The method `third` finds the unique third vertex forming a triangle with
    # the two given ones in the given orientation, if any.
