anchor.diff:  %%% @doc The core of the game
   -module(serpents_core).
   -author('elbrujohalcon@inaka.net').
  +
  +-behavior(gen_fsm).
  +
  +-type state() :: #{ game => serpents_games:game()
  +                  , dispatcher => pid()
  +                  }.
   
   -export(
     [ register_player/1
  
positive.code: 
  -spec join_game(serpents_games:id(), serpents_players:id()) -> position().
  join_game(GameId, PlayerId) ->
    call(GameId, {join, GameId, PlayerId}).
  
  -spec start_game(serpents_games:id()) -> ok.
  start_game(GameId) ->
  
negative.code:   ]).
  
  -export([start_link/1]).
  -export(
    [ created/3
    , created/2
    , started/2
    , init/1
    , handle_event/3
    , handle_sync_event/4
    , handle_info/3
    , terminate/3
    , code_change/4
    ]).
  
  -type options() :: #{ rows => pos_integer()
                      , cols => pos_integer()
  