anchor.diff:        fDirection:TGoInDirection;
         fDoor:TKMPointF;
         fStreet:TKMPoint;
  -      fHasStarted, fWaitingForPush, fUsingDoorway, fUsedDoorway:boolean;
  +      fHasStarted:boolean;
  +      fWaitingForPush:boolean;
  +      fUsedDoorway:boolean;
         procedure IncDoorway;
         procedure DecDoorway;
  +      function FindBestExit(aLoc:TKMPoint; aUnit:TKMUnit):TBestExit;
         function ValidTileToGo(aLocX, aLocY:word; aUnit:TKMUnit):boolean; //using X,Y looks more clear
  +      procedure WalkIn(aUnit:TKMUnit);
         procedure WalkOut(aUnit:TKMUnit);
       public
         constructor Create(aAction: TUnitActionType; aDirection:TGoInDirection; aHouse:TKMHouse);
  
positive.code:   SaveStream.Write(fStreet);
    SaveStream.Write(fHasStarted);
    SaveStream.Write(fWaitingForPush);
    SaveStream.Write(fUsingDoorway);
    SaveStream.Write(fUsedDoorway);
  end;
  
  
negative.code: 
  procedure TUnitActionGoInOut.IncDoorway;
  begin
    Assert(not fUsedDoorway, 'Inc doorway when already in use?');
  
    if fHouse<>nil then inc(fHouse.DoorwayUse);
    fUsedDoorway := true;
  end;
  