Work around borrowck issues
Created by: NilSet
Early returns with lifetimes seem to confuse borrowck, so write down the location and move the return to the end. Can't move a lock while looking inside it, so do the work after all the inspection is done. Very hacky, should at least use an enum with some good names.