/// <summary>
 /// Gets a hint from the AI
 /// </summary>
 /// <param name="gameInformation"></param>
 /// <returns></returns>
 public virtual AIDecision GetHint(AiGameInformation gameInformation)
 {
     if (!Capabilities.ProvidesHints)
     {
         throw new InvalidOperationException("This AI is incapable of providing hints.");
     }
     return(RequestMove(gameInformation));
 }
 /// <summary>
 /// Requests a move from the AI
 /// </summary>
 /// <param name="gameInformation"></param>
 /// <returns></returns>
 public abstract AIDecision RequestMove(AiGameInformation gameInformation);