-- SaffronValueCompile2Impl.mesa
 -- Copyright س 1987 by Xerox Corporation.  All rights reserved.
 -- Generated by Rauen.pa at September 1, 1988 3:12:48 pm PDT
 --  using ThreeCasabaFour [1.2] of June 1, 1987 6:00:00 pm PDT

DIRECTORY
	SaffronPGDef,
	SaffronAG1bDef,
	SaffronAG3Def,
	SaffronAG2Def,
	Rope,
	ThreeC4Support,
	SaffronBaseDef,
	BigIntegers,
	SaffronATDef;

SaffronValueCompile2Impl: CEDAR PROGRAM IMPORTS SaffronPGDef, ThreeC4Support, SaffronBaseDef EXPORTS SaffronAG1bDef, SaffronAG3Def, SaffronAG2Def= 
BEGIN
OPEN SaffronPGDef, SaffronAG1bDef, SaffronAG3Def, SaffronAG2Def, Rope, ThreeC4Support, SaffronBaseDef, BigIntegers, SaffronATDef;
ExptypeopProdCompileLValue:	PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, cs: CompilerStateNode] RETURNS[temp0: ParameterizedFieldDescriptorNode, temp1: TypeGraphNodeNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	ExptypeopProdData _ NARROW[tree.data];
BEGIN
pfd:	ParameterizedFieldDescriptorNode;
tgn:	TypeGraphNodeNode;
err:	BOOLEAN;
err _ Error["TypeOp expression used as l-value"];
tgn _ GetIntrinsicBooleanType[cs];
pfd _ EmptyPFD[];
temp1 _ tgn;
temp0 _ pfd;
END;
END
END;

ExptypeopProdCompileExpression:	PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode, temp1: ContextTreeNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	ExptypeopProdData _ NARROW[tree.data];
IF treeData.TypeOp.procs.TypeOpIsCode[treeData.TypeOp] THEN {BEGIN
dummy:	ValueNode;
contextTree1:	ContextTreeNode;
err:	BOOLEAN;
err _ Error["CompileExpression not implemented for code Exp.typeop"];
contextTree1 _ FakeDamageContextTree[contextTree];
dummy _ MakeDummy[""];
temp1 _ contextTree1;
temp0 _ dummy;
END;
} ELSE {IF treeData.TypeOp.procs.TypeOpIsFirst[treeData.TypeOp] THEN {BEGIN
contextTree1:	ContextTreeNode;
first:	ValueNode;
first _ treeData.TypeExp.procs.CompileFirstOfTypeExpression[treeData.TypeExp, contextTree, cs, targetType];
contextTree1 _ FakeDamageContextTree[contextTree];
temp1 _ contextTree1;
temp0 _ first;
END;
} ELSE {IF treeData.TypeOp.procs.TypeOpIsLast[treeData.TypeOp] THEN {BEGIN
contextTree1:	ContextTreeNode;
last:	ValueNode;
last _ treeData.TypeExp.procs.CompileLastOfTypeExpression[treeData.TypeExp, contextTree, cs, targetType];
contextTree1 _ FakeDamageContextTree[contextTree];
temp1 _ contextTree1;
temp0 _ last;
END;
} ELSE {IF treeData.TypeOp.procs.TypeOpIsNil[treeData.TypeOp] THEN {BEGIN
dummy:	ValueNode;
contextTree1:	ContextTreeNode;
err:	BOOLEAN;
err _ Error["CompileExpression not implemented for nil Exp.typeop"];
contextTree1 _ FakeDamageContextTree[contextTree];
dummy _ MakeDummy[""];
temp1 _ contextTree1;
temp0 _ dummy;
END;
} ELSE {BEGIN
dummy:	ValueNode;
contextTree1:	ContextTreeNode;
err:	BOOLEAN;
err _ Error["in CompileExpression for Exp.typeop"];
contextTree1 _ FakeDamageContextTree[contextTree];
dummy _ MakeDummy[""];
temp1 _ contextTree1;
temp0 _ dummy;
END;
};
};
};
};
END
END;

ExptypeopProdEvaluateExpression:	PUBLIC PROC[ref: REF ANY, lc: LocalContextNode, fl: FieldListNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	ExptypeopProdData _ NARROW[tree.data];
IF treeData.TypeOp.procs.TypeOpIsCode[treeData.TypeOp] THEN {BEGIN
err:	BOOLEAN;
err _ Error["EvaluateExpression not implemented for code Exp.typeop"];
temp0 _ MakeDummy[""];
END;
} ELSE {IF treeData.TypeOp.procs.TypeOpIsFirst[treeData.TypeOp] THEN {temp0 _ treeData.TypeExp.procs.EvaluateFirstOfTypeExpression[treeData.TypeExp, lc, fl, cs, targetType];
} ELSE {IF treeData.TypeOp.procs.TypeOpIsLast[treeData.TypeOp] THEN {temp0 _ treeData.TypeExp.procs.EvaluateLastOfTypeExpression[treeData.TypeExp, lc, fl, cs, targetType];
} ELSE {IF treeData.TypeOp.procs.TypeOpIsNil[treeData.TypeOp] THEN {BEGIN
err:	BOOLEAN;
err _ Error["EvaluateExpression not implemented for nil Exp.typeop"];
temp0 _ MakeDummy[""];
END;
} ELSE {BEGIN
err:	BOOLEAN;
err _ Error["in EvaluateExpression for Exp.typeop"];
temp0 _ MakeDummy[""];
END;
};
};
};
};
END
END;

ExpsizeProdCompileLValue:	PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, cs: CompilerStateNode] RETURNS[temp0: ParameterizedFieldDescriptorNode, temp1: TypeGraphNodeNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	ExpsizeProdData _ NARROW[tree.data];
BEGIN
pfd:	ParameterizedFieldDescriptorNode;
tgn:	TypeGraphNodeNode;
err:	BOOLEAN;
err _ Error["SIZE expression used as l-value"];
tgn _ GetIntrinsicBooleanType[cs];
pfd _ EmptyPFD[];
temp1 _ tgn;
temp0 _ pfd;
END;
END
END;

ExpsizeProdCompileExpression:	PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode, temp1: ContextTreeNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	ExpsizeProdData _ NARROW[tree.data];
BEGIN
result:	ValueNode;
contextTree1:	ContextTreeNode;
contextTree1 _ FakeDamageContextTree[contextTree];
result _ MakeDummy["size"];
temp1 _ contextTree1;
temp0 _ result;
END;
END
END;

ExpsizeProdEvaluateExpression:	PUBLIC PROC[ref: REF ANY, lc: LocalContextNode, fl: FieldListNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	ExpsizeProdData _ NARROW[tree.data];
temp0 _ MakeDummy["size"];
END
END;

Expsize2ProdCompileLValue:	PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, cs: CompilerStateNode] RETURNS[temp0: ParameterizedFieldDescriptorNode, temp1: TypeGraphNodeNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	Expsize2ProdData _ NARROW[tree.data];
BEGIN
pfd:	ParameterizedFieldDescriptorNode;
tgn:	TypeGraphNodeNode;
err:	BOOLEAN;
err _ Error["SIZE2 expression used as l-value"];
tgn _ GetIntrinsicBooleanType[cs];
pfd _ EmptyPFD[];
temp1 _ tgn;
temp0 _ pfd;
END;
END
END;

Expsize2ProdCompileExpression:	PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode, temp1: ContextTreeNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	Expsize2ProdData _ NARROW[tree.data];
BEGIN
result:	ValueNode;
contextTree1:	ContextTreeNode;
contextTree1 _ FakeDamageContextTree[contextTree];
result _ MakeDummy["size2"];
temp1 _ contextTree1;
temp0 _ result;
END;
END
END;

Expsize2ProdEvaluateExpression:	PUBLIC PROC[ref: REF ANY, lc: LocalContextNode, fl: FieldListNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	Expsize2ProdData _ NARROW[tree.data];
temp0 _ MakeDummy["size2"];
END
END;

ExpbitsProdCompileLValue:	PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, cs: CompilerStateNode] RETURNS[temp0: ParameterizedFieldDescriptorNode, temp1: TypeGraphNodeNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	ExpbitsProdData _ NARROW[tree.data];
BEGIN
pfd:	ParameterizedFieldDescriptorNode;
tgn:	TypeGraphNodeNode;
err:	BOOLEAN;
err _ Error["BITS expression used as l-value"];
tgn _ GetIntrinsicBooleanType[cs];
pfd _ EmptyPFD[];
temp1 _ tgn;
temp0 _ pfd;
END;
END
END;

ExpbitsProdCompileExpression:	PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode, temp1: ContextTreeNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	ExpbitsProdData _ NARROW[tree.data];
BEGIN
result:	ValueNode;
contextTree1:	ContextTreeNode;
contextTree1 _ FakeDamageContextTree[contextTree];
result _ MakeDummy["bits"];
temp1 _ contextTree1;
temp0 _ result;
END;
END
END;

ExpbitsProdEvaluateExpression:	PUBLIC PROC[ref: REF ANY, lc: LocalContextNode, fl: FieldListNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	ExpbitsProdData _ NARROW[tree.data];
temp0 _ MakeDummy["bits"];
END
END;

Expbits2ProdCompileLValue:	PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, cs: CompilerStateNode] RETURNS[temp0: ParameterizedFieldDescriptorNode, temp1: TypeGraphNodeNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	Expbits2ProdData _ NARROW[tree.data];
BEGIN
pfd:	ParameterizedFieldDescriptorNode;
tgn:	TypeGraphNodeNode;
err:	BOOLEAN;
err _ Error["BITS2 expression used as l-value"];
tgn _ GetIntrinsicBooleanType[cs];
pfd _ EmptyPFD[];
temp1 _ tgn;
temp0 _ pfd;
END;
END
END;

Expbits2ProdCompileExpression:	PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode, temp1: ContextTreeNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	Expbits2ProdData _ NARROW[tree.data];
BEGIN
result:	ValueNode;
contextTree1:	ContextTreeNode;
contextTree1 _ FakeDamageContextTree[contextTree];
result _ MakeDummy["bits2"];
temp1 _ contextTree1;
temp0 _ result;
END;
END
END;

Expbits2ProdEvaluateExpression:	PUBLIC PROC[ref: REF ANY, lc: LocalContextNode, fl: FieldListNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	Expbits2ProdData _ NARROW[tree.data];
temp0 _ MakeDummy["bits2"];
END
END;

ExpbytesProdCompileLValue:	PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, cs: CompilerStateNode] RETURNS[temp0: ParameterizedFieldDescriptorNode, temp1: TypeGraphNodeNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	ExpbytesProdData _ NARROW[tree.data];
BEGIN
pfd:	ParameterizedFieldDescriptorNode;
tgn:	TypeGraphNodeNode;
err:	BOOLEAN;
err _ Error["BYTES expression used as l-value"];
tgn _ GetIntrinsicBooleanType[cs];
pfd _ EmptyPFD[];
temp1 _ tgn;
temp0 _ pfd;
END;
END
END;

ExpbytesProdCompileExpression:	PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode, temp1: ContextTreeNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	ExpbytesProdData _ NARROW[tree.data];
BEGIN
result:	ValueNode;
contextTree1:	ContextTreeNode;
contextTree1 _ FakeDamageContextTree[contextTree];
result _ MakeDummy["bytes"];
temp1 _ contextTree1;
temp0 _ result;
END;
END
END;

ExpbytesProdEvaluateExpression:	PUBLIC PROC[ref: REF ANY, lc: LocalContextNode, fl: FieldListNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	ExpbytesProdData _ NARROW[tree.data];
temp0 _ MakeDummy["bytes"];
END
END;

Expbytes2ProdCompileLValue:	PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, cs: CompilerStateNode] RETURNS[temp0: ParameterizedFieldDescriptorNode, temp1: TypeGraphNodeNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	Expbytes2ProdData _ NARROW[tree.data];
BEGIN
pfd:	ParameterizedFieldDescriptorNode;
tgn:	TypeGraphNodeNode;
err:	BOOLEAN;
err _ Error["BYTES2 expression used as l-value"];
tgn _ GetIntrinsicBooleanType[cs];
pfd _ EmptyPFD[];
temp1 _ tgn;
temp0 _ pfd;
END;
END
END;

Expbytes2ProdCompileExpression:	PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode, temp1: ContextTreeNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	Expbytes2ProdData _ NARROW[tree.data];
BEGIN
result:	ValueNode;
contextTree1:	ContextTreeNode;
contextTree1 _ FakeDamageContextTree[contextTree];
result _ MakeDummy["bytes2"];
temp1 _ contextTree1;
temp0 _ result;
END;
END
END;

Expbytes2ProdEvaluateExpression:	PUBLIC PROC[ref: REF ANY, lc: LocalContextNode, fl: FieldListNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	Expbytes2ProdData _ NARROW[tree.data];
temp0 _ MakeDummy["bytes2"];
END
END;

ExpunitsProdCompileLValue:	PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, cs: CompilerStateNode] RETURNS[temp0: ParameterizedFieldDescriptorNode, temp1: TypeGraphNodeNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	ExpunitsProdData _ NARROW[tree.data];
BEGIN
pfd:	ParameterizedFieldDescriptorNode;
tgn:	TypeGraphNodeNode;
err:	BOOLEAN;
err _ Error["UNITS expression used as l-value"];
tgn _ GetIntrinsicBooleanType[cs];
pfd _ EmptyPFD[];
temp1 _ tgn;
temp0 _ pfd;
END;
END
END;

ExpunitsProdCompileExpression:	PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode, temp1: ContextTreeNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	ExpunitsProdData _ NARROW[tree.data];
BEGIN
result:	ValueNode;
contextTree1:	ContextTreeNode;
contextTree1 _ FakeDamageContextTree[contextTree];
result _ MakeDummy["units"];
temp1 _ contextTree1;
temp0 _ result;
END;
END
END;

ExpunitsProdEvaluateExpression:	PUBLIC PROC[ref: REF ANY, lc: LocalContextNode, fl: FieldListNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	ExpunitsProdData _ NARROW[tree.data];
temp0 _ MakeDummy["units"];
END
END;

Expunits2ProdCompileLValue:	PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, cs: CompilerStateNode] RETURNS[temp0: ParameterizedFieldDescriptorNode, temp1: TypeGraphNodeNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	Expunits2ProdData _ NARROW[tree.data];
BEGIN
pfd:	ParameterizedFieldDescriptorNode;
tgn:	TypeGraphNodeNode;
err:	BOOLEAN;
err _ Error["UNITS2 expression used as l-value"];
tgn _ GetIntrinsicBooleanType[cs];
pfd _ EmptyPFD[];
temp1 _ tgn;
temp0 _ pfd;
END;
END
END;

Expunits2ProdCompileExpression:	PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode, temp1: ContextTreeNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	Expunits2ProdData _ NARROW[tree.data];
BEGIN
result:	ValueNode;
contextTree1:	ContextTreeNode;
contextTree1 _ FakeDamageContextTree[contextTree];
result _ MakeDummy["units2"];
temp1 _ contextTree1;
temp0 _ result;
END;
END
END;

Expunits2ProdEvaluateExpression:	PUBLIC PROC[ref: REF ANY, lc: LocalContextNode, fl: FieldListNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	Expunits2ProdData _ NARROW[tree.data];
temp0 _ MakeDummy["units2"];
END
END;

ExpwordsProdCompileLValue:	PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, cs: CompilerStateNode] RETURNS[temp0: ParameterizedFieldDescriptorNode, temp1: TypeGraphNodeNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	ExpwordsProdData _ NARROW[tree.data];
BEGIN
pfd:	ParameterizedFieldDescriptorNode;
tgn:	TypeGraphNodeNode;
err:	BOOLEAN;
err _ Error["WORDS expression used as l-value"];
tgn _ GetIntrinsicBooleanType[cs];
pfd _ EmptyPFD[];
temp1 _ tgn;
temp0 _ pfd;
END;
END
END;

ExpwordsProdCompileExpression:	PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode, temp1: ContextTreeNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	ExpwordsProdData _ NARROW[tree.data];
BEGIN
result:	ValueNode;
contextTree1:	ContextTreeNode;
contextTree1 _ FakeDamageContextTree[contextTree];
result _ MakeDummy["words"];
temp1 _ contextTree1;
temp0 _ result;
END;
END
END;

ExpwordsProdEvaluateExpression:	PUBLIC PROC[ref: REF ANY, lc: LocalContextNode, fl: FieldListNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	ExpwordsProdData _ NARROW[tree.data];
temp0 _ MakeDummy["words"];
END
END;

Expwords2ProdCompileLValue:	PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, cs: CompilerStateNode] RETURNS[temp0: ParameterizedFieldDescriptorNode, temp1: TypeGraphNodeNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	Expwords2ProdData _ NARROW[tree.data];
BEGIN
pfd:	ParameterizedFieldDescriptorNode;
tgn:	TypeGraphNodeNode;
err:	BOOLEAN;
err _ Error["WORDS2 expression used as l-value"];
tgn _ GetIntrinsicBooleanType[cs];
pfd _ EmptyPFD[];
temp1 _ tgn;
temp0 _ pfd;
END;
END
END;

Expwords2ProdCompileExpression:	PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode, temp1: ContextTreeNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	Expwords2ProdData _ NARROW[tree.data];
BEGIN
result:	ValueNode;
contextTree1:	ContextTreeNode;
contextTree1 _ FakeDamageContextTree[contextTree];
result _ MakeDummy["words2"];
temp1 _ contextTree1;
temp0 _ result;
END;
END
END;

Expwords2ProdEvaluateExpression:	PUBLIC PROC[ref: REF ANY, lc: LocalContextNode, fl: FieldListNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	Expwords2ProdData _ NARROW[tree.data];
temp0 _ MakeDummy["words2"];
END
END;

ExpistypeProdCompileLValue:	PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, cs: CompilerStateNode] RETURNS[temp0: ParameterizedFieldDescriptorNode, temp1: TypeGraphNodeNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	ExpistypeProdData _ NARROW[tree.data];
BEGIN
pfd:	ParameterizedFieldDescriptorNode;
tgn:	TypeGraphNodeNode;
err:	BOOLEAN;
err _ Error["ISTYPE expression used as l-value"];
tgn _ GetIntrinsicBooleanType[cs];
pfd _ EmptyPFD[];
temp1 _ tgn;
temp0 _ pfd;
END;
END
END;

ExpistypeProdCompileExpression:	PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode, temp1: ContextTreeNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	ExpistypeProdData _ NARROW[tree.data];
BEGIN
result:	ValueNode;
contextTree1:	ContextTreeNode;
contextTree1 _ FakeDamageContextTree[contextTree];
result _ MakeDummy["istype"];
temp1 _ contextTree1;
temp0 _ result;
END;
END
END;

ExpistypeProdEvaluateExpression:	PUBLIC PROC[ref: REF ANY, lc: LocalContextNode, fl: FieldListNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	ExpistypeProdData _ NARROW[tree.data];
temp0 _ MakeDummy["istype"];
END
END;

ExpaddressProdCompileLValue:	PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, cs: CompilerStateNode] RETURNS[temp0: ParameterizedFieldDescriptorNode, temp1: TypeGraphNodeNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	ExpaddressProdData _ NARROW[tree.data];
BEGIN
pfd:	ParameterizedFieldDescriptorNode;
tgn:	TypeGraphNodeNode;
err:	BOOLEAN;
err _ Error["@ expression used as l-value"];
tgn _ GetIntrinsicBooleanType[cs];
pfd _ EmptyPFD[];
temp1 _ tgn;
temp0 _ pfd;
END;
END
END;

ExpaddressProdCompileExpression:	PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode, temp1: ContextTreeNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	ExpaddressProdData _ NARROW[tree.data];
BEGIN
result:	ValueNode;
contextTree1:	ContextTreeNode;
contextTree1 _ FakeDamageContextTree[contextTree];
result _ MakeDummy["address"];
temp1 _ contextTree1;
temp0 _ result;
END;
END
END;

ExpaddressProdEvaluateExpression:	PUBLIC PROC[ref: REF ANY, lc: LocalContextNode, fl: FieldListNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	ExpaddressProdData _ NARROW[tree.data];
temp0 _ MakeDummy["address"];
END
END;

ExpdescriptorProdCompileLValue:	PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, cs: CompilerStateNode] RETURNS[temp0: ParameterizedFieldDescriptorNode, temp1: TypeGraphNodeNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	ExpdescriptorProdData _ NARROW[tree.data];
BEGIN
pfd:	ParameterizedFieldDescriptorNode;
tgn:	TypeGraphNodeNode;
err:	BOOLEAN;
err _ Error["Descriptor used as l-value"];
tgn _ GetIntrinsicBooleanType[cs];
pfd _ EmptyPFD[];
temp1 _ tgn;
temp0 _ pfd;
END;
END
END;

ExpdescriptorProdCompileExpression:	PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode, temp1: ContextTreeNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	ExpdescriptorProdData _ NARROW[tree.data];
BEGIN
result:	ValueNode;
contextTree1:	ContextTreeNode;
contextTree1 _ FakeDamageContextTree[contextTree];
result _ MakeDummy["descriptor"];
temp1 _ contextTree1;
temp0 _ result;
END;
END
END;

ExpdescriptorProdEvaluateExpression:	PUBLIC PROC[ref: REF ANY, lc: LocalContextNode, fl: FieldListNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	ExpdescriptorProdData _ NARROW[tree.data];
temp0 _ MakeDummy["descriptor"];
END
END;

ExperrorProdCompileLValue:	PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, cs: CompilerStateNode] RETURNS[temp0: ParameterizedFieldDescriptorNode, temp1: TypeGraphNodeNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
BEGIN
pfd:	ParameterizedFieldDescriptorNode;
tgn:	TypeGraphNodeNode;
err:	BOOLEAN;
err _ Error["ERROR used as l-value"];
tgn _ GetIntrinsicBooleanType[cs];
pfd _ EmptyPFD[];
temp1 _ tgn;
temp0 _ pfd;
END;
END
END;

ExperrorProdCompileExpression:	PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode, temp1: ContextTreeNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
BEGIN
result:	ValueNode;
contextTree1:	ContextTreeNode;
contextTree1 _ FakeDamageContextTree[contextTree];
result _ MakeDummy["error"];
temp1 _ contextTree1;
temp0 _ result;
END;
END
END;

ExperrorProdEvaluateExpression:	PUBLIC PROC[ref: REF ANY, lc: LocalContextNode, fl: FieldListNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ MakeDummy["error"];
END
END;

ExptransferProdCompileLValue:	PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, cs: CompilerStateNode] RETURNS[temp0: ParameterizedFieldDescriptorNode, temp1: TypeGraphNodeNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	ExptransferProdData _ NARROW[tree.data];
BEGIN
pfd:	ParameterizedFieldDescriptorNode;
tgn:	TypeGraphNodeNode;
err:	BOOLEAN;
err _ Error["Transfer expression used as l-value"];
tgn _ GetIntrinsicBooleanType[cs];
pfd _ EmptyPFD[];
temp1 _ tgn;
temp0 _ pfd;
END;
END
END;

ExptransferProdCompileExpression:	PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode, temp1: ContextTreeNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	ExptransferProdData _ NARROW[tree.data];
BEGIN
result:	ValueNode;
contextTree1:	ContextTreeNode;
contextTree1 _ FakeDamageContextTree[contextTree];
result _ MakeDummy["transfer"];
temp1 _ contextTree1;
temp0 _ result;
END;
END
END;

ExptransferProdEvaluateExpression:	PUBLIC PROC[ref: REF ANY, lc: LocalContextNode, fl: FieldListNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode] =
BEGIN
tree:	ExpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	ExptransferProdData _ NARROW[tree.data];
temp0 _ MakeDummy["transfer"];
END
END;

NumdecimalProdIntegerValueFromLiteral:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BigINT] =
BEGIN
tree:	NumNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	NumdecimalProdData _ NARROW[tree.data];
BEGIN
digits:	ROPE;
digits _ RopeFromDecimalnum[treeData.Decimalnum];
temp0 _ ParseIntegerLiteral[digits, 10];
END;
END
END;

NumoctalProdIntegerValueFromLiteral:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BigINT] =
BEGIN
tree:	NumNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	NumoctalProdData _ NARROW[tree.data];
BEGIN
digits:	ROPE;
digits _ RopeFromOctalnum[treeData.Octalnum];
temp0 _ ParseIntegerLiteral[digits, 8];
END;
END
END;

NumhexProdIntegerValueFromLiteral:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BigINT] =
BEGIN
tree:	NumNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	NumhexProdData _ NARROW[tree.data];
BEGIN
digits:	ROPE;
digits _ RopeFromHexnum[treeData.Hexnum];
temp0 _ ParseIntegerLiteral[digits, 16];
END;
END
END;

AddOpplusProdIsMinus:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	AddOpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ False[];
END
END;

AddOpplusProdIsPlus:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	AddOpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ True[];
END
END;

AddOpminusProdIsMinus:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	AddOpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ True[];
END
END;

AddOpminusProdIsPlus:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	AddOpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ False[];
END
END;

MultOptimesProdIsMod:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	MultOpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ False[];
END
END;

MultOptimesProdIsDivide:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	MultOpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ False[];
END
END;

MultOptimesProdIsTimes:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	MultOpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ True[];
END
END;

MultOpdivideProdIsMod:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	MultOpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ False[];
END
END;

MultOpdivideProdIsDivide:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	MultOpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ True[];
END
END;

MultOpdivideProdIsTimes:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	MultOpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ False[];
END
END;

MultOpmodProdIsMod:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	MultOpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ True[];
END
END;

MultOpmodProdIsDivide:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	MultOpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ False[];
END
END;

MultOpmodProdIsTimes:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	MultOpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ False[];
END
END;

RelopeqProdGetRelationOp:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: RelationOp] =
BEGIN
tree:	RelopNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ RelationOp.eq;
END
END;

RelopneProdGetRelationOp:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: RelationOp] =
BEGIN
tree:	RelopNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ RelationOp.ne;
END
END;

RelopltProdGetRelationOp:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: RelationOp] =
BEGIN
tree:	RelopNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ RelationOp.lt;
END
END;

RelopleProdGetRelationOp:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: RelationOp] =
BEGIN
tree:	RelopNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ RelationOp.le;
END
END;

RelopgtProdGetRelationOp:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: RelationOp] =
BEGIN
tree:	RelopNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ RelationOp.gt;
END
END;

RelopgeProdGetRelationOp:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: RelationOp] =
BEGIN
tree:	RelopNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ RelationOp.ge;
END
END;

InitializationemptyProdInitializationIsAssignment:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	InitializationNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ False[];
END
END;

InitializationemptyProdInitializationIsBinding:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	InitializationNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ False[];
END
END;

InitializationemptyProdInitializationIsEmpty:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	InitializationNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ True[];
END
END;

InitializationbindingProdInitializationIsAssignment:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	InitializationNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	InitializationbindingProdData _ NARROW[tree.data];
temp0 _ False[];
END
END;

InitializationbindingProdInitializationIsBinding:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	InitializationNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	InitializationbindingProdData _ NARROW[tree.data];
temp0 _ True[];
END
END;

InitializationbindingProdInitializationIsEmpty:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	InitializationNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	InitializationbindingProdData _ NARROW[tree.data];
temp0 _ False[];
END
END;

InitializationassignmentProdInitializationIsAssignment:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	InitializationNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	InitializationassignmentProdData _ NARROW[tree.data];
temp0 _ True[];
END
END;

InitializationassignmentProdInitializationIsBinding:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	InitializationNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	InitializationassignmentProdData _ NARROW[tree.data];
temp0 _ False[];
END
END;

InitializationassignmentProdInitializationIsEmpty:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	InitializationNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	InitializationassignmentProdData _ NARROW[tree.data];
temp0 _ False[];
END
END;

TypeOpcodeProdTypeOpIsNil:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	TypeOpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ False[];
END
END;

TypeOpcodeProdTypeOpIsLast:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	TypeOpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ False[];
END
END;

TypeOpcodeProdTypeOpIsFirst:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	TypeOpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ False[];
END
END;

TypeOpcodeProdTypeOpIsCode:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	TypeOpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ True[];
END
END;

TypeOpfirstProdTypeOpIsNil:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	TypeOpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ False[];
END
END;

TypeOpfirstProdTypeOpIsLast:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	TypeOpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ False[];
END
END;

TypeOpfirstProdTypeOpIsFirst:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	TypeOpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ True[];
END
END;

TypeOpfirstProdTypeOpIsCode:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	TypeOpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ False[];
END
END;

TypeOplastProdTypeOpIsNil:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	TypeOpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ False[];
END
END;

TypeOplastProdTypeOpIsLast:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	TypeOpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ True[];
END
END;

TypeOplastProdTypeOpIsFirst:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	TypeOpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ False[];
END
END;

TypeOplastProdTypeOpIsCode:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	TypeOpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ False[];
END
END;

TypeOpnilProdTypeOpIsNil:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	TypeOpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ True[];
END
END;

TypeOpnilProdTypeOpIsLast:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	TypeOpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ False[];
END
END;

TypeOpnilProdTypeOpIsFirst:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	TypeOpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ False[];
END
END;

TypeOpnilProdTypeOpIsCode:	PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree:	TypeOpNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp0 _ False[];
END
END;

QualifierprefixopProdCompileQualifiedExpression:	PUBLIC PROC[ref: REF ANY, expValue: ValueNode, contextTree: ContextTreeNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode, temp1: ContextTreeNode] =
BEGIN
tree:	QualifierNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	QualifierprefixopProdData _ NARROW[tree.data];
temp1 _ FakeDamageContextTree[contextTree];
temp0 _ MakeDummy["Qualifier.prefixop"];
END
END;

QualifiertypeopProdCompileQualifiedExpression:	PUBLIC PROC[ref: REF ANY, expValue: ValueNode, contextTree: ContextTreeNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode, temp1: ContextTreeNode] =
BEGIN
tree:	QualifierNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	QualifiertypeopProdData _ NARROW[tree.data];
temp1 _ FakeDamageContextTree[contextTree];
temp0 _ MakeDummy["Qualifier.prefixop"];
END
END;

QualifiersizeProdCompileQualifiedExpression:	PUBLIC PROC[ref: REF ANY, expValue: ValueNode, contextTree: ContextTreeNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode, temp1: ContextTreeNode] =
BEGIN
tree:	QualifierNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp1 _ FakeDamageContextTree[contextTree];
temp0 _ MakeDummy["Qualifier.prefixop"];
END
END;

QualifierbitsProdCompileQualifiedExpression:	PUBLIC PROC[ref: REF ANY, expValue: ValueNode, contextTree: ContextTreeNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode, temp1: ContextTreeNode] =
BEGIN
tree:	QualifierNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp1 _ FakeDamageContextTree[contextTree];
temp0 _ MakeDummy["Qualifier.prefixop"];
END
END;

QualifierbytesProdCompileQualifiedExpression:	PUBLIC PROC[ref: REF ANY, expValue: ValueNode, contextTree: ContextTreeNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode, temp1: ContextTreeNode] =
BEGIN
tree:	QualifierNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp1 _ FakeDamageContextTree[contextTree];
temp0 _ MakeDummy["Qualifier.prefixop"];
END
END;

QualifierunitsProdCompileQualifiedExpression:	PUBLIC PROC[ref: REF ANY, expValue: ValueNode, contextTree: ContextTreeNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode, temp1: ContextTreeNode] =
BEGIN
tree:	QualifierNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp1 _ FakeDamageContextTree[contextTree];
temp0 _ MakeDummy["Qualifier.prefixop"];
END
END;

QualifierwordsProdCompileQualifiedExpression:	PUBLIC PROC[ref: REF ANY, expValue: ValueNode, contextTree: ContextTreeNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode, temp1: ContextTreeNode] =
BEGIN
tree:	QualifierNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp1 _ FakeDamageContextTree[contextTree];
temp0 _ MakeDummy["Qualifier.prefixop"];
END
END;

QualifierapplyProdCompileQualifiedExpression:	PUBLIC PROC[ref: REF ANY, expValue: ValueNode, contextTree: ContextTreeNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode, temp1: ContextTreeNode] =
BEGIN
tree:	QualifierNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	QualifierapplyProdData _ NARROW[tree.data];
temp1 _ FakeDamageContextTree[contextTree];
temp0 _ MakeDummy["Qualifier.apply"];
END
END;

QualifierselectProdCompileQualifiedExpression:	PUBLIC PROC[ref: REF ANY, expValue: ValueNode, contextTree: ContextTreeNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode, temp1: ContextTreeNode] =
BEGIN
tree:	QualifierNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData:	QualifierselectProdData _ NARROW[tree.data];
temp1 _ FakeDamageContextTree[contextTree];
temp0 _ MakeDummy["Qualifier.prefixop"];
END
END;

QualifierindirectProdCompileQualifiedExpression:	PUBLIC PROC[ref: REF ANY, expValue: ValueNode, contextTree: ContextTreeNode, cs: CompilerStateNode, targetType: TypeGraphNodeNode] RETURNS[temp0: ValueNode, temp1: ContextTreeNode] =
BEGIN
tree:	QualifierNode_ NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
temp1 _ FakeDamageContextTree[contextTree];
temp0 _ MakeDummy["Qualifier.prefixop"];
END
END;

END..