DIRECTORY
	ThreeC4RecFcnDeclDef,
	ThreeC4BasicAbTypesDef;

ThreeC4FlowGraphAbGramDef: CEDAR DEFINITIONS = 
BEGIN
OPEN ThreeC4RecFcnDeclDef, ThreeC4BasicAbTypesDef;
SlotNode: TYPE = REF SlotNodeBody;
SlotNodeBody: TYPE;


-- DamageShareAssertionsemptyProd

DamageShareAssertionsemptyProdData: TYPE = REF DamageShareAssertionsemptyProdDataBody;
DamageShareAssertionsemptyProdDataBody: TYPE = RECORD[
];

DamageShareAssertionsemptyProdProcs: DamageShareAssertionsNodeProcs;

BuildDamageShareAssertionsemptyProdNode: PROC[position: INT, length: INT]
	RETURNS[DamageShareAssertionsNode];

DamageShareAssertionsemptyProdFormRecordOfDamageShareAssertion: FormRecordOfDamageShareAssertionProcType;

-- DamageShareAssertionsmanyProd

DamageShareAssertionsmanyProdData: TYPE = REF DamageShareAssertionsmanyProdDataBody;
DamageShareAssertionsmanyProdDataBody: TYPE = RECORD[
DamageShareAssertions: DamageShareAssertionsNode, DamageShareAssertion: DamageShareAssertionNode];

DamageShareAssertionsmanyProdProcs: DamageShareAssertionsNodeProcs;

BuildDamageShareAssertionsmanyProdNode: PROC[position: INT, length: INT, DamageShareAssertions: DamageShareAssertionsNode, DamageShareAssertion: DamageShareAssertionNode]
	RETURNS[DamageShareAssertionsNode];

DamageShareAssertionsmanyProdFormRecordOfDamageShareAssertion: FormRecordOfDamageShareAssertionProcType;

--DamageShareAssertion

DamageShareAssertionNode: TYPE = REF DamageShareAssertionNodeBody;
DamageShareAssertionNodeBody: TYPE = RECORD[
	position: INT, length: INT,
	procs: DamageShareAssertionNodeProcs,
	data: REF ANY];

DamageShareAssertionNodeProcs: TYPE = REF DamageShareAssertionNodeProcsBody;
DamageShareAssertionNodeProcsBody: TYPE = RECORD[

	FormRecordOfDamageShareAssertion: FormRecordOfDamageShareAssertionProcType];


-- DamageShareAssertiondamagedRepsProd

DamageShareAssertiondamagedRepsProdData: TYPE = REF DamageShareAssertiondamagedRepsProdDataBody;
DamageShareAssertiondamagedRepsProdDataBody: TYPE = RECORD[
ModIdList: ModIdListNode];

DamageShareAssertiondamagedRepsProdProcs: DamageShareAssertionNodeProcs;

BuildDamageShareAssertiondamagedRepsProdNode: PROC[position: INT, length: INT, ModIdList: ModIdListNode]
	RETURNS[DamageShareAssertionNode];

DamageShareAssertiondamagedRepsProdFormRecordOfDamageShareAssertion: FormRecordOfDamageShareAssertionProcType;

-- DamageShareAssertionsharedRepsProd

DamageShareAssertionsharedRepsProdData: TYPE = REF DamageShareAssertionsharedRepsProdDataBody;
DamageShareAssertionsharedRepsProdDataBody: TYPE = RECORD[
ModIdList: ModIdListNode];

DamageShareAssertionsharedRepsProdProcs: DamageShareAssertionNodeProcs;

BuildDamageShareAssertionsharedRepsProdNode: PROC[position: INT, length: INT, ModIdList: ModIdListNode]
	RETURNS[DamageShareAssertionNode];

DamageShareAssertionsharedRepsProdFormRecordOfDamageShareAssertion: FormRecordOfDamageShareAssertionProcType;
END..