DoIt: Commander.CommandProc = BEGIN
evl: EventList;
groups: GroupSet;
props: PropertySet;
ri: REF INTEGER;
rb: REF BOOLEAN;
rr: REF Rope.ROPE;
ev: EventTuple;
evl ← RestoreEvents[ BasicTime.earliestGMT, BasicTime.latestGMT];
InsertToGroup[ evl.first.Key, RopeSets.RopeSet[Head: NEW[RopeSets.RopeSetEl ← [Value: "groupA"]]]];
InsertToGroup[ evl.rest.first.Key, RopeSets.RopeSet[Head: NEW[RopeSets.RopeSetEl ← [Value: "groupB"]]]];
groups ← ListGroups[];
RemoveFromGroup[ evl.first.Key, RopeSets.RopeSet[Head: NEW[RopeSets.RopeSetEl ← [Value: "groupA"]]]];
RemoveGroup[ "groupA"];
RemoveGroup[ "groupB"];
groups ← ListGroups[];
ev ← evl.first; ev.Key ← nullEvent;
DestroyEvent[ evl.first.Key];
ev ← EnterEvent[ ev, RopeSets.RopeSet[Head: NEW[RopeSets.RopeSetEl ← [Value:"GroupC"]]]];
ForgetEvent[ ev.Key, TRUE];
evl ← RestoreEvents[ BasicTime.earliestGMT, BasicTime.latestGMT];
groups ← ListGroups[];
ForgetEvent[ ev.Key, FALSE];
evl ← RestoreEvents[ BasicTime.earliestGMT, BasicTime.latestGMT];
SetProperty[ ev.Key, "propA", NEW[ INTEGER ← 1]];
SetProperty[ ev.Key, "propB", NEW[ BOOLEAN ← TRUE]];
SetProperty[ ev.Key, "propC", NEW[ Rope.ROPE ← "Hello"]];
props ← ListProperties[];
SetProperty[ ev.Key, "propA", NEW[ BOOLEAN ← FALSE] ! Hickory.Error => IF errCode = MismatchedPropertyType THEN CONTINUE ];
ri ← NARROW[ GetProperty[ ev.Key, "propA"]];
rb ← NARROW[ GetProperty[ ev.Key, "propB"]];
rr ← NARROW[ GetProperty[ ev.Key, "propC"]];
NULL; NULL;
END; -- DoIt
END.