I think the interpretation of `s` and `t` were flipped. I didn't notice the optional issue until Eric pointed it out. It could be a good idea to swap the order of `s` and `t` like Eric suggested. I didn't do it to avoid changing this function's callsites, but I could make that change.