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
  (bounds 785.00 611.00)
  (children 1
    (GraphicsLayer
      (bounds 785.00 611.00)
      (contentsOpaque 1)
      (children 1
        (GraphicsLayer
          (position 8.00 68.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
  (bounds 785.00 5111.00)
  (children 1
    (GraphicsLayer
      (bounds 785.00 5111.00)
      (contentsOpaque 1)
      (children 1
        (GraphicsLayer
          (position 8.00 68.00)
          (bounds 502.00 5002.00)
          (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
  (bounds 785.00 611.00)
  (children 1
    (GraphicsLayer
      (bounds 785.00 611.00)
      (contentsOpaque 1)
      (children 1
        (GraphicsLayer
          (position 8.00 68.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)
            )
          )
        )
      )
    )
  )
)

