strict digraph "tests/contract_testcases/substrate/inheritance/cast_contract.sol" {
	contract [label="contract operator\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:2:9-5:10"]
	op1 [label="function op1\ncontract: operator\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:3:13-68\nsignature op1(int32,int32)\nvisibility external\nmutability nonpayable\nvirtual"]
	parameters [label="parameters\nint32 a\nint32 b"]
	returns [label="returns\nint32 "]
	op2 [label="function op2\ncontract: operator\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:4:13-68\nsignature op2(int32,int32)\nvisibility external\nmutability nonpayable\nvirtual"]
	parameters_6 [label="parameters\nint32 a\nint32 b"]
	returns_7 [label="returns\nint32 "]
	contract_8 [label="contract ferqu\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:7:9-21:10"]
	var [label="variable op\nvisibility internal\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:8:13-24"]
	new [label="constructor new\ncontract: ferqu\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:10:13-39\nsignature new(bool)\nvisibility public\nmutability nonpayable"]
	parameters_11 [label="parameters\nbool do_adds"]
	if [label="if\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:11:17-15:18"]
	variable [label="variable: do_adds\nbool\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:11:21-28"]
	expr [label="expression\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:12:21-34"]
	assign [label="assign\ncontract operator storage\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:12:21-23"]
	storage_var [label="storage variable\nferqu.op\ncontract operator storage\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:12:21-23"]
	cast [label="cast contract operator\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:12:26-34"]
	constructor [label="constructor contract m1\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:12:26-34"]
	expr_19 [label="expression\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:14:21-34"]
	assign_20 [label="assign\ncontract operator storage\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:14:21-23"]
	storage_var_21 [label="storage variable\nferqu.op\ncontract operator storage\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:14:21-23"]
	cast_22 [label="cast contract operator\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:14:26-34"]
	constructor_23 [label="constructor contract m2\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:14:26-34"]
	x [label="function x\ncontract: ferqu\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:18:13-55\nsignature x(int32)\nvisibility public\nmutability nonpayable"]
	parameters_25 [label="parameters\nint32 b"]
	returns_26 [label="returns\nint32 "]
	return [label="return\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:19:17-38"]
	call_external_function [label="call external function\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:19:24-38"]
	external_function [label="function(int32,int32) external returns (int32)\noperator.op1\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:19:24-38"]
	storage_load [label="storage load contract operator\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:19:24-26"]
	storage_var_31 [label="storage variable\nferqu.op\ncontract operator storage\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:19:24-26"]
	number_literal [label="int32 literal: 102\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:19:31-34"]
	variable_33 [label="variable: b\nint32\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:19:36-37"]
	contract_34 [label="contract m1\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:23:9-31:10"]
	base [label="base operator\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:23:24-32"]
	op1_36 [label="function op1\ncontract: m1\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:24:13-75\nsignature op1(int32,int32)\nvisibility public\nmutability nonpayable\noverride"]
	parameters_37 [label="parameters\nint32 a\nint32 b"]
	returns_38 [label="returns\nint32 "]
	return_39 [label="return\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:25:17-29"]
	add [label="add\nint32\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:25:24-29"]
	variable_41 [label="variable: a\nint32\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:25:24-25"]
	variable_42 [label="variable: b\nint32\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:25:28-29"]
	op2_43 [label="function op2\ncontract: m1\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:28:13-75\nsignature op2(int32,int32)\nvisibility public\nmutability nonpayable\noverride"]
	parameters_44 [label="parameters\nint32 a\nint32 b"]
	returns_45 [label="returns\nint32 "]
	return_46 [label="return\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:29:17-29"]
	subtract [label="subtract\nint32\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:29:24-29"]
	variable_48 [label="variable: a\nint32\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:29:24-25"]
	variable_49 [label="variable: b\nint32\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:29:28-29"]
	contract_50 [label="contract m2\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:33:9-41:10"]
	base_51 [label="base operator\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:33:24-32"]
	op1_52 [label="function op1\ncontract: m2\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:34:13-75\nsignature op1(int32,int32)\nvisibility public\nmutability nonpayable\noverride"]
	parameters_53 [label="parameters\nint32 a\nint32 b"]
	returns_54 [label="returns\nint32 "]
	return_55 [label="return\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:35:17-29"]
	multiply [label="multiply\nint32\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:35:24-29"]
	variable_57 [label="variable: a\nint32\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:35:24-25"]
	variable_58 [label="variable: b\nint32\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:35:28-29"]
	op2_59 [label="function op2\ncontract: m2\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:38:13-75\nsignature op2(int32,int32)\nvisibility public\nmutability nonpayable\noverride"]
	parameters_60 [label="parameters\nint32 a\nint32 b"]
	returns_61 [label="returns\nint32 "]
	return_62 [label="return\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:39:17-29"]
	divide [label="divide\nint32\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:39:24-29"]
	variable_64 [label="variable: a\nint32\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:39:24-25"]
	variable_65 [label="variable: b\nint32\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:39:28-29"]
	diagnostic [label="found interface 'operator'\nlevel Debug\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:2:9-5:10"]
	diagnostic_68 [label="found contract 'ferqu'\nlevel Debug\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:7:9-21:10"]
	diagnostic_69 [label="found contract 'm1'\nlevel Debug\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:23:9-31:10"]
	diagnostic_70 [label="function can be declared 'pure'\nlevel Warning\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:24:13-75"]
	diagnostic_71 [label="function can be declared 'pure'\nlevel Warning\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:28:13-75"]
	diagnostic_72 [label="found contract 'm2'\nlevel Debug\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:33:9-41:10"]
	diagnostic_73 [label="function can be declared 'pure'\nlevel Warning\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:34:13-75"]
	diagnostic_74 [label="function can be declared 'pure'\nlevel Warning\ntests/contract_testcases/substrate/inheritance/cast_contract.sol:38:13-75"]
	contracts -> contract
	contract -> op1 [label="function"]
	op1 -> parameters [label="parameters"]
	op1 -> returns [label="returns"]
	contract -> op2 [label="function"]
	op2 -> parameters_6 [label="parameters"]
	op2 -> returns_7 [label="returns"]
	contracts -> contract_8
	contract_8 -> var [label="variable"]
	contract_8 -> new [label="constructor"]
	new -> parameters_11 [label="parameters"]
	new -> if [label="body"]
	if -> variable [label="cond"]
	if -> expr [label="then"]
	expr -> assign [label="expr"]
	assign -> storage_var [label="left"]
	assign -> cast [label="right"]
	cast -> constructor [label="expr"]
	if -> expr_19 [label="else"]
	expr_19 -> assign_20 [label="expr"]
	assign_20 -> storage_var_21 [label="left"]
	assign_20 -> cast_22 [label="right"]
	cast_22 -> constructor_23 [label="expr"]
	contract_8 -> x [label="function"]
	x -> parameters_25 [label="parameters"]
	x -> returns_26 [label="returns"]
	x -> return [label="body"]
	return -> call_external_function [label="expr"]
	call_external_function -> external_function [label="function"]
	external_function -> storage_load [label="address"]
	storage_load -> storage_var_31 [label="expr"]
	call_external_function -> number_literal [label="arg #0"]
	call_external_function -> variable_33 [label="arg #1"]
	contracts -> contract_34
	contract_34 -> base [label="base"]
	contract_34 -> op1_36 [label="function"]
	op1_36 -> parameters_37 [label="parameters"]
	op1_36 -> returns_38 [label="returns"]
	op1_36 -> return_39 [label="body"]
	return_39 -> add [label="expr"]
	add -> variable_41 [label="left"]
	add -> variable_42 [label="right"]
	contract_34 -> op2_43 [label="function"]
	op2_43 -> parameters_44 [label="parameters"]
	op2_43 -> returns_45 [label="returns"]
	op2_43 -> return_46 [label="body"]
	return_46 -> subtract [label="expr"]
	subtract -> variable_48 [label="left"]
	subtract -> variable_49 [label="right"]
	contracts -> contract_50
	contract_50 -> base_51 [label="base"]
	contract_50 -> op1_52 [label="function"]
	op1_52 -> parameters_53 [label="parameters"]
	op1_52 -> returns_54 [label="returns"]
	op1_52 -> return_55 [label="body"]
	return_55 -> multiply [label="expr"]
	multiply -> variable_57 [label="left"]
	multiply -> variable_58 [label="right"]
	contract_50 -> op2_59 [label="function"]
	op2_59 -> parameters_60 [label="parameters"]
	op2_59 -> returns_61 [label="returns"]
	op2_59 -> return_62 [label="body"]
	return_62 -> divide [label="expr"]
	divide -> variable_64 [label="left"]
	divide -> variable_65 [label="right"]
	diagnostics -> diagnostic [label="Debug"]
	diagnostics -> diagnostic_68 [label="Debug"]
	diagnostics -> diagnostic_69 [label="Debug"]
	diagnostics -> diagnostic_70 [label="Warning"]
	diagnostics -> diagnostic_71 [label="Warning"]
	diagnostics -> diagnostic_72 [label="Debug"]
	diagnostics -> diagnostic_73 [label="Warning"]
	diagnostics -> diagnostic_74 [label="Warning"]
}
