We can use Proxy contract to update contracts.
For some advanced use cases like this one, we cannot use solidity directly so we are going to use assembly to forward our call to the implementation.
I will explain all the detail in the comment.