This is the scrolled contents
This is the scrolled contents
(GraphicsLayer
  (anchor 0.00 0.00)
  (bounds 800.00 600.00)
  (clips 1)
  (children 1
    (GraphicsLayer
      (bounds 800.00 600.00)
      (contentsOpaque 1)
      (children 2
        (GraphicsLayer
          (offsetFromRenderer width=-14 height=-14)
          (position 14.00 6.00)
          (bounds 408.00 288.00)
          (children 2
            (GraphicsLayer
              (offsetFromRenderer width=30 height=30)
              (position 44.00 44.00)
              (bounds 320.00 200.00)
              (clips 1)
              (children 1
                (GraphicsLayer
                  (position 10.00 10.00)
                  (bounds 300.00 1000.00)
                  (contentsOpaque 1)
                  (drawsContent 1)
                )
              )
            )
            (GraphicsLayer
              (position 44.00 44.00)
              (bounds 320.00 200.00)
              (clips 1)
              (children 1
                (GraphicsLayer
                  (position 305.00 0.00)
                  (bounds 15.00 200.00)
                  (drawsContent 1)
                )
              )
            )
          )
        )
        (GraphicsLayer
          (offsetFromRenderer width=-14 height=-14)
          (position 14.00 286.00)
          (bounds 408.00 288.00)
          (drawsContent 1)
          (children 2
            (GraphicsLayer
              (offsetFromRenderer width=30 height=30)
              (position 44.00 44.00)
              (bounds 320.00 200.00)
              (clips 1)
              (children 1
                (GraphicsLayer
                  (position 10.00 10.00)
                  (bounds 300.00 1000.00)
                  (contentsOpaque 1)
                  (drawsContent 1)
                )
              )
            )
            (GraphicsLayer
              (position 44.00 44.00)
              (bounds 320.00 200.00)
              (clips 1)
              (children 1
                (GraphicsLayer
                  (position 305.00 0.00)
                  (bounds 15.00 200.00)
                  (drawsContent 1)
                )
              )
            )
          )
        )
      )
    )
  )
)

