When I'm porting, I just use the code of the original version with the mappings for the one I'm porting to and I look in the classes the missing methods are calling for similar signatures with similar names. I imagine this is harder for backporting and even harder for large version differences.