layer at (0,0) size 800x600
  RenderView at (0,0) size 800x600
layer at (0,0) size 800x388
  RenderBlock {HTML} at (0,0) size 800x388
    RenderBody {BODY} at (32,32) size 736x324 [bgcolor=#CCCCCC]
layer at (143,32) size 514x146 clip at (144,33) size 497x144 scrollHeight 333
  RenderBlock {DIV} at (111,0) size 514x146 [bgcolor=#FFFFFF] [border: (1px solid #999999)]
    RenderBlock {P} at (17,17) size 465x80
      RenderText {#text} at (0,0) size 210x19
        text run at (0,0) width 210: "This page is to test the behavior of "
      RenderInline {CODE} at (0,0) size 136x16
        RenderText {#text} at (210,3) size 136x16
          text run at (210,3) width 136: "position:absolute"
      RenderText {#text} at (346,0) size 457x39
        text run at (346,0) width 111: " content which is a"
        text run at (0,20) width 251: "child of an overflowed parent object with "
      RenderInline {CODE} at (0,0) size 104x16
        RenderText {#text} at (251,23) size 104x16
          text run at (251,23) width 104: "overflow:auto"
      RenderText {#text} at (355,20) size 448x39
        text run at (355,20) width 93: ", both when the"
        text run at (0,40) width 105: "parent element is "
      RenderInline {CODE} at (0,0) size 120x16
        RenderText {#text} at (105,43) size 120x16
          text run at (105,43) width 120: "position:static"
      RenderText {#text} at (225,40) size 95x19
        text run at (225,40) width 95: " (top case) and "
      RenderInline {CODE} at (0,0) size 136x16
        RenderText {#text} at (320,43) size 136x16
          text run at (320,43) width 136: "position:relative"
      RenderText {#text} at (0,60) size 88x19
        text run at (0,60) width 88: "(bottom case)."
    RenderBlock {P} at (17,113) size 465x192 [color=#999999]
      RenderText {#text} at (0,0) size 465x191
        text run at (0,0) width 456: "Following extra content exists to ensure that the parent box overflows properly. Sed"
        text run at (0,16) width 449: "ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque"
        text run at (0,32) width 454: "laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi"
        text run at (0,48) width 433: "architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia"
        text run at (0,64) width 453: "voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos"
        text run at (0,80) width 462: "qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum"
        text run at (0,96) width 436: "quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi"
        text run at (0,112) width 454: "tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim"
        text run at (0,128) width 455: "ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam,"
        text run at (0,144) width 449: "nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit"
        text run at (0,160) width 465: "qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem"
        text run at (0,176) width 219: "eum fugiat quo voluptas nulla pariatur?"
layer at (0,0) size 38x36
  RenderBlock (positioned) {P} at (0,0) size 38x36 [bgcolor=#FF0000]
    RenderText {#text} at (8,8) size 22x19
      text run at (8,8) width 22: "hi 1"
layer at (143,210) size 514x146 clip at (144,211) size 497x144 scrollHeight 369
  RenderBlock (relative positioned) {DIV} at (111,178) size 514x146 [bgcolor=#FFFFFF] [border: (1px solid #999999)]
    RenderBlock {P} at (17,17) size 465x40
      RenderText {#text} at (0,0) size 465x39
        text run at (0,0) width 465: "Safari v1.2.2 incorrectly scrolls the 'hi 1' div when its parent is scrolled. If you"
        text run at (0,20) width 280: "resize the page even a little, this bug fixes itself."
    RenderBlock {P} at (17,73) size 465x60
      RenderText {#text} at (0,0) size 387x19
        text run at (0,0) width 387: "Safari v1.2.2 also (really odd) causes the entire second div to be"
      RenderInline {CODE} at (0,0) size 88x16
        RenderText {#text} at (0,23) size 88x16
          text run at (0,23) width 88: "opacity:0.5"
      RenderText {#text} at (88,20) size 462x39
        text run at (88,20) width 365: ", despite the fact that this property is only applied to the child"
        text run at (0,40) width 462: "item. This problem fixes itself if you resize the window and then scroll the div."
    RenderBlock {P} at (17,149) size 465x192 [color=#999999]
      RenderText {#text} at (0,0) size 465x191
        text run at (0,0) width 456: "Following extra content exists to ensure that the parent box overflows properly. Sed"
        text run at (0,16) width 449: "ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque"
        text run at (0,32) width 454: "laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi"
        text run at (0,48) width 433: "architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia"
        text run at (0,64) width 453: "voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos"
        text run at (0,80) width 462: "qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum"
        text run at (0,96) width 436: "quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi"
        text run at (0,112) width 454: "tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim"
        text run at (0,128) width 455: "ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam,"
        text run at (0,144) width 449: "nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit"
        text run at (0,160) width 465: "qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem"
        text run at (0,176) width 219: "eum fugiat quo voluptas nulla pariatur?"
layer at (144,211) size 38x36
  RenderBlock (positioned) {P} at (1,1) size 38x36 [bgcolor=#FF0000]
    RenderText {#text} at (8,8) size 22x19
      text run at (8,8) width 22: "hi 2"
