Ruby (1.9.3p0 to be precise, installed with RVM) is not behaving as I
expected.

    >> foo = Hash.new( Hash.new )
    => {}
    >> foo[3][2] = true
    => true
    >> foo
    => {}
    >> foo[3]
    => {2=>true}
    >> foo[2]
    => {2=>true}
    >> foo
    => {}
    >>

What I would expect would be something more like this:

    >> foo = Hash.new( Hash.new )
    => {}
    >> foo[3][2] = true
    => true
    >> foo
    => {3=>{2=>true}}
    >> foo[3]
    => {2=>true}
    >> foo[2]
    => {}
    >> foo
    => {3=>{2=>true}}
    >>

Where and why do my assumptions fail me?