contract UpgradedStandardToken is ERC20 {
    // those methods are called by the legacy contract
    // and they must ensure msg.sender to be the contract address
    function transferByLegacy(address from, address to, uint256 value) public returns (bool);
    function transferFromByLegacy(address sender, address from, address to, uint256 value) public returns (bool);
    function approveByLegacy(address owner, address spender, uint256 value) public returns (bool);
    function increaseAllowanceByLegacy(address owner, address spender, uint256 addedValue) public returns (bool);
    function decreaseAllowanceByLegacy(address owner, address spender, uint256 subtractedValue) public returns (bool);
}
function transferByLegacy(address from, address to, uint256 value) public returns (bool);

// those methods are called by the legacy contract
// and they must ensure msg.sender to be the contract address