Exception is thrown by getIntegration in certain cases.
I don't remember the exact details of the changelist that caused this, but it was something like "file was brached from a depot that was obliterated" or something like that.
I only hit exceptions on two calls to getIntegration(): the call from the bottom of P4Source.getChange() and the first call at the top of P4Target.moveAdd().
For the case in getChange(), I changed that line to read:
if chRev.action == 'move/add' and chRev.hasIntegrations()
For the case in moveAdd(), I changed the line to call file.hasIntegrations instead of file.getIntegration() when checking whether it has any:
if file.getIntegration() and file.getIntegration().localFile: