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

DIRECTORY
	SaffronTreeDeclsDef,
	SaffronGenericDef,
	SaffronATDef;

SaffronAG6aDef: CEDAR DEFINITIONS = 
BEGIN
OPEN SaffronTreeDeclsDef, SaffronGenericDef, SaffronATDef;

-- TypeExptypeidProd

TypeExptypeidProdData:	TYPE = REF TypeExptypeidProdDataBody;
TypeExptypeidProdDataBody:	TYPE = RECORD[
TypeId: TypeIdNode];

TypeExptypeidProdProcs:	TypeExpNodeProcs;

BuildTypeExptypeidProdNode:	PROC[position: INT, length: INT, TypeId: TypeIdNode]
	RETURNS[TypeExpNode];

TypeExptypeidProdMakeType:	MakeTypeProcType;
TypeExptypeidProdAddSizeDependencies:	AddSizeDependenciesProcType;
TypeExptypeidProdAddFirstDependencies:	AddFirstDependenciesProcType;
TypeExptypeidProdAddLastDependencies:	AddLastDependenciesProcType;
TypeExptypeidProdCompileSizeOfTypeExpression:	CompileSizeOfTypeExpressionProcType;
TypeExptypeidProdCompileFirstOfTypeExpression:	CompileFirstOfTypeExpressionProcType;
TypeExptypeidProdCompileLastOfTypeExpression:	CompileLastOfTypeExpressionProcType;
TypeExptypeidProdEvaluateSizeOfTypeExpression:	EvaluateSizeOfTypeExpressionProcType;
TypeExptypeidProdEvaluateFirstOfTypeExpression:	EvaluateFirstOfTypeExpressionProcType;
TypeExptypeidProdEvaluateLastOfTypeExpression:	EvaluateLastOfTypeExpressionProcType;

-- TypeExpsubrangeProd

TypeExpsubrangeProdData:	TYPE = REF TypeExpsubrangeProdDataBody;
TypeExpsubrangeProdDataBody:	TYPE = RECORD[
Subrange: SubrangeNode];

TypeExpsubrangeProdProcs:	TypeExpNodeProcs;

BuildTypeExpsubrangeProdNode:	PROC[position: INT, length: INT, Subrange: SubrangeNode]
	RETURNS[TypeExpNode];

TypeExpsubrangeProdMakeType:	MakeTypeProcType;
TypeExpsubrangeProdAddSizeDependencies:	AddSizeDependenciesProcType;
TypeExpsubrangeProdAddFirstDependencies:	AddFirstDependenciesProcType;
TypeExpsubrangeProdAddLastDependencies:	AddLastDependenciesProcType;
TypeExpsubrangeProdCompileSizeOfTypeExpression:	CompileSizeOfTypeExpressionProcType;
TypeExpsubrangeProdCompileFirstOfTypeExpression:	CompileFirstOfTypeExpressionProcType;
TypeExpsubrangeProdCompileLastOfTypeExpression:	CompileLastOfTypeExpressionProcType;
TypeExpsubrangeProdEvaluateSizeOfTypeExpression:	EvaluateSizeOfTypeExpressionProcType;
TypeExpsubrangeProdEvaluateFirstOfTypeExpression:	EvaluateFirstOfTypeExpressionProcType;
TypeExpsubrangeProdEvaluateLastOfTypeExpression:	EvaluateLastOfTypeExpressionProcType;

-- TypeExpenumProd

TypeExpenumProdData:	TYPE = REF TypeExpenumProdDataBody;
TypeExpenumProdDataBody:	TYPE = RECORD[
MachineDependent: MachineDependentNode, ElementList: ElementListNode];

TypeExpenumProdProcs:	TypeExpNodeProcs;

BuildTypeExpenumProdNode:	PROC[position: INT, length: INT, MachineDependent: MachineDependentNode, ElementList: ElementListNode]
	RETURNS[TypeExpNode];

