private static ISummary log(IPlan plan)
        {
            var log           = new Log();
            var previousState = plan.Trajectory.First().State;
            var distance      = 0.0;

            foreach (var trajectory in plan.Trajectory)
            {
                var state  = trajectory.State;
                var action = trajectory.Action;
                log.SimulationTimeChanged(trajectory.Time);

                if (action != null)
                {
                    log.ActionSelected(action);
                }

                log.StateUpdated(state);

                distance += Distance.Between(previousState.Position, state.Position);

                previousState = state;
            }

            return(new SimulationSummary(plan.TimeToGoal, Result.Suceeded, log.History, distance));
        }