@Override
  protected void registerSynchronizers(SynchronizersConfiguration conf) {
    super.registerSynchronizers(conf);

    conf.add(Synchronizers.forPropsOneWay(Properties.TRUE, myTargetView.focusable()));
    conf.add(
        Synchronizers.<Cell, View>forSingleRole(
            this,
            Properties.<Cell>constant(getSource().root),
            new WritableProperty<View>() {
              @Override
              public void set(View value) {
                myTargetView.children().clear();
                if (value != null) {
                  myTargetView.children().add(value);
                }
              }
            },
            new MapperFactory<Cell, View>() {
              @Override
              public Mapper<? extends Cell, ? extends View> createMapper(Cell source) {
                return CellMappers.create(source, myContext);
              }
            }));
    conf.add(
        Synchronizers.forRegistration(
            new Supplier<Registration>() {
              @Override
              public Registration get() {
                ViewTrait redispatchTrait = createRedistpatchTrait();
                myContext.containerFocused().set(myTargetView.focused().get());
                return new CompositeRegistration(
                    getSource().addListener(createCellContainerListener()),
                    getSource()
                        .focusedCell
                        .addHandler(
                            new EventHandler<PropertyChangeEvent<Cell>>() {
                              @Override
                              public void onEvent(PropertyChangeEvent<Cell> event) {
                                if (event.getNewValue() != null) {
                                  myTargetView.container().focusedView().set(myTargetView);
                                }
                              }
                            }),
                    myTargetView
                        .focused()
                        .addHandler(
                            new EventHandler<PropertyChangeEvent<Boolean>>() {
                              @Override
                              public void onEvent(PropertyChangeEvent<Boolean> event) {
                                myContext.containerFocused().set(event.getNewValue());
                                for (TextCell cell : myWithCaret) {
                                  BaseCellMapper<?, ?> mapper =
                                      (BaseCellMapper<?, ?>) rootMapper().getDescendantMapper(cell);
                                  mapper.refreshProperties();
                                }
                                for (Cell cell : myHighlighted) {
                                  BaseCellMapper<?, ?> mapper =
                                      (BaseCellMapper<?, ?>) rootMapper().getDescendantMapper(cell);
                                  mapper.refreshProperties();
                                }
                              }
                            }),
                    getTarget().addTrait(redispatchTrait),
                    myPopupView.addTrait(redispatchTrait));
              }
            }));
  }