The yellow box should be large enough to scroll off the bottom. At the start there should be no child. After 100ms a red box is added and after 100ms more it should be removed. This tests that we can support very large compositing layers with dynamically added and removed child compositing layers.

First (no children):
(GraphicsLayer
  (bounds 785.00 5129.00)
  (children 1
    (GraphicsLayer
      (bounds 785.00 5129.00)
      (contentsOpaque 1)
      (children 1
        (GraphicsLayer
          (position 8.00 86.00)
          (bounds 502.00 5002.00)
          (usingTiledLayer 1)
          (contentsOpaque 1)
          (drawsContent 1)
        )
      )
    )
  )
)


Second (child added):
(GraphicsLayer
  (bounds 785.00 5129.00)
  (children 1
    (GraphicsLayer
      (bounds 785.00 5129.00)
      (contentsOpaque 1)
      (children 1
        (GraphicsLayer
          (position 8.00 86.00)
          (bounds 502.00 5002.00)
          (usingTiledLayer 1)
          (contentsOpaque 1)
          (drawsContent 1)
        )
      )
    )
  )
)


Third (child removed):
(GraphicsLayer
  (bounds 785.00 5129.00)
  (children 1
    (GraphicsLayer
      (bounds 785.00 5129.00)
      (contentsOpaque 1)
      (children 1
        (GraphicsLayer
          (position 8.00 86.00)
          (bounds 502.00 5002.00)
          (usingTiledLayer 1)
          (contentsOpaque 1)
          (drawsContent 1)
        )
      )
    )
  )
)

