This layer should not be composited.
This layer should not be composited.
This layer should be composited.
(GraphicsLayer
  (anchor 0.00 0.00)
  (bounds 800.00 616.00)
  (children 1
    (GraphicsLayer
      (bounds 800.00 616.00)
      (contentsOpaque 1)
      (children 1
        (GraphicsLayer
          (position 18.00 394.00)
          (bounds 342.00 182.00)
          (preserves3D 1)
          (drawsContent 1)
          (children 1
            (GraphicsLayer
              (position 31.00 51.00)
              (bounds 100.00 100.00)
              (contentsOpaque 1)
              (transform [0.98 0.00 -0.17 0.00] [0.00 1.00 0.00 0.00] [0.17 0.00 0.98 0.00] [0.00 0.00 0.00 1.00])
            )
          )
        )
      )
    )
  )
)

