public function selectTransition(\Traversable $transitions)
{
$bestTransitions = array();
$bestWeight = null;
foreach ($transitions as $transition) {
if ($transition instanceof WeightedInterface) {
$weight = $transition->getWeight();
$diff = $weight - $bestWeight;
if ($bestWeight === null || $diff >= $this->epsilon) {
$bestWeight = $weight;
$bestTransitions = array($transition);
} elseif (abs($diff) < $this->epsilon) {
$bestTransitions[] = $transition;
}
}
}
return $this->innerSelector->selectTransition(new \ArrayIterator($bestTransitions));
}