anchor.diff:  
   constructor TFiniteStateMachine<TState, TCommand, ErrorClass>.TTransition.Create(const AFromState : TState;
     const AOnCommand : TCommand; const StateComparer : IStateComparer; const CommandComparer : ICommandComparer;
  -  const OnEnter : TOnEnterStateMethod; const OnExit : TOnExitStateMethod);
  +  const OnEnterState : TOnEnterStateMethod; const OnExitState : TOnExitStateMethod);
   begin
     Create(AFromState, AOnCommand, StateComparer, CommandComparer);
   
  -  FOnEnterMethod := OnEnter;
  -  FOnExitMethod := OnExit;
  +  FOnEnterStateMethod := OnEnterState;
  +  FOnExitStateMethod := OnExitState;
   end;
   
   constructor TFiniteStateMachine<TState, TCommand, ErrorClass>.TTransition.Create(const AFromState : TState;
     const AOnCommand : TCommand; const StateComparer : IStateComparer; const CommandComparer : ICommandComparer;
  -  const OnEnter : TOnEnterStateProc; const OnExit : TOnExitStateProc);
  +  const OnEnterState : TOnEnterStateProc; const OnExitState : TOnExitStateProc);
   begin
     Create(AFromState, AOnCommand, StateComparer, CommandComparer);
   
  -  FOnEnterProc := OnEnter;
  -  FOnExitProc := OnExit;
  +  FOnEnterStateProc := OnEnterState;
  +  FOnExitStateProc := OnExitState;
   end;
   
   function TFiniteStateMachine<TState, TCommand, ErrorClass>.TTransition.Equals(Obj : TObject) : Boolean;
  
positive.code:               const StateComparer : IStateComparer; const CommandComparer : ICommandComparer); overload;
              constructor Create(const AFromState : TState; const AOnCommand : TCommand;
                const StateComparer : IStateComparer; const CommandComparer : ICommandComparer;
                const OnEnter : TOnEnterStateMethod; const OnExit : TOnExitStateMethod); overload;
              constructor Create(const AFromState : TState; const AOnCommand : TCommand;
                const StateComparer : IStateComparer; const CommandComparer : ICommandComparer;
                const OnEnter : TOnEnterStateProc; const OnExit : TOnExitStateProc); overload;
  
              function  Equals(Obj : TObject) : Boolean; override; final;
              function  GetHashCode : Integer; override; final;
              procedure PerformEnterStateAction(const CurrentState : TState);
              procedure PerformExitStateAction(const NewState : TState);
  
  
negative.code: procedure TFiniteStateMachine<TState, TCommand, ErrorClass>.TTransition.PerformEnterStateAction(
    const CurrentState : TState);
  begin
    if Assigned(FOnEnterStateMethod) then
      FOnEnterStateMethod(FFromState, CurrentState, FOnCommand);
  
    if Assigned(FOnEnterStateProc) then
      FOnEnterStateProc(FFromState, CurrentState, FOnCommand);
  end;
  
  procedure TFiniteStateMachine<TState, TCommand, ErrorClass>.TTransition.PerformExitStateAction(const NewState : TState);
  begin
    if Assigned(FOnExitStateMethod) then
      FOnExitStateMethod(FFromState, NewState, FOnCommand);
  
    if Assigned(FOnExitStateProc) then
      FOnExitStateProc(FFromState, NewState, FOnCommand);
  end;
  
  { TFiniteStateMachine<TState, TCommand, ErrorClass> }
  