Min capture computation can already handle the same place appearing twice, and previous commits made CaptureInfo construction very cheap, so just delegate all work to min capture and let InferBorrowKind and process_collected_capture_information handle everything linearly.
For high-level intro to how type checking works in rustc, see the type checking chapter of the rustc dev guide.