{
  "fileName": "WithStructInConstructor.sol",
  "contractName": "WithStructInConstructor",
  "source": "pragma solidity ^0.6.10;\npragma experimental ABIEncoderV2;\n// SPDX-License-Identifier: MIT\n\ncontract WithStructInConstructor {\n\n  struct Data {\n    string foo;\n    string bar;\n    uint256 buz;\n  }\n\n  Data public localData;\n  address public sender;\n\n  constructor(Data memory _data) public {\n    localData.foo = _data.foo;\n    localData.bar = _data.bar;\n    localData.buz = _data.buz;\n    sender = msg.sender;\n  }\n\n  function foo() public view returns (string memory) {\n    return localData.foo;\n  }\n\n  function bar() public view returns (string memory) {\n    return localData.bar;\n  }\n\n  function buz() public view returns (uint256) {\n    return localData.buz;\n  }\n}\n",
  "sourcePath": "contracts/mocks/WithStructInConstructor.sol",
  "sourceMap": "92:574:26:-:0;;;251:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;311:5;:9;;;295;;;:13;;;:25;;;;;;;;;;;;;:::i;:::-;;342:5;:9;;;326;;;:13;;;:25;;;;;;;;;;;;;:::i;:::-;;373:5;:9;;;357;;;:13;;;:25;;;;;;;397:10;388:6;;:19;;;;;;;;;;;;;;;;;;251:161;;92:574;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6:444:-1:-;;;;119:3;112:4;104:6;100:17;96:27;89:35;86:2;;;137:1;134;127:12;86:2;167:6;161:13;189:65;204:49;246:6;204:49;;;189:65;;;180:74;;274:6;267:5;260:21;310:4;302:6;298:17;343:4;336:5;332:16;378:3;369:6;364:3;360:16;357:25;354:2;;;395:1;392;385:12;354:2;405:39;437:6;432:3;427;405:39;;;79:371;;;;;;;;;500:827;;622:4;610:9;605:3;601:19;597:30;594:2;;;640:1;637;630:12;594:2;658:20;673:4;658:20;;;649:29;;748:1;737:9;733:17;727:24;771:18;763:6;760:30;757:2;;;803:1;800;793:12;757:2;838:70;904:3;895:6;884:9;880:22;838:70;;;831:4;824:5;820:16;813:96;688:232;990:2;979:9;975:18;969:25;1014:18;1006:6;1003:30;1000:2;;;1046:1;1043;1036:12;1000:2;1081:70;1147:3;1138:6;1127:9;1123:22;1081:70;;;1074:4;1067:5;1063:16;1056:96;930:233;1212:2;1245:60;1301:3;1292:6;1281:9;1277:22;1245:60;;;1238:4;1231:5;1227:16;1220:86;1173:144;588:739;;;;;;1334:134;;1418:6;1412:13;1403:22;;1430:33;1457:5;1430:33;;;1397:71;;;;;;1475:386;;1612:2;1600:9;1591:7;1587:23;1583:32;1580:2;;;1628:1;1625;1618:12;1580:2;1684:1;1673:9;1669:17;1663:24;1707:18;1699:6;1696:30;1693:2;;;1739:1;1736;1729:12;1693:2;1759:86;1837:7;1828:6;1817:9;1813:22;1759:86;;;1749:96;;1642:209;1574:287;;;;;;1868:256;;1930:2;1924:9;1914:19;;1968:4;1960:6;1956:17;2067:6;2055:10;2052:22;2031:18;2019:10;2016:34;2013:62;2010:2;;;2088:1;2085;2078:12;2010:2;2108:10;2104:2;2097:22;1908:216;;;;;;2131:322;;2275:18;2267:6;2264:30;2261:2;;;2307:1;2304;2297:12;2261:2;2374:4;2370:9;2363:4;2355:6;2351:17;2347:33;2339:41;;2438:4;2432;2428:15;2420:23;;2198:255;;;;;2460:72;;2522:5;2511:16;;2505:27;;;;;2540:268;2605:1;2612:101;2626:6;2623:1;2620:13;2612:101;;;2702:1;2697:3;2693:11;2687:18;2683:1;2678:3;2674:11;2667:39;2612:101;2648:2;2645:1;2641:10;2636:15;;2612:101;;;2728:6;2725:1;2722:13;2719:2;;;2793:1;2784:6;2779:3;2775:16;2768:27;2719:2;2589:219;;;;;;2816:117;2885:24;2903:5;2885:24;;;2878:5;2875:35;2868:43;2865:2;;;2924:1;2921;2914:12;2865:2;2859:74;;;;92:574:26;;;;;;;",
  "deployedSourceMap": "92:574:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;200:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;225;;;:::i;:::-;;;;;;;;;;;;;;;;588:76;;;:::i;:::-;;;;;;;;;;;;;;;;416:82;;;:::i;:::-;;;;;;;;;;;;;;;;502;;;:::i;:::-;;;;;;;;;;;;;;;;200:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;225:::-;;;;;;;;;;;;;:::o;588:76::-;624:7;646:9;;;:13;;;;;639:20;;;;588:76;;:::o;416:82::-;452:13;480:9;;;:13;;;;473:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;416:82;;:::o;502:::-;538:13;566:9;;;:13;;;;559:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;502:82;;:::o;5:113:-1:-;;;88:24;106:5;88:24;;;83:3;76:37;70:48;;;;125:347;;237:39;270:5;237:39;;;288:71;352:6;347:3;288:71;;;281:78;;364:52;409:6;404:3;397:4;390:5;386:16;364:52;;;437:29;459:6;437:29;;;432:3;428:39;421:46;;217:255;;;;;;;479:113;562:24;580:5;562:24;;;557:3;550:37;544:48;;;;599:222;;726:2;715:9;711:18;703:26;;740:71;808:1;797:9;793:17;784:6;740:71;;;697:124;;;;;;828:310;;975:2;964:9;960:18;952:26;;1025:9;1019:4;1015:20;1011:1;1000:9;996:17;989:47;1050:78;1123:4;1114:6;1050:78;;;1042:86;;946:192;;;;;;1145:620;;1368:2;1357:9;1353:18;1345:26;;1418:9;1412:4;1408:20;1404:1;1393:9;1389:17;1382:47;1443:78;1516:4;1507:6;1443:78;;;1435:86;;1569:9;1563:4;1559:20;1554:2;1543:9;1539:18;1532:48;1594:78;1667:4;1658:6;1594:78;;;1586:86;;1683:72;1751:2;1740:9;1736:18;1727:6;1683:72;;;1339:426;;;;;;;;1772:222;;1899:2;1888:9;1884:18;1876:26;;1913:71;1981:1;1970:9;1966:17;1957:6;1913:71;;;1870:124;;;;;;2001:122;;2095:5;2089:12;2079:22;;2060:63;;;;;2131:163;;2246:6;2241:3;2234:19;2283:4;2278:3;2274:14;2259:29;;2227:67;;;;;;2302:91;;2364:24;2382:5;2364:24;;;2353:35;;2347:46;;;;;2400:121;;2473:42;2466:5;2462:54;2451:65;;2445:76;;;;;2528:72;;2590:5;2579:16;;2573:27;;;;;2608:268;2673:1;2680:101;2694:6;2691:1;2688:13;2680:101;;;2770:1;2765:3;2761:11;2755:18;2751:1;2746:3;2742:11;2735:39;2680:101;2716:2;2713:1;2709:10;2704:15;;2680:101;;;2796:6;2793:1;2790:13;2787:2;;;2861:1;2852:6;2847:3;2843:16;2836:27;2787:2;2657:219;;;;;;2884:97;;2972:2;2968:7;2963:2;2956:5;2952:14;2948:28;2938:38;;2932:49;;;;;",
  "abi": [
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "string",
              "name": "foo",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "bar",
              "type": "string"
            },
            {
              "internalType": "uint256",
              "name": "buz",
              "type": "uint256"
            }
          ],
          "internalType": "struct WithStructInConstructor.Data",
          "name": "_data",
          "type": "tuple"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "bar",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "buz",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "foo",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "localData",
      "outputs": [
        {
          "internalType": "string",
          "name": "foo",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "bar",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "buz",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "sender",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "ast": {
    "absolutePath": "contracts/mocks/WithStructInConstructor.sol",
    "exportedSymbols": {
      "WithStructInConstructor": [
        5221
      ]
    },
    "id": 5222,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 5149,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".10"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:26"
      },
      {
        "id": 5150,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "25:33:26"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 5221,
        "linearizedBaseContracts": [
          5221
        ],
        "name": "WithStructInConstructor",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "WithStructInConstructor.Data",
            "id": 5157,
            "members": [
              {
                "constant": false,
                "id": 5152,
                "mutability": "mutable",
                "name": "foo",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 5157,
                "src": "148:10:26",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 5151,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "148:6:26",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5154,
                "mutability": "mutable",
                "name": "bar",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 5157,
                "src": "164:10:26",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 5153,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "164:6:26",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5156,
                "mutability": "mutable",
                "name": "buz",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 5157,
                "src": "180:11:26",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 5155,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "180:7:26",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Data",
            "nodeType": "StructDefinition",
            "scope": 5221,
            "src": "130:66:26",
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "4efe8268",
            "id": 5159,
            "mutability": "mutable",
            "name": "localData",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 5221,
            "src": "200:21:26",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_Data_$5157_storage",
              "typeString": "struct WithStructInConstructor.Data"
            },
            "typeName": {
              "contractScope": null,
              "id": 5158,
              "name": "Data",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5157,
              "src": "200:4:26",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Data_$5157_storage_ptr",
                "typeString": "struct WithStructInConstructor.Data"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "67e404ce",
            "id": 5161,
            "mutability": "mutable",
            "name": "sender",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 5221,
            "src": "225:21:26",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 5160,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "225:7:26",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5192,
              "nodeType": "Block",
              "src": "289:123:26",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5171,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5166,
                        "name": "localData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5159,
                        "src": "295:9:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$5157_storage",
                          "typeString": "struct WithStructInConstructor.Data storage ref"
                        }
                      },
                      "id": 5168,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "foo",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5152,
                      "src": "295:13:26",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5169,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5163,
                        "src": "311:5:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$5157_memory_ptr",
                          "typeString": "struct WithStructInConstructor.Data memory"
                        }
                      },
                      "id": 5170,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "foo",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5152,
                      "src": "311:9:26",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "295:25:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 5172,
                  "nodeType": "ExpressionStatement",
                  "src": "295:25:26"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5178,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5173,
                        "name": "localData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5159,
                        "src": "326:9:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$5157_storage",
                          "typeString": "struct WithStructInConstructor.Data storage ref"
                        }
                      },
                      "id": 5175,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "bar",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5154,
                      "src": "326:13:26",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5176,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5163,
                        "src": "342:5:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$5157_memory_ptr",
                          "typeString": "struct WithStructInConstructor.Data memory"
                        }
                      },
                      "id": 5177,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "bar",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5154,
                      "src": "342:9:26",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "326:25:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 5179,
                  "nodeType": "ExpressionStatement",
                  "src": "326:25:26"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5185,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5180,
                        "name": "localData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5159,
                        "src": "357:9:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$5157_storage",
                          "typeString": "struct WithStructInConstructor.Data storage ref"
                        }
                      },
                      "id": 5182,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "buz",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5156,
                      "src": "357:13:26",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5183,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5163,
                        "src": "373:5:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$5157_memory_ptr",
                          "typeString": "struct WithStructInConstructor.Data memory"
                        }
                      },
                      "id": 5184,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "buz",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5156,
                      "src": "373:9:26",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "357:25:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5186,
                  "nodeType": "ExpressionStatement",
                  "src": "357:25:26"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5190,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5187,
                      "name": "sender",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5161,
                      "src": "388:6:26",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5188,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -15,
                        "src": "397:3:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 5189,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "397:10:26",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "388:19:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 5191,
                  "nodeType": "ExpressionStatement",
                  "src": "388:19:26"
                }
              ]
            },
            "documentation": null,
            "id": 5193,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5164,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5163,
                  "mutability": "mutable",
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5193,
                  "src": "263:17:26",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Data_$5157_memory_ptr",
                    "typeString": "struct WithStructInConstructor.Data"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5162,
                    "name": "Data",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5157,
                    "src": "263:4:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Data_$5157_storage_ptr",
                      "typeString": "struct WithStructInConstructor.Data"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "262:19:26"
            },
            "returnParameters": {
              "id": 5165,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "289:0:26"
            },
            "scope": 5221,
            "src": "251:161:26",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5201,
              "nodeType": "Block",
              "src": "467:31:26",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 5198,
                      "name": "localData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5159,
                      "src": "480:9:26",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Data_$5157_storage",
                        "typeString": "struct WithStructInConstructor.Data storage ref"
                      }
                    },
                    "id": 5199,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "foo",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 5152,
                    "src": "480:13:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "functionReturnParameters": 5197,
                  "id": 5200,
                  "nodeType": "Return",
                  "src": "473:20:26"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "c2985578",
            "id": 5202,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "foo",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5194,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "428:2:26"
            },
            "returnParameters": {
              "id": 5197,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5196,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5202,
                  "src": "452:13:26",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5195,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "452:6:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "451:15:26"
            },
            "scope": 5221,
            "src": "416:82:26",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5210,
              "nodeType": "Block",
              "src": "553:31:26",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 5207,
                      "name": "localData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5159,
                      "src": "566:9:26",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Data_$5157_storage",
                        "typeString": "struct WithStructInConstructor.Data storage ref"
                      }
                    },
                    "id": 5208,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "bar",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 5154,
                    "src": "566:13:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "functionReturnParameters": 5206,
                  "id": 5209,
                  "nodeType": "Return",
                  "src": "559:20:26"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "febb0f7e",
            "id": 5211,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "bar",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5203,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "514:2:26"
            },
            "returnParameters": {
              "id": 5206,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5205,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5211,
                  "src": "538:13:26",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5204,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "538:6:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "537:15:26"
            },
            "scope": 5221,
            "src": "502:82:26",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5219,
              "nodeType": "Block",
              "src": "633:31:26",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 5216,
                      "name": "localData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5159,
                      "src": "646:9:26",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Data_$5157_storage",
                        "typeString": "struct WithStructInConstructor.Data storage ref"
                      }
                    },
                    "id": 5217,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "buz",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 5156,
                    "src": "646:13:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 5215,
                  "id": 5218,
                  "nodeType": "Return",
                  "src": "639:20:26"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "bbe8f084",
            "id": 5220,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "buz",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5212,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "600:2:26"
            },
            "returnParameters": {
              "id": 5215,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5214,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5220,
                  "src": "624:7:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5213,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "624:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "623:9:26"
            },
            "scope": 5221,
            "src": "588:76:26",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 5222,
        "src": "92:574:26"
      }
    ],
    "src": "0:667:26"
  },
  "bytecode": "0x6080604052348015620000125760006000fd5b506040516200099b3803806200099b8339818101604052810190620000389190620002bc565b5b8060000151600060005060000160005090805190602001906200005e929190620000e4565b5080602001516000600050600101600050908051906020019062000084929190620000e4565b508060400151600060005060020160005081909090555033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50620003c5565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200012757805160ff19168380011785556200015d565b828001600101855582156200015d579182015b828111156200015c57825182600050909055916020019190600101906200013a565b5b5090506200016c919062000170565b5090565b6200019c91906200017c565b808211156200019857600081815060009055506001016200017c565b5090565b9056620003c4565b600082601f8301121515620001b95760006000fd5b8151620001d0620001ca8262000334565b62000304565b91508082526020830160208301858383011115620001ee5760006000fd5b620001fb8382846200036e565b5050505b92915050565b600060608284031215620002195760006000fd5b62000225606062000304565b9050600082015167ffffffffffffffff811115620002435760006000fd5b6200025184828501620001a4565b600083015250602082015167ffffffffffffffff811115620002735760006000fd5b6200028184828501620001a4565b60208301525060406200029784828501620002a4565b6040830152505b92915050565b600081519050620002b581620003a6565b5b92915050565b600060208284031215620002d05760006000fd5b600082015167ffffffffffffffff811115620002ec5760006000fd5b620002fa8482850162000205565b9150505b92915050565b6000604051905081810181811067ffffffffffffffff82111715620003295760006000fd5b80604052505b919050565b600067ffffffffffffffff8211156200034d5760006000fd5b601f19601f83011690506020810190505b919050565b60008190505b919050565b60005b838110156200038f5780820151818401525b60208101905062000371565b838111156200039f576000848401525b505b505050565b620003b18162000363565b81141515620003c05760006000fd5b5b50565b5b6105c680620003d56000396000f3fe60806040523480156100115760006000fd5b506004361061005c5760003560e01c80634efe82681461006257806367e404ce14610082578063bbe8f084146100a0578063c2985578146100be578063febb0f7e146100dc5761005c565b60006000fd5b61006a6100fa565b60405161007993929190610489565b60405180910390f35b61008a61024e565b604051610097919061044a565b60405180910390f35b6100a8610274565b6040516100b591906104cf565b60405180910390f35b6100c661028c565b6040516100d39190610466565b60405180910390f35b6100e461033c565b6040516100f19190610466565b60405180910390f35b6000600050806000016000508054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561019a5780601f1061016f5761010080835404028352916020019161019a565b820191906000526020600020905b81548152906001019060200180831161017d57829003601f168201915b505050505090806001016000508054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561023b5780601f106102105761010080835404028352916020019161023b565b820191906000526020600020905b81548152906001019060200180831161021e57829003601f168201915b5050505050908060020160005054905083565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006000600050600201600050549050610289565b90565b606060006000506000016000508054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561032d5780601f106103025761010080835404028352916020019161032d565b820191906000526020600020905b81548152906001019060200180831161031057829003601f168201915b50505050509050610339565b90565b606060006000506001016000508054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156103dd5780601f106103b2576101008083540402835291602001916103dd565b820191906000526020600020905b8154815290600101906020018083116103c057829003601f168201915b505050505090506103e9565b905661058f565b6103f981610509565b82525b5050565b600061040b826104eb565b61041581856104f7565b9350610425818560208601610548565b61042e8161057d565b84019150505b92915050565b6104438161053d565b82525b5050565b600060208201905061045f60008301846103f0565b5b92915050565b600060208201905081810360008301526104808184610400565b90505b92915050565b600060608201905081810360008301526104a38186610400565b905081810360208301526104b78185610400565b90506104c6604083018461043a565b5b949350505050565b60006020820190506104e4600083018461043a565b5b92915050565b6000815190505b919050565b60008282526020820190505b92915050565b60006105148261051c565b90505b919050565b600073ffffffffffffffffffffffffffffffffffffffff821690505b919050565b60008190505b919050565b60005b838110156105675780820151818401525b60208101905061054b565b83811115610576576000848401525b505b505050565b6000601f19601f83011690505b919050565bfea2646970667358221220520ac470a1ed0af6eb86592087078bc83e0ce40f30b68765d50296b264c60e6f64736f6c634300060a0033",
  "deployedBytecode": "0x60806040523480156100115760006000fd5b506004361061005c5760003560e01c80634efe82681461006257806367e404ce14610082578063bbe8f084146100a0578063c2985578146100be578063febb0f7e146100dc5761005c565b60006000fd5b61006a6100fa565b60405161007993929190610489565b60405180910390f35b61008a61024e565b604051610097919061044a565b60405180910390f35b6100a8610274565b6040516100b591906104cf565b60405180910390f35b6100c661028c565b6040516100d39190610466565b60405180910390f35b6100e461033c565b6040516100f19190610466565b60405180910390f35b6000600050806000016000508054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561019a5780601f1061016f5761010080835404028352916020019161019a565b820191906000526020600020905b81548152906001019060200180831161017d57829003601f168201915b505050505090806001016000508054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561023b5780601f106102105761010080835404028352916020019161023b565b820191906000526020600020905b81548152906001019060200180831161021e57829003601f168201915b5050505050908060020160005054905083565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006000600050600201600050549050610289565b90565b606060006000506000016000508054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561032d5780601f106103025761010080835404028352916020019161032d565b820191906000526020600020905b81548152906001019060200180831161031057829003601f168201915b50505050509050610339565b90565b606060006000506001016000508054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156103dd5780601f106103b2576101008083540402835291602001916103dd565b820191906000526020600020905b8154815290600101906020018083116103c057829003601f168201915b505050505090506103e9565b905661058f565b6103f981610509565b82525b5050565b600061040b826104eb565b61041581856104f7565b9350610425818560208601610548565b61042e8161057d565b84019150505b92915050565b6104438161053d565b82525b5050565b600060208201905061045f60008301846103f0565b5b92915050565b600060208201905081810360008301526104808184610400565b90505b92915050565b600060608201905081810360008301526104a38186610400565b905081810360208301526104b78185610400565b90506104c6604083018461043a565b5b949350505050565b60006020820190506104e4600083018461043a565b5b92915050565b6000815190505b919050565b60008282526020820190505b92915050565b60006105148261051c565b90505b919050565b600073ffffffffffffffffffffffffffffffffffffffff821690505b919050565b60008190505b919050565b60005b838110156105675780820151818401525b60208101905061054b565b83811115610576576000848401525b505b505050565b6000601f19601f83011690505b919050565bfea2646970667358221220520ac470a1ed0af6eb86592087078bc83e0ce40f30b68765d50296b264c60e6f64736f6c634300060a0033",
  "compiler": {
    "name": "solc",
    "version": "0.6.10+commit.00c0fcaf.Emscripten.clang",
    "optimizer": {},
    "evmVersion": "constantinople"
  }
}
