pragma experimental ABIEncoderV2;

contract Test {

    struct testStruct {
        uint256 id;
        string name;
    }

    function good(bytes calldata x) external {}
    function good2() public {}
    function good3(uint256 x, uint256 y) public {}
    function good4(uint256[] calldata x, string calldata y) external {}
    function good5(testStruct calldata x) external {}
    function bad(bytes memory x) public {}
    function bad2(uint256[] memory x) public {}
    function bad3(testStruct memory x) public {}
    function bad4(string memory x) public {}
}