```\\nfunction _createLock(\\n    uint128 lockId,\\n    address tokenAddress,\\n    uint256 amount,\\n    bytes32 recipient,\\n    bytes4 destination\\n) private returns (uint256, uint256, TokenInfo memory) {\\n    require(amount > 0, "Bridge: amount is 0");\\n    TokenInfo memory tokenInfo = tokenInfos[tokenAddress];\\n    require(\\n        tokenInfo.tokenSourceAddress != bytes32(0),\\n        "Bridge: unsupported token"\\n    );\\n\\n    uint256 fee = FeeOracle(feeOracle).fee(tokenAddress, msg.sender, amount, destination);\\n\\n    require(amount > fee, "Bridge: amount too small");\\n\\n    // Amount to lock is amount without fee\\n    uint256 amountToLock = amount - fee;\\n\\n    // Create and add lock structure to the locks list\\n    IValidator(validator).createLock(\\n        lockId,\\n        msg.sender,\\n        recipient,\\n        toSystemPrecision(amountToLock, tokenInfo.precision),\\n        destination,\\n        tokenInfo.tokenSource,\\n        tokenInfo.tokenSourceAddress\\n    );\\n\\n    emit Sent(\\n        tokenInfo.tokenSource,\\n        tokenInfo.tokenSourceAddress,\\n        msg.sender,\\n        recipient,\\n        amountToLock,\\n        lockId,\\n        destination\\n    );\\n    return (amountToLock, fee, tokenInfo);\\n}\\n```\\n