TypeExpenumProdMakeType:	MakeTypeProcType;
TypeExpenumProdAddSizeDependencies:	AddSizeDependenciesProcType;
TypeExpenumProdAddFirstDependencies:	AddFirstDependenciesProcType;
TypeExpenumProdAddLastDependencies:	AddLastDependenciesProcType;
TypeExpenumProdCompileSizeOfTypeExpression:	CompileSizeOfTypeExpressionProcType;
TypeExpenumProdCompileFirstOfTypeExpression:	CompileFirstOfTypeExpressionProcType;
TypeExpenumProdCompileLastOfTypeExpression:	CompileLastOfTypeExpressionProcType;
TypeExpenumProdEvaluateSizeOfTypeExpression:	EvaluateSizeOfTypeExpressionProcType;
TypeExpenumProdEvaluateFirstOfTypeExpression:	EvaluateFirstOfTypeExpressionProcType;
TypeExpenumProdEvaluateLastOfTypeExpression:	EvaluateLastOfTypeExpressionProcType;

-- TypeExprecordProd

TypeExprecordProdData:	TYPE = REF TypeExprecordProdDataBody;
TypeExprecordProdDataBody:	TYPE = RECORD[
MachineDependent: MachineDependentNode, Monitored: MonitoredNode, RecList: RecListNode];

TypeExprecordProdProcs:	TypeExpNodeProcs;

BuildTypeExprecordProdNode:	PROC[position: INT, length: INT, MachineDependent: MachineDependentNode, Monitored: MonitoredNode, RecList: RecListNode]
	RETURNS[TypeExpNode];

TypeExprecordProdMakeType:	MakeTypeProcType;
TypeExprecordProdAddSizeDependencies:	AddSizeDependenciesProcType;
TypeExprecordProdAddFirstDependencies:	AddFirstDependenciesProcType;
TypeExprecordProdAddLastDependencies:	AddLastDependenciesProcType;
TypeExprecordProdCompileSizeOfTypeExpression:	CompileSizeOfTypeExpressionProcType;
TypeExprecordProdCompileFirstOfTypeExpression:	CompileFirstOfTypeExpressionProcType;
TypeExprecordProdCompileLastOfTypeExpression:	CompileLastOfTypeExpressionProcType;
TypeExprecordProdEvaluateSizeOfTypeExpression:	EvaluateSizeOfTypeExpressionProcType;
TypeExprecordProdEvaluateFirstOfTypeExpression:	EvaluateFirstOfTypeExpressionProcType;
TypeExprecordProdEvaluateLastOfTypeExpression:	EvaluateLastOfTypeExpressionProcType;

-- TypeExppointerProd

TypeExppointerProdData:	TYPE = REF TypeExppointerProdDataBody;
TypeExppointerProdDataBody:	TYPE = RECORD[
Ordered: OrderedNode, Base: BaseNode, PointerType: PointerTypeNode];

TypeExppointerProdProcs:	TypeExpNodeProcs;

BuildTypeExppointerProdNode:	PROC[position: INT, length: INT, Ordered: OrderedNode, Base: BaseNode, PointerType: PointerTypeNode]
	RETURNS[TypeExpNode];

TypeExppointerProdMakeType:	MakeTypeProcType;
TypeExppointerProdAddSizeDependencies:	AddSizeDependenciesProcType;
TypeExppointerProdAddFirstDependencies:	AddFirstDependenciesProcType;
TypeExppointerProdAddLastDependencies:	AddLastDependenciesProcType;
TypeExppointerProdCompileSizeOfTypeExpression:	CompileSizeOfTypeExpressionProcType;
TypeExppointerProdCompileFirstOfTypeExpression:	CompileFirstOfTypeExpressionProcType;
TypeExppointerProdCompileLastOfTypeExpression:	CompileLastOfTypeExpressionProcType;
TypeExppointerProdEvaluateSizeOfTypeExpression:	EvaluateSizeOfTypeExpressionProcType;
TypeExppointerProdEvaluateFirstOfTypeExpression:	EvaluateFirstOfTypeExpressionProcType;
TypeExppointerProdEvaluateLastOfTypeExpression:	EvaluateLastOfTypeExpressionProcType;

-- TypeExpvarProd

