This layer should not have backing store.
This layer should have backing store.
(GraphicsLayer
  (anchor 0.00 0.00)
  (bounds 800.00 600.00)
  (children 1
    (GraphicsLayer
      (bounds 800.00 600.00)
      (contentsOpaque 1)
      (children 2
        (GraphicsLayer
          (position 8.00 8.00)
          (bounds 342.00 182.00)
          (children 1
            (GraphicsLayer
              (offsetFromRenderer width=1 height=1)
              (position 1.00 1.00)
              (bounds 340.00 180.00)
              (children 1
                (GraphicsLayer
                  (position 30.00 50.00)
                  (bounds 100.00 100.00)
                  (contentsOpaque 1)
                )
              )
            )
          )
        )
        (GraphicsLayer
          (position 8.00 180.00)
          (bounds 342.00 182.00)
          (drawsContent 1)
          (children 1
            (GraphicsLayer
              (offsetFromRenderer width=1 height=1)
              (position 1.00 1.00)
              (bounds 340.00 180.00)
              (children 1
                (GraphicsLayer
                  (position 30.00 50.00)
                  (bounds 100.00 100.00)
                  (contentsOpaque 1)
                )
              )
            )
          )
        )
      )
    )
  )
)

