anchor.diff:  ind_enc({C, R}) ->
       [$a + C - 1, $1 + R - 1].
   
  -%% @doc Increment the cell coordinates with the step.
  +%% @doc Increment the cell coordinates with the Delta.
   %% The function return new coordinates or ?null if result
   %% is out of valid coordinates range (out of the chess board).
  --spec ind_inc(Coord :: coord(), Step :: step()) ->
  +-spec ind_inc(Coord :: coord(), Delta :: delta()) ->
                        (NewCoord :: coord()) | ?null.
   ind_inc({C, R}, {CS, RS}) ->
       Crd = {C + CS, R + RS},
  
positive.code: 
  %% @doc Search the enemy chessman starting from the coordinates
  %% with the direction.
  -spec find_enemy(Board :: board(), Coord :: coord(), Step :: step(),
                   EnemyColor :: echessd_game:color()) ->
                          {EnemyChessmanType :: echessd_game:chessman_type(),
                           Distance :: pos_integer()} |
                          undefined.
  find_enemy(Board, Coord, Step, EnemyColor) ->
      find_enemy(Board, Coord, Step, EnemyColor, _Distance = 1).
  
  %% @doc Helper for the find_enemy/4 fun.
  -spec find_enemy(Board :: board(), Coord :: coord(), Direction :: step(),
                   EnemyColor :: echessd_game:color(),
                   Distance :: pos_integer()) ->
                          {EnemyChessmanType :: echessd_game:chessman_type(),
  
negative.code: -spec free_cells_until_enemy(Board :: board(),
                               MyColor :: echessd_game:color(),
                               Start :: coord(),
                               Direction :: delta()) ->
                                      [FreeCell :: coord()].
  free_cells_until_enemy(Board, MyColor, Start, Direction) ->
      case getcell(Board, NextCoord = ind_inc(Start, Direction)) of
  