TypeExpvarProdData:	TYPE = REF TypeExpvarProdDataBody;
TypeExpvarProdDataBody:	TYPE = RECORD[
TypeExp: TypeExpNode];

TypeExpvarProdProcs:	TypeExpNodeProcs;

BuildTypeExpvarProdNode:	PROC[position: INT, length: INT, TypeExp: TypeExpNode]
	RETURNS[TypeExpNode];

TypeExpvarProdMakeType:	MakeTypeProcType;
TypeExpvarProdAddSizeDependencies:	AddSizeDependenciesProcType;
TypeExpvarProdAddFirstDependencies:	AddFirstDependenciesProcType;
TypeExpvarProdAddLastDependencies:	AddLastDependenciesProcType;
TypeExpvarProdCompileSizeOfTypeExpression:	CompileSizeOfTypeExpressionProcType;
TypeExpvarProdCompileFirstOfTypeExpression:	CompileFirstOfTypeExpressionProcType;
TypeExpvarProdCompileLastOfTypeExpression:	CompileLastOfTypeExpressionProcType;
TypeExpvarProdEvaluateSizeOfTypeExpression:	EvaluateSizeOfTypeExpressionProcType;
TypeExpvarProdEvaluateFirstOfTypeExpression:	EvaluateFirstOfTypeExpressionProcType;
TypeExpvarProdEvaluateLastOfTypeExpression:	EvaluateLastOfTypeExpressionProcType;

-- TypeExprefProd

TypeExprefProdData:	TYPE = REF TypeExprefProdDataBody;
TypeExprefProdDataBody:	TYPE = RECORD[
ReadOnly: ReadOnlyNode, TypeExp: TypeExpNode];

TypeExprefProdProcs:	TypeExpNodeProcs;

BuildTypeExprefProdNode:	PROC[position: INT, length: INT, ReadOnly: ReadOnlyNode, TypeExp: TypeExpNode]
	RETURNS[TypeExpNode];

TypeExprefProdMakeType:	MakeTypeProcType;
TypeExprefProdAddSizeDependencies:	AddSizeDependenciesProcType;
TypeExprefProdAddFirstDependencies:	AddFirstDependenciesProcType;
TypeExprefProdAddLastDependencies:	AddLastDependenciesProcType;
TypeExprefProdCompileSizeOfTypeExpression:	CompileSizeOfTypeExpressionProcType;
TypeExprefProdCompileFirstOfTypeExpression:	CompileFirstOfTypeExpressionProcType;
TypeExprefProdCompileLastOfTypeExpression:	CompileLastOfTypeExpressionProcType;
TypeExprefProdEvaluateSizeOfTypeExpression:	EvaluateSizeOfTypeExpressionProcType;
TypeExprefProdEvaluateFirstOfTypeExpression:	EvaluateFirstOfTypeExpressionProcType;
TypeExprefProdEvaluateLastOfTypeExpression:	EvaluateLastOfTypeExpressionProcType;

-- TypeExprefanyProd

TypeExprefanyProdData:	TYPE = REF TypeExprefanyProdDataBody;
TypeExprefanyProdDataBody:	TYPE = RECORD[
ReadOnly: ReadOnlyNode];

TypeExprefanyProdProcs:	TypeExpNodeProcs;

BuildTypeExprefanyProdNode:	PROC[position: INT, length: INT, ReadOnly: ReadOnlyNode]
	RETURNS[TypeExpNode];

TypeExprefanyProdMakeType:	MakeTypeProcType;
TypeExprefanyProdAddSizeDependencies:	AddSizeDependenciesProcType;
TypeExprefanyProdAddFirstDependencies:	AddFirstDependenciesProcType;
TypeExprefanyProdAddLastDependencies:	AddLastDependenciesProcType;
TypeExprefanyProdCompileSizeOfTypeExpression:	CompileSizeOfTypeExpressionProcType;
TypeExprefanyProdCompileFirstOfTypeExpression:	CompileFirstOfTypeExpressionProcType;
TypeExprefanyProdCompileLastOfTypeExpression:	CompileLastOfTypeExpressionProcType;
TypeExprefanyProdEvaluateSizeOfTypeExpression:	EvaluateSizeOfTypeExpressionProcType;
TypeExprefanyProdEvaluateFirstOfTypeExpression:	EvaluateFirstOfTypeExpressionProcType;
TypeExprefanyProdEvaluateLastOfTypeExpression:	EvaluateLastOfTypeExpressionProcType;

-- TypeExprefunspecifiedProd

TypeExprefunspecifiedProdData:	TYPE = REF TypeExprefunspecifiedProdDataBody;
TypeExprefunspecifiedProdDataBody:	TYPE = RECORD[
];

TypeExprefunspecifiedProdProcs:	TypeExpNodeProcs;

BuildTypeExprefunspecifiedProdNode:	PROC[position: INT, length: INT]
	RETURNS[TypeExpNode];

TypeExprefunspecifiedProdMakeType:	MakeTypeProcType;
TypeExprefunspecifiedProdAddSizeDependencies:	AddSizeDependenciesProcType;
TypeExprefunspecifiedProdAddFirstDependencies:	AddFirstDependenciesProcType;
TypeExprefunspecifiedProdAddLastDependencies:	AddLastDependenciesProcType;
TypeExprefunspecifiedProdCompileSizeOfTypeExpression:	CompileSizeOfTypeExpressionProcType;
TypeExprefunspecifiedProdCompileFirstOfTypeExpression:	CompileFirstOfTypeExpressionProcType;
TypeExprefunspecifiedProdCompileLastOfTypeExpression:	CompileLastOfTypeExpressionProcType;
TypeExprefunspecifiedProdEvaluateSizeOfTypeExpression:	EvaluateSizeOfTypeExpressionProcType;
TypeExprefunspecifiedProdEvaluateFirstOfTypeExpression:	EvaluateFirstOfTypeExpressionProcType;
TypeExprefunspecifiedProdEvaluateLastOfTypeExpression:	EvaluateLastOfTypeExpressionProcType;

-- TypeExplistProd

TypeExplistProdData:	TYPE = REF TypeExplistProdDataBody;
TypeExplistProdDataBody:	TYPE = RECORD[
ReadOnly: ReadOnlyNode, TypeExp: TypeExpNode];

TypeExplistProdProcs:	TypeExpNodeProcs;

BuildTypeExplistProdNode:	PROC[position: INT, length: INT, ReadOnly: ReadOnlyNode, TypeExp: TypeExpNode]
	RETURNS[TypeExpNode];

TypeExplistProdMakeType:	MakeTypeProcType;
TypeExplistProdAddSizeDependencies:	AddSizeDependenciesProcType;
TypeExplistProdAddFirstDependencies:	AddFirstDependenciesProcType;
TypeExplistProdAddLastDependencies:	AddLastDependenciesProcType;
TypeExplistProdCompileSizeOfTypeExpression:	CompileSizeOfTypeExpressionProcType;
TypeExplistProdCompileFirstOfTypeExpression:	CompileFirstOfTypeExpressionProcType;
TypeExplistProdCompileLastOfTypeExpression:	CompileLastOfTypeExpressionProcType;
TypeExplistProdEvaluateSizeOfTypeExpression:	EvaluateSizeOfTypeExpressionProcType;
TypeExplistProdEvaluateFirstOfTypeExpression:	EvaluateFirstOfTypeExpressionProcType;
TypeExplistProdEvaluateLastOfTypeExpression:	EvaluateLastOfTypeExpressionProcType;

-- TypeExparrayProd

TypeExparrayProdData:	TYPE = REF TypeExparrayProdDataBody;
TypeExparrayProdDataBody:	TYPE = RECORD[
Packed: PackedNode, OptType: OptTypeNode, TypeExp: TypeExpNode];

TypeExparrayProdProcs:	TypeExpNodeProcs;

BuildTypeExparrayProdNode:	PROC[position: INT, length: INT, Packed: PackedNode, OptType: OptTypeNode, TypeExp: TypeExpNode]
	RETURNS[TypeExpNode];

TypeExparrayProdMakeType:	MakeTypeProcType;
TypeExparrayProdAddSizeDependencies:	AddSizeDependenciesProcType;
TypeExparrayProdAddFirstDependencies:	AddFirstDependenciesProcType;
TypeExparrayProdAddLastDependencies:	AddLastDependenciesProcType;
TypeExparrayProdCompileSizeOfTypeExpression:	CompileSizeOfTypeExpressionProcType;
TypeExparrayProdCompileFirstOfTypeExpression:	CompileFirstOfTypeExpressionProcType;
TypeExparrayProdCompileLastOfTypeExpression:	CompileLastOfTypeExpressionProcType;
TypeExparrayProdEvaluateSizeOfTypeExpression:	EvaluateSizeOfTypeExpressionProcType;
TypeExparrayProdEvaluateFirstOfTypeExpression:	EvaluateFirstOfTypeExpressionProcType;
TypeExparrayProdEvaluateLastOfTypeExpression:	EvaluateLastOfTypeExpressionProcType;

-- TypeExpdescriptorProd

TypeExpdescriptorProdData:	TYPE = REF TypeExpdescriptorProdDataBody;
TypeExpdescriptorProdDataBody:	TYPE = RECORD[
ReadOnly: ReadOnlyNode, TypeExp: TypeExpNode];

TypeExpdescriptorProdProcs:	TypeExpNodeProcs;

BuildTypeExpdescriptorProdNode:	PROC[position: INT, length: INT, ReadOnly: ReadOnlyNode, TypeExp: TypeExpNode]
	RETURNS[TypeExpNode];

TypeExpdescriptorProdMakeType:	MakeTypeProcType;
TypeExpdescriptorProdAddSizeDependencies:	AddSizeDependenciesProcType;
TypeExpdescriptorProdAddFirstDependencies:	AddFirstDependenciesProcType;
TypeExpdescriptorProdAddLastDependencies:	AddLastDependenciesProcType;
TypeExpdescriptorProdCompileSizeOfTypeExpression:	CompileSizeOfTypeExpressionProcType;
TypeExpdescriptorProdCompileFirstOfTypeExpression:	CompileFirstOfTypeExpressionProcType;
TypeExpdescriptorProdCompileLastOfTypeExpression:	CompileLastOfTypeExpressionProcType;
TypeExpdescriptorProdEvaluateSizeOfTypeExpression:	EvaluateSizeOfTypeExpressionProcType;
TypeExpdescriptorProdEvaluateFirstOfTypeExpression:	EvaluateFirstOfTypeExpressionProcType;
TypeExpdescriptorProdEvaluateLastOfTypeExpression:	EvaluateLastOfTypeExpressionProcType;

-- TypeExptransferProd

TypeExptransferProdData:	TYPE = REF TypeExptransferProdDataBody;
TypeExptransferProdDataBody:	TYPE = RECORD[
Safe: SafeNode, TransferMode: TransferModeNode, Arguments: ArgumentsNode];

TypeExptransferProdProcs:	TypeExpNodeProcs;

BuildTypeExptransferProdNode:	PROC[position: INT, length: INT, Safe: SafeNode, TransferMode: TransferModeNode, Arguments: ArgumentsNode]
	RETURNS[TypeExpNode];

TypeExptransferProdMakeType:	MakeTypeProcType;
TypeExptransferProdAddSizeDependencies:	AddSizeDependenciesProcType;
TypeExptransferProdAddFirstDependencies:	AddFirstDependenciesProcType;
TypeExptransferProdAddLastDependencies:	AddLastDependenciesProcType;
TypeExptransferProdCompileSizeOfTypeExpression:	CompileSizeOfTypeExpressionProcType;
TypeExptransferProdCompileFirstOfTypeExpression:	CompileFirstOfTypeExpressionProcType;
TypeExptransferProdCompileLastOfTypeExpression:	CompileLastOfTypeExpressionProcType;
TypeExptransferProdEvaluateSizeOfTypeExpression:	EvaluateSizeOfTypeExpressionProcType;
TypeExptransferProdEvaluateFirstOfTypeExpression:	EvaluateFirstOfTypeExpressionProcType;
TypeExptransferProdEvaluateLastOfTypeExpression:	EvaluateLastOfTypeExpressionProcType;

-- TypeExprelativeProd

TypeExprelativeProdData:	TYPE = REF TypeExprelativeProdDataBody;
TypeExprelativeProdDataBody:	TYPE = RECORD[
TypeId: TypeIdNode, TypeExp: TypeExpNode];

TypeExprelativeProdProcs:	TypeExpNodeProcs;

BuildTypeExprelativeProdNode:	PROC[position: INT, length: INT, TypeId: TypeIdNode, TypeExp: TypeExpNode]
	RETURNS[TypeExpNode];

TypeExprelativeProdMakeType:	MakeTypeProcType;
TypeExprelativeProdAddSizeDependencies:	AddSizeDependenciesProcType;
TypeExprelativeProdAddFirstDependencies:	AddFirstDependenciesProcType;
TypeExprelativeProdAddLastDependencies:	AddLastDependenciesProcType;
TypeExprelativeProdCompileSizeOfTypeExpression:	CompileSizeOfTypeExpressionProcType;
TypeExprelativeProdCompileFirstOfTypeExpression:	CompileFirstOfTypeExpressionProcType;
TypeExprelativeProdCompileLastOfTypeExpression:	CompileLastOfTypeExpressionProcType;
TypeExprelativeProdEvaluateSizeOfTypeExpression:	EvaluateSizeOfTypeExpressionProcType;
TypeExprelativeProdEvaluateFirstOfTypeExpression:	EvaluateFirstOfTypeExpressionProcType;
TypeExprelativeProdEvaluateLastOfTypeExpression:	EvaluateLastOfTypeExpressionProcType;

-- TypeExpzoneProd

TypeExpzoneProdData:	TYPE = REF TypeExpzoneProdDataBody;
TypeExpzoneProdDataBody:	TYPE = RECORD[
Uncounted: UncountedNode];

TypeExpzoneProdProcs:	TypeExpNodeProcs;

BuildTypeExpzoneProdNode:	PROC[position: INT, length: INT, Uncounted: UncountedNode]
	RETURNS[TypeExpNode];

TypeExpzoneProdMakeType:	MakeTypeProcType;
TypeExpzoneProdAddSizeDependencies:	AddSizeDependenciesProcType;
TypeExpzoneProdAddFirstDependencies:	AddFirstDependenciesProcType;
TypeExpzoneProdAddLastDependencies:	AddLastDependenciesProcType;
TypeExpzoneProdCompileSizeOfTypeExpression:	CompileSizeOfTypeExpressionProcType;
TypeExpzoneProdCompileFirstOfTypeExpression:	CompileFirstOfTypeExpressionProcType;
TypeExpzoneProdCompileLastOfTypeExpression:	CompileLastOfTypeExpressionProcType;
TypeExpzoneProdEvaluateSizeOfTypeExpression:	EvaluateSizeOfTypeExpressionProcType;
TypeExpzoneProdEvaluateFirstOfTypeExpression:	EvaluateFirstOfTypeExpressionProcType;
TypeExpzoneProdEvaluateLastOfTypeExpression:	EvaluateLastOfTypeExpressionProcType;

-- TypeExplongProd

TypeExplongProdData:	TYPE = REF TypeExplongProdDataBody;
TypeExplongProdDataBody:	TYPE = RECORD[
TypeExp: TypeExpNode];

TypeExplongProdProcs:	TypeExpNodeProcs;

BuildTypeExplongProdNode:	PROC[position: INT, length: INT, TypeExp: TypeExpNode]
	RETURNS[TypeExpNode];

TypeExplongProdMakeType:	MakeTypeProcType;
TypeExplongProdAddSizeDependencies:	AddSizeDependenciesProcType;
TypeExplongProdAddFirstDependencies:	AddFirstDependenciesProcType;
TypeExplongProdAddLastDependencies:	AddLastDependenciesProcType;
TypeExplongProdCompileSizeOfTypeExpression:	CompileSizeOfTypeExpressionProcType;
TypeExplongProdCompileFirstOfTypeExpression:	CompileFirstOfTypeExpressionProcType;
TypeExplongProdCompileLastOfTypeExpression:	CompileLastOfTypeExpressionProcType;
TypeExplongProdEvaluateSizeOfTypeExpression:	EvaluateSizeOfTypeExpressionProcType;
TypeExplongProdEvaluateFirstOfTypeExpression:	EvaluateFirstOfTypeExpressionProcType;
TypeExplongProdEvaluateLastOfTypeExpression:	EvaluateLastOfTypeExpressionProcType;

-- TypeExpframeProd

TypeExpframeProdData:	TYPE = REF TypeExpframeProdDataBody;
TypeExpframeProdDataBody:	TYPE = RECORD[
Id: IdNode];

TypeExpframeProdProcs:	TypeExpNodeProcs;

BuildTypeExpframeProdNode:	PROC[position: INT, length: INT, Id: IdNode]
	RETURNS[TypeExpNode];

TypeExpframeProdMakeType:	MakeTypeProcType;
TypeExpframeProdAddSizeDependencies:	AddSizeDependenciesProcType;
TypeExpframeProdAddFirstDependencies:	AddFirstDependenciesProcType;
TypeExpframeProdAddLastDependencies:	AddLastDependenciesProcType;
TypeExpframeProdCompileSizeOfTypeExpression:	CompileSizeOfTypeExpressionProcType;
TypeExpframeProdCompileFirstOfTypeExpression:	CompileFirstOfTypeExpressionProcType;
TypeExpframeProdCompileLastOfTypeExpression:	CompileLastOfTypeExpressionProcType;
TypeExpframeProdEvaluateSizeOfTypeExpression:	EvaluateSizeOfTypeExpressionProcType;
TypeExpframeProdEvaluateFirstOfTypeExpression:	EvaluateFirstOfTypeExpressionProcType;
TypeExpframeProdEvaluateLastOfTypeExpression:	EvaluateLastOfTypeExpressionProcType;

-- TypeExppaintedProd

TypeExppaintedProdData:	TYPE = REF TypeExppaintedProdDataBody;
TypeExppaintedProdDataBody:	TYPE = RECORD[
TypeId: TypeIdNode, TypeExp: TypeExpNode];

TypeExppaintedProdProcs:	TypeExpNodeProcs;

BuildTypeExppaintedProdNode:	PROC[position: INT, length: INT, TypeId: TypeIdNode, TypeExp: TypeExpNode]
	RETURNS[TypeExpNode];

TypeExppaintedProdMakeType:	MakeTypeProcType;
TypeExppaintedProdAddSizeDependencies:	AddSizeDependenciesProcType;
TypeExppaintedProdAddFirstDependencies:	AddFirstDependenciesProcType;
TypeExppaintedProdAddLastDependencies:	AddLastDependenciesProcType;
TypeExppaintedProdCompileSizeOfTypeExpression:	CompileSizeOfTypeExpressionProcType;
TypeExppaintedProdCompileFirstOfTypeExpression:	CompileFirstOfTypeExpressionProcType;
TypeExppaintedProdCompileLastOfTypeExpression:	CompileLastOfTypeExpressionProcType;
TypeExppaintedProdEvaluateSizeOfTypeExpression:	EvaluateSizeOfTypeExpressionProcType;
TypeExppaintedProdEvaluateFirstOfTypeExpression:	EvaluateFirstOfTypeExpressionProcType;
TypeExppaintedProdEvaluateLastOfTypeExpression:	EvaluateLastOfTypeExpressionProcType;

-- TypeExptypeapplyProd

TypeExptypeapplyProdData:	TYPE = REF TypeExptypeapplyProdDataBody;
TypeExptypeapplyProdDataBody:	TYPE = RECORD[
TypeApply: TypeApplyNode];

TypeExptypeapplyProdProcs:	TypeExpNodeProcs;

BuildTypeExptypeapplyProdNode:	PROC[position: INT, length: INT, TypeApply: TypeApplyNode]
	RETURNS[TypeExpNode];

TypeExptypeapplyProdMakeType:	MakeTypeProcType;
TypeExptypeapplyProdAddSizeDependencies:	AddSizeDependenciesProcType;
TypeExptypeapplyProdAddFirstDependencies:	AddFirstDependenciesProcType;
TypeExptypeapplyProdAddLastDependencies:	AddLastDependenciesProcType;
TypeExptypeapplyProdCompileSizeOfTypeExpression:	CompileSizeOfTypeExpressionProcType;
TypeExptypeapplyProdCompileFirstOfTypeExpression:	CompileFirstOfTypeExpressionProcType;
TypeExptypeapplyProdCompileLastOfTypeExpression:	CompileLastOfTypeExpressionProcType;
TypeExptypeapplyProdEvaluateSizeOfTypeExpression:	EvaluateSizeOfTypeExpressionProcType;
TypeExptypeapplyProdEvaluateFirstOfTypeExpression:	EvaluateFirstOfTypeExpressionProcType;
TypeExptypeapplyProdEvaluateLastOfTypeExpression:	EvaluateLastOfTypeExpressionProcType;

-- TypeExpunionProd

TypeExpunionProdData:	TYPE = REF TypeExpunionProdDataBody;
TypeExpunionProdDataBody:	TYPE = RECORD[
Tag: TagNode, VariantList: VariantListNode];

TypeExpunionProdProcs:	TypeExpNodeProcs;

BuildTypeExpunionProdNode:	PROC[position: INT, length: INT, Tag: TagNode, VariantList: VariantListNode]
	RETURNS[TypeExpNode];

TypeExpunionProdMakeType:	MakeTypeProcType;
TypeExpunionProdAddSizeDependencies:	AddSizeDependenciesProcType;
TypeExpunionProdAddFirstDependencies:	AddFirstDependenciesProcType;
TypeExpunionProdAddLastDependencies:	AddLastDependenciesProcType;
TypeExpunionProdCompileSizeOfTypeExpression:	CompileSizeOfTypeExpressionProcType;
TypeExpunionProdCompileFirstOfTypeExpression:	CompileFirstOfTypeExpressionProcType;
TypeExpunionProdCompileLastOfTypeExpression:	CompileLastOfTypeExpressionProcType;
TypeExpunionProdEvaluateSizeOfTypeExpression:	EvaluateSizeOfTypeExpressionProcType;
TypeExpunionProdEvaluateFirstOfTypeExpression:	EvaluateFirstOfTypeExpressionProcType;
TypeExpunionProdEvaluateLastOfTypeExpression:	EvaluateLastOfTypeExpressionProcType;

-- TypeExpsequenceProd

TypeExpsequenceProdData:	TYPE = REF TypeExpsequenceProdDataBody;
TypeExpsequenceProdDataBody:	TYPE = RECORD[
Packed: PackedNode, Tag: TagNode, TypeExp: TypeExpNode];

TypeExpsequenceProdProcs:	TypeExpNodeProcs;

BuildTypeExpsequenceProdNode:	PROC[position: INT, length: INT, Packed: PackedNode, Tag: TagNode, TypeExp: TypeExpNode]
	RETURNS[TypeExpNode];

TypeExpsequenceProdMakeType:	MakeTypeProcType;
TypeExpsequenceProdAddSizeDependencies:	AddSizeDependenciesProcType;
TypeExpsequenceProdAddFirstDependencies:	AddFirstDependenciesProcType;
TypeExpsequenceProdAddLastDependencies:	AddLastDependenciesProcType;
TypeExpsequenceProdCompileSizeOfTypeExpression:	CompileSizeOfTypeExpressionProcType;
TypeExpsequenceProdCompileFirstOfTypeExpression:	CompileFirstOfTypeExpressionProcType;
TypeExpsequenceProdCompileLastOfTypeExpression:	CompileLastOfTypeExpressionProcType;
TypeExpsequenceProdEvaluateSizeOfTypeExpression:	EvaluateSizeOfTypeExpressionProcType;
TypeExpsequenceProdEvaluateFirstOfTypeExpression:	EvaluateFirstOfTypeExpressionProcType;
TypeExpsequenceProdEvaluateLastOfTypeExpression:	EvaluateLastOfTypeExpressionProcType;
END..