I am aware that a solidity library function marked as external will be deployed separately and called with delegatecall from the calling contract. Whereas a function marked as internal will just be inlined into the calling contract with no need to deploy the library separately. What happens if it is marked public?