Consider:
type
Actions = enum
Accuracy, Maturity, Id, Phase, Skip, Status
Action = object
case kind: Actions
of Accuracy: acc: range[1..9]
of Maturity: maturity: range[1..9]
of Id: id: int
of Phase:
phasenote: string
phase: range[1..5]
of Skip:
skipnote: string
skip: int
of Status:
statusnote: string
status: int
Run
And say I don't like those foo-note fields. They're just notes; it's not
important that they're notes for a status vs. some other kind of action.
Alternative #1 is to add a note: string field to the Action object, already
stated.
Alternative #2:
type
Actions = enum
Accuracy, Maturity, Id, Phase, Skip, Status
Action = object
case kind: Actions
of Accuracy: acc: range[1..9]
of Maturity: maturity: range[1..9]
of Phase: phase: range[1..5]
of Id, Skip, Status:
note: string
id, skip, status: int
Run
This moves the bloat to only three variants, instead of to all of them. Whether
this is desirable or not vs. alternative #1 depends on your use.