class ElementTransitionManager {

    public Collection<Animator> createTransitions(Transitions transitions, List<Element> fromElements, List<Element> toElements) {
        if (!transitions.hasValue() || fromElements.isEmpty() || toElements.isEmpty()) return Collections.EMPTY_LIST;
        Map<String, Element> from = keyBy(fromElements, Element::getElementId);
        Map<String, Element> to = keyBy(toElements, Element::getElementId);
        List<Transition> validTransitions = filter(transitions.get(), (t) -> validator.validate(t, from, to));

        return animatorCreator.create(validTransitions, from, to);
    }

    @RestrictTo(RestrictTo.Scope.TESTS)  ElementTransitionManager(TransitionValidator validator, TransitionAnimatorCreator animatorCreator);
    public  ElementTransitionManager();

}