updateCommitmentBorrowers does not delete all existing users
The lender can update the list of borrowers by calling `LenderCommitmentForwarder.updateCommitmentBorrowers`. The list of borrowers is EnumerableSetUpgradeable.AddressSet that is a complex structure containing mapping. Using the `delete` keyword to `delete` this structure will not erase the mapping inside it. Let's look at the code of this function.\\n```\\nmapping(uint256 => EnumerableSetUpgradeable.AddressSet)\\n        internal commitmentBorrowersList;\\n        \\nfunction updateCommitmentBorrowers(\\n        uint256 _commitmentId,\\n        address[] calldata _borrowerAddressList\\n    ) public commitmentLender(_commitmentId) {\\n        delete commitmentBorrowersList[_commitmentId];\\n        _addBorrowersToCommitmentAllowlist(_commitmentId, _borrowerAddressList);\\n    }\\n```\\n\\nI wrote a similar function to prove the problem.\\n```\\nusing EnumerableSet for EnumerableSet.AddressSet;\\n    mapping(uint256 => EnumerableSet.AddressSet) internal users;\\n    \\n    function test_deleteEnumerableSet() public {\\n        uint256 id = 1;\\n        address[] memory newUsers = new address[](2);\\n        newUsers[0] = address(0x1);\\n        newUsers[1] = address(0x2);\\n\\n        for (uint256 i = 0; i < newUsers.length; i++) {\\n            users[id].add(newUsers[i]);\\n        }\\n        delete users[id];\\n        newUsers[0] = address(0x3);\\n        newUsers[1] = address(0x4);\\n        for (uint256 i = 0; i < newUsers.length; i++) {\\n            users[id].add(newUsers[i]);\\n        }\\n        bool exist = users[id].contains(address(0x1));\\n        if(exist) {\\n            emit log_string("address(0x1) exist");\\n        }\\n        exist = users[id].contains(address(0x2));\\n        if(exist) {\\n            emit log_string("address(0x2) exist");\\n        }\\n    }\\n/*\\n[PASS] test_deleteEnumerableSet() (gas: 174783)\\nLogs:\\n  address(0x1) exist\\n  address(0x2) exist\\n*/\\n```\\n
In order to clean an `EnumerableSet`, you can either remove all elements one by one or create a fresh instance using an array of `EnumerableSet`.
The deleted Users can still successfully call `LenderCommitmentForwarder.acceptCommitment` to get a loan.
```\\nmapping(uint256 => EnumerableSetUpgradeable.AddressSet)\\n        internal commitmentBorrowersList;\\n        \\nfunction updateCommitmentBorrowers(\\n        uint256 _commitmentId,\\n        address[] calldata _borrowerAddressList\\n    ) public commitmentLender(_commitmentId) {\\n        delete commitmentBorrowersList[_commitmentId];\\n        _addBorrowersToCommitmentAllowlist(_commitmentId, _borrowerAddressList);\\n    }\\n```\\n