strict digraph "tests/contract_testcases/solana/override.sol" {
	S [label="name:S\ntests/contract_testcases/solana/simple.sol:3:8-9\nfield name:f1 ty:int64\nfield name:f2 ty:bool"]
	inc [label="function inc\ntests/contract_testcases/solana/simple.sol:7:1-23\nsignature inc((int64,bool))\nvisibility internal\nmutability pure"]
	parameters [label="parameters\nstruct S s"]
	expr [label="expression\ntests/contract_testcases/solana/simple.sol:7:26-35"]
	assign [label="assign\nvoid\ntests/contract_testcases/solana/simple.sol:7:26-35"]
	structmember [label="struct member #0 int64\ntests/contract_testcases/solana/simple.sol:7:28-30"]
	variable [label="variable: s\nstruct S\ntests/contract_testcases/solana/simple.sol:7:26-27"]
	add [label="add\nint64\ntests/contract_testcases/solana/simple.sol:7:26-35"]
	load [label="load int64\ntests/contract_testcases/solana/simple.sol:7:26-35"]
	structmember_11 [label="struct member #0 int64\ntests/contract_testcases/solana/simple.sol:7:28-30"]
	variable_12 [label="variable: s\nstruct S\ntests/contract_testcases/solana/simple.sol:7:26-27"]
	number_literal [label="int64 literal: 1\ntests/contract_testcases/solana/simple.sol:7:34-35"]
	contract [label="contract C\ntests/contract_testcases/solana/override.sol:5:1-7:2"]
	base [label="base A\ntests/contract_testcases/solana/override.sol:5:15-20"]
	var [label="variable meh\nvisibility public\ntests/contract_testcases/solana/override.sol:6:2-32"]
	meh [label="function meh\ncontract: C\ntests/contract_testcases/solana/override.sol:6:29-32\nsignature meh()\nvisibility public\nmutability view\noverride A"]
	returns [label="returns\nint256 "]
	return [label="return\nimplicit"]
	storage_load [label="storage load int256\nimplicit"]
	storage_var [label="storage variable\nC.meh\nint256 storage\nimplicit"]
	contract_23 [label="contract A\ntests/contract_testcases/solana/override.sol:9:1-11:2"]
	foo [label="function foo\ncontract: A\ntests/contract_testcases/solana/override.sol:10:5-43\nsignature foo()\nvisibility external\nmutability nonpayable\nvirtual"]
	returns_25 [label="returns\nuint256 "]
	contract_26 [label="contract B\ntests/contract_testcases/solana/override.sol:12:1-14:2"]
	foo_27 [label="function foo\ncontract: B\ntests/contract_testcases/solana/override.sol:13:5-43\nsignature foo()\nvisibility external\nmutability nonpayable\nvirtual"]
	returns_28 [label="returns\nuint256 "]
	contract_29 [label="contract X\ntests/contract_testcases/solana/override.sol:15:1-17:2"]
	base_30 [label="base A\ntests/contract_testcases/solana/override.sol:15:15-16"]
	base_31 [label="base B\ntests/contract_testcases/solana/override.sol:15:18-19"]
	var_32 [label="variable foo\nvisibility public\ntests/contract_testcases/solana/override.sol:16:9-39"]
	foo_33 [label="function foo\ncontract: X\ntests/contract_testcases/solana/override.sol:16:36-39\nsignature foo()\nvisibility public\nmutability view\noverride A\noverride B"]
	returns_34 [label="returns\nuint256 "]
	return_35 [label="return\nimplicit"]
	storage_load_36 [label="storage load uint256\nimplicit"]
	storage_var_37 [label="storage variable\nX.foo\nuint256 storage\nimplicit"]
	contract_38 [label="contract Y\ntests/contract_testcases/solana/override.sol:18:1-19:2"]
	base_39 [label="base X\ntests/contract_testcases/solana/override.sol:18:15-16"]
	contract_40 [label="contract A2\ntests/contract_testcases/solana/override.sol:21:1-23:2"]
	foo_41 [label="function foo\ncontract: A2\ntests/contract_testcases/solana/override.sol:22:5-51\nsignature foo()\nvisibility external\nmutability nonpayable\nvirtual"]
	returns_42 [label="returns\nuint256 "]
	return_43 [label="return\ntests/contract_testcases/solana/override.sol:22:54-62"]
	number_literal_44 [label="uint256 literal: 1\ntests/contract_testcases/solana/override.sol:22:61-62"]
	contract_45 [label="contract B2\ntests/contract_testcases/solana/override.sol:24:1-26:2"]
	foo_46 [label="function foo\ncontract: B2\ntests/contract_testcases/solana/override.sol:25:5-51\nsignature foo()\nvisibility external\nmutability nonpayable\nvirtual"]
	returns_47 [label="returns\nuint256 "]
	return_48 [label="return\ntests/contract_testcases/solana/override.sol:25:54-62"]
	number_literal_49 [label="uint256 literal: 2\ntests/contract_testcases/solana/override.sol:25:61-62"]
	contract_50 [label="contract X2\ntests/contract_testcases/solana/override.sol:27:1-29:2"]
	base_51 [label="base A2\ntests/contract_testcases/solana/override.sol:27:16-18"]
	base_52 [label="base B2\ntests/contract_testcases/solana/override.sol:27:20-22"]
	var_53 [label="variable foo\nvisibility public\ntests/contract_testcases/solana/override.sol:28:9-37"]
	foo_54 [label="function foo\ncontract: X2\ntests/contract_testcases/solana/override.sol:28:34-37\nsignature foo()\nvisibility public\nmutability view\noverride A2"]
	returns_55 [label="returns\nuint256 "]
	return_56 [label="return\nimplicit"]
	storage_load_57 [label="storage load uint256\nimplicit"]
	storage_var_58 [label="storage variable\nX2.foo\nuint256 storage\nimplicit"]
	contract_59 [label="contract Y2\ntests/contract_testcases/solana/override.sol:30:1-31:2"]
	base_60 [label="base X2\ntests/contract_testcases/solana/override.sol:30:16-18"]
	contract_61 [label="contract A\ntests/contract_testcases/solana/simple.sol:1:1-14"]
	contract_62 [label="contract L\ntests/contract_testcases/solana/simple.sol:2:1-13"]
	diagnostic [label="global variable has no bases contracts to override\nlevel Error\ntests/contract_testcases/solana/override.sol:3:14-22"]
	diagnostic_65 [label="found contract 'C'\nlevel Debug\ntests/contract_testcases/solana/override.sol:5:1-7:2"]
	diagnostic_66 [label="'meh' does not override anything\nlevel Error\ntests/contract_testcases/solana/override.sol:6:29-32"]
	diagnostic_67 [label="found interface 'A'\nlevel Debug\ntests/contract_testcases/solana/override.sol:9:1-11:2"]
	diagnostic_68 [label="found interface 'B'\nlevel Debug\ntests/contract_testcases/solana/override.sol:12:1-14:2"]
	diagnostic_69 [label="found contract 'X'\nlevel Debug\ntests/contract_testcases/solana/override.sol:15:1-17:2"]
	diagnostic_70 [label="found contract 'Y'\nlevel Debug\ntests/contract_testcases/solana/override.sol:18:1-19:2"]
	diagnostic_71 [label="found abstract contract 'A2'\nlevel Debug\ntests/contract_testcases/solana/override.sol:21:1-23:2"]
	diagnostic_72 [label="found abstract contract 'B2'\nlevel Debug\ntests/contract_testcases/solana/override.sol:24:1-26:2"]
	diagnostic_73 [label="found contract 'X2'\nlevel Debug\ntests/contract_testcases/solana/override.sol:27:1-29:2"]
	diagnostic_74 [label="function 'foo' missing overrides 'B2', specify 'override(B2,A2)'\nlevel Error\ntests/contract_testcases/solana/override.sol:28:21-33"]
	diagnostic_75 [label="found contract 'Y2'\nlevel Debug\ntests/contract_testcases/solana/override.sol:30:1-31:2"]
	diagnostic_76 [label="found contract 'A'\nlevel Debug\ntests/contract_testcases/solana/simple.sol:1:1-14"]
	diagnostic_77 [label="found library 'L'\nlevel Debug\ntests/contract_testcases/solana/simple.sol:2:1-13"]
	structs -> S
	free_functions -> inc [label="function"]
	inc -> parameters [label="parameters"]
	inc -> expr [label="body"]
	expr -> assign [label="expr"]
	assign -> structmember [label="left"]
	structmember -> variable [label="var"]
	assign -> add [label="right"]
	add -> load [label="left"]
	load -> structmember_11 [label="expr"]
	structmember_11 -> variable_12 [label="var"]
	add -> number_literal [label="right"]
	contracts -> contract
	contract -> base [label="base"]
	contract -> var [label="variable"]
	contract -> meh [label="function"]
	meh -> returns [label="returns"]
	meh -> return [label="body"]
	return -> storage_load [label="expr"]
	storage_load -> storage_var [label="expr"]
	contracts -> contract_23
	contract_23 -> foo [label="function"]
	foo -> returns_25 [label="returns"]
	contracts -> contract_26
	contract_26 -> foo_27 [label="function"]
	foo_27 -> returns_28 [label="returns"]
	contracts -> contract_29
	contract_29 -> base_30 [label="base"]
	contract_29 -> base_31 [label="base"]
	contract_29 -> var_32 [label="variable"]
	contract_29 -> foo_33 [label="function"]
	foo_33 -> returns_34 [label="returns"]
	foo_33 -> return_35 [label="body"]
	return_35 -> storage_load_36 [label="expr"]
	storage_load_36 -> storage_var_37 [label="expr"]
	contracts -> contract_38
	contract_38 -> base_39 [label="base"]
	contracts -> contract_40
	contract_40 -> foo_41 [label="function"]
	foo_41 -> returns_42 [label="returns"]
	foo_41 -> return_43 [label="body"]
	return_43 -> number_literal_44 [label="expr"]
	contracts -> contract_45
	contract_45 -> foo_46 [label="function"]
	foo_46 -> returns_47 [label="returns"]
	foo_46 -> return_48 [label="body"]
	return_48 -> number_literal_49 [label="expr"]
	contracts -> contract_50
	contract_50 -> base_51 [label="base"]
	contract_50 -> base_52 [label="base"]
	contract_50 -> var_53 [label="variable"]
	contract_50 -> foo_54 [label="function"]
	foo_54 -> returns_55 [label="returns"]
	foo_54 -> return_56 [label="body"]
	return_56 -> storage_load_57 [label="expr"]
	storage_load_57 -> storage_var_58 [label="expr"]
	contracts -> contract_59
	contract_59 -> base_60 [label="base"]
	contracts -> contract_61
	contracts -> contract_62
	diagnostics -> diagnostic [label="Error"]
	diagnostics -> diagnostic_65 [label="Debug"]
	diagnostics -> diagnostic_66 [label="Error"]
	diagnostics -> diagnostic_67 [label="Debug"]
	diagnostics -> diagnostic_68 [label="Debug"]
	diagnostics -> diagnostic_69 [label="Debug"]
	diagnostics -> diagnostic_70 [label="Debug"]
	diagnostics -> diagnostic_71 [label="Debug"]
	diagnostics -> diagnostic_72 [label="Debug"]
	diagnostics -> diagnostic_73 [label="Debug"]
	diagnostics -> diagnostic_74 [label="Error"]
	diagnostics -> diagnostic_75 [label="Debug"]
	diagnostics -> diagnostic_76 [label="Debug"]
	diagnostics -> diagnostic_77 [label="Debug"]
}
