if (controller.getValue() != null) {
textBox.textProperty().setValue(formatProvider.getFormat(controller.getElement()).format(controller.getValue()));
}
final ChangeListener controllerListener = createControllerListener(textBox, controller);
controller.addListener(controllerListener);
return new DisposableNodeWrapper(textBox, new Callback<Node, Void>() {
public Void call(Node node) {
controller.removeListener(controllerListener);
textBox.textProperty().removeListener(textBoxListener);
return null;
}