anchor.diff:      procedure Clear;
   
       procedure MakeCheckpoint(aArea: TKMCheckpointArea; const aCaption: string);
  -    procedure JumpTo(aIndex: Integer);
  +    procedure JumpTo(aIndex: Integer); overload;
       procedure Undo(aUpdateImmidiately: Boolean = True);
       procedure Redo(aUpdateImmidiately: Boolean = True);
     end;
  
positive.code: begin
    if not CanUndo then Exit;
  
    // Find previous state of area we are undoing ("Initial" state at 0 being our last chance)
    prev := fCheckpointPos - 1;
    while prev > 0 do
    begin
      if fCheckpoints[prev].Area = fCheckpoints[fCheckpointPos].Area then
        Break;
      Dec(prev);
    end;
  
    Assert(prev >= 0);
  
    // Apply only requested area (e.g. if we are undoing single change made to Houses at step 87 since editing start)
    fCheckpoints[prev].Apply(fCheckpoints[fCheckpointPos].Area, aUpdateImmidiately);
  
    if not aUpdateImmidiately and (fCheckpoints[fCheckpointPos].Area in [caTerrain, caAll]) then
      fUpdateTerrainNeeded := True;
  
    Dec(fCheckpointPos);
  
    IncCounter;
  
negative.code:     // Hand Flag Color
      //
    );
  
    TKMCheckpointAreaSet = set of TKMCheckpointArea;
  
    TKMCheckpoint = class
    private
  