anchor.diff:  hint(History) ->
       {Board, _Captured, Color} = from_scratch(History),
       lists:flatmap(
  -      fun(I1) ->
  -              case getcell(Board, I1) of
  +      fun(SrcCoord) ->
  +              case getcell(Board, SrcCoord) of
                     {Color, _ChessmanType} ->
                         lists:flatmap(
  -                        fun(I2) ->
  -                                case is_valid(Board, I1, I2, History) of
  +                        fun(DstCoord) ->
  +                                case is_valid(Board, SrcCoord, DstCoord, History) of
                                       true ->
  -                                        [ind_enc(I1) ++ ind_enc(I2)];
  +                                        [ind_enc(SrcCoord) ++ ind_enc(DstCoord)];
                                       false ->
                                           []
                                   end
  -                        end, hint_for_cell_unsafe(Board, I1, History));
  +                        end, hint_for_cell_unsafe(Board, SrcCoord, History));
                     _ -> []
                 end
         end, all_cells()).
  
positive.code:             ?null
      end.
  
  %% @doc Search free cells in the given direction until enemy chessman
  %% or board end found. When the enemy chessman found the enemy
  %% coordinates will also be returned.
  
negative.code:                     History :: echessd_game:history()) ->
                             coord() | ?null.
  long_castling(Board, Color, History) ->
      castling(Board, Color, History, long_rook_coord(Color), {-1, 0}).
  
  %% @doc
  -spec short_castling(Board :: board(),
  