 
 class Node
   constructor: (@children) ->
+    @ids = new Set
     @extent = Point.zero()
     for child in @children
       @extent = @extent.traverse(child.extent)
+      child.ids.forEach (id) => @ids.add(id)
 
   insert: (id, start, end) ->
     # Insert the given id into all children that intersect the given range.

    indent = ""
    indent += " " for i in [0...indentLevel] by 1

    """
      #{indent}Node #{@extent}
      #{@children.map((c) -> c.toString(indentLevel + 2)).join("\n")}
    """


    return

  getEnd: (id) ->
    return unless @ids.has(id)
    childStart = Point.zero()
    for child in @children
      if endRelativeToChild = child.getEnd(id)
