The yellow box should be 500 x 500 on startup. Then it should stretch to be 500 x 5000, then shrink back down to 500 x 500. This tests that we can resize to a huge layer and back again and still maintain integrity of the layer tree.

First (small layer):
(GraphicsLayer
  (anchor 0.00 0.00)
  (bounds 800.00 614.00)
  (children 1
    (GraphicsLayer
      (bounds 800.00 614.00)
      (contentsOpaque 1)
      (children 1
        (GraphicsLayer
          (position 8.00 72.00)
          (bounds 502.00 502.00)
          (contentsOpaque 1)
          (drawsContent 1)
          (children 2
            (GraphicsLayer
              (position 51.00 101.00)
              (bounds 200.00 200.00)
              (contentsOpaque 1)
            )
            (GraphicsLayer
              (position 276.00 201.00)
              (bounds 200.00 200.00)
              (contentsOpaque 1)
            )
          )
        )
      )
    )
  )
)


Second (huge layer):
(GraphicsLayer
  (anchor 0.00 0.00)
  (bounds 800.00 5114.00)
  (children 1
    (GraphicsLayer
      (bounds 800.00 5114.00)
      (contentsOpaque 1)
      (children 1
        (GraphicsLayer
          (position 8.00 72.00)
          (bounds 502.00 5002.00)
          (usingTiledLayer 1)
          (contentsOpaque 1)
          (drawsContent 1)
          (children 2
            (GraphicsLayer
              (position 51.00 101.00)
              (bounds 200.00 200.00)
              (contentsOpaque 1)
            )
            (GraphicsLayer
              (position 276.00 4701.00)
              (bounds 200.00 200.00)
              (contentsOpaque 1)
            )
          )
        )
      )
    )
  )
)


Third (small layer):
(GraphicsLayer
  (anchor 0.00 0.00)
  (bounds 800.00 614.00)
  (children 1
    (GraphicsLayer
      (bounds 800.00 614.00)
      (contentsOpaque 1)
      (children 1
        (GraphicsLayer
          (position 8.00 72.00)
          (bounds 502.00 502.00)
          (contentsOpaque 1)
          (drawsContent 1)
          (children 2
            (GraphicsLayer
              (position 51.00 101.00)
              (bounds 200.00 200.00)
              (contentsOpaque 1)
            )
            (GraphicsLayer
              (position 276.00 201.00)
              (bounds 200.00 200.00)
              (contentsOpaque 1)
            )
          )
        )
      )
    )
  )
)

