...Note: Pre-transfer hook can re-enter buyCollateral with a stale collateral ERC20 balance.
// This is a problem if quoteCollateral derives its discount from the collateral ERC20 balance.
withdrawCollateral(address(this), recipient, asset, safe128(collateralAmount));
...
...act KittyBase is KittyAccessControl
contract KittyOwnership is KittyBase, ERC721
contract KittyBreeding is KittyOwnership
contract KittyAuction is KittyBreeding
contract KittyMinting is KittyAuction
contract KittyCore is KittyMinting
```
所以`KittyCore`最终是应用程序指向的合约...