This tests if changing the clipping behaviour on the parent compositing layer makes the child layer disappear.

Text in both of the green boxes should stay visible.

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
(GraphicsLayer
  (bounds 800.00 600.00)
  (visible rect 0.00, 0.00 800.00 x 600.00)
  (contentsScale 1.00)
  (children 1
    (GraphicsLayer
      (bounds 800.00 600.00)
      (contentsOpaque 1)
      (visible rect 0.00, 0.00 800.00 x 600.00)
      (contentsScale 1.00)
      (children 6
        (GraphicsLayer
          (position 8.00 96.00)
          (bounds 22.00 22.00)
          (drawsContent 1)
          (visible rect 0.00, 0.00 22.00 x 22.00)
          (contentsScale 1.00)
        )
        (GraphicsLayer
          (position 8.00 138.00)
          (bounds 22.00 22.00)
          (drawsContent 1)
          (visible rect 0.00, 0.00 22.00 x 22.00)
          (contentsScale 1.00)
        )
        (GraphicsLayer
          (position 8.00 86.00)
          (bounds 102.00 20.00)
          (drawsContent 1)
          (visible rect 0.00, 0.00 102.00 x 20.00)
          (contentsScale 1.00)
        )
        (GraphicsLayer
          (position 9.00 87.00)
          (bounds 100.00 18.00)
          (visible rect 0.00, 0.00 100.00 x 18.00)
          (contentsScale 1.00)
          (children 1
            (GraphicsLayer
              (bounds 100.00 18.00)
              (drawsContent 1)
              (visible rect 0.00, 0.00 100.00 x 18.00)
              (contentsScale 1.00)
            )
          )
        )
        (GraphicsLayer
          (position 8.00 128.00)
          (bounds 102.00 20.00)
          (drawsContent 1)
          (visible rect 0.00, 0.00 102.00 x 20.00)
          (contentsScale 1.00)
        )
        (GraphicsLayer
          (position 9.00 129.00)
          (bounds 778.00 18.00)
          (drawsContent 1)
          (visible rect 0.00, 0.00 778.00 x 18.00)
          (contentsScale 1.00)
        )
      )
    )
  )
)

