anchor.diff:      procedure UpdateState; // Call to update evaluation
   
       property EnemiesCount : integer read GetEnemiesCount;
  -    property Evaluations[Index:TPlayerIndex]:PKMEvaluation read GetEvaluationByIndex;
  +    property Evaluations[Index:TPlayerIndex]:TKMEvaluation read GetEvaluationByIndex;
   
     end;
   
  
positive.code:     fEvals : array [0..MAX_PLAYERS] of TKMEvaluation; // Results of evaluetion (PKMEvaluation)
  
      function GetEnemiesCount : integer;                              
      function GetEvaluationByIndex(Index : TPlayerIndex) : PKMEvaluation;
      procedure ResetEvaluation; // Reset to default                            
      procedure EvaluateChance(Stats : TKMPlayerStats; PlayerIndex : TPlayerIndex);
      procedure EvaluatePower(Stats : TKMPlayerStats; PlayerIndex : TPlayerIndex);
  
negative.code: 
  { TKMArmyEvaluation assets}
  
  constructor TKMEvaluation.Create;
  begin
    fEmemyIndex := 0;
    Reset;
  end;
  
  procedure TKMEvaluation.Reset;
  begin
    fVictoryChance := 0.0;
    fPower := 0.0;
    FillChar(fUnitTypesPower, SizeOf(fUnitTypesPower), #0);
  end;
  
  { TKMArmyEvaluation assets}
  
  constructor TKMArmyEvaluation.Create(SelfPlayer : TObject);
  var i : Integer;
  begin
    inherited Create;
    if not(SelfPlayer is TKMPlayer) then fSelfPlayer := nil
    else fSelfPlayer := SelfPlayer;
    fEnemies := TObjectList.Create(false); // false - Container will not controls the memory. See TObjectList
    for i := 0 to MAX_PLAYERS do begin
      fEvals[i] := TKMEvaluation.Create;
      fEvals[i].fEmemyIndex := i;
    end;
  end;
  
  destructor TKMArmyEvaluation.Destroy;
  var i : Integer;
  begin
    for i := 0 to MAX_PLAYERS do
      fEvals[i].Free;
    FreeThenNil(fEnemies);
    inherited;
  end;
  
  function TKMArmyEvaluation.GetEnemiesCount : Integer;
  begin
    Result := fEnemies.Count;
  end;                   
  
  function TKMArmyEvaluation.GetEvaluationByIndex(Index : TPlayerIndex) : TKMEvaluation;
  begin
    Assert(Index <= MAX_PLAYERS);
    Result := fEvals[Index];
  end;
  
  procedure TKMArmyEvaluation.ResetEvaluation;
  var i : TPlayerIndex;
  begin
    for i := 0 to MAX_PLAYERS do
      fEvals[i].Reset;
  end;
  
  procedure TKMArmyEvaluation.EvaluateChance(Stats : TKMPlayerStats; PlayerIndex : TPlayerIndex);
  var
    Res : TKMEvaluation;
  begin
    Res := fEvals[PlayerIndex];
    Res.fVictoryChance := 1.0;
  end;
  
  procedure TKMArmyEvaluation.EvaluatePower(Stats : TKMPlayerStats; PlayerIndex : TPlayerIndex);
  var
    Res : TKMEvaluation;
  begin
    Res := fEvals[PlayerIndex];
    Res.fPower := 1.0;
  end;
  
  function TKMArmyEvaluation.AddEnemy(Player : TObject) : Integer;
  