Sinatraのソース見てて気がついたんだけど

def foo(opt1 = {}, opt2 = {})
end

foo(:a => 10, :b => 20)

こう書くと、opt2じゃなくてopt1にオプションが入るんだな
今まで末尾のHash引数に入るものだとばかり思ってた
どういう仕組みになってるんだろう