code: protected DropDownChoice<T> newRootChoice(final String id, final IModel<T> model,
  			final IModel<? extends List<? extends T>> choices, final IChoiceRenderer<? super T> renderer) {
  		final DropDownChoice<T> rc = new LocalisedDropDownChoice<>(id, model, choices, renderer);
  		rc.add(new AjaxFormComponentUpdatingBehavior("change") {
  			/** The Constant serialVersionUID. */
  			private static final long serialVersionUID = 1L;
  
  			/**
  			 * {@inheritDoc}
  			 */
  			@Override
  			protected void onUpdate(final AjaxRequestTarget target) {
  				target.add(childChoice);
  			}
  		});
  		return rc;
  	}
docs: Factory method for creating the new root {@link DropDownChoice}. This
  method is invoked in the constructor from the derived classes and can be
  overridden so users can provide their own version of a new root
  {@link DropDownChoice}.
  
  @param id
  the id
  @param model
  the model
  @param choices
  the choices
  @param renderer
  the renderer
  @return the new root {@link DropDownChoice}.