public class AccountOverviewController {
//declarations ...
@FXML
private Button undoButton;
@FXML
private Button redoButton;
@FXML
private void initialize() {
    transactionsTable.getSelectionModel().setSelectionMode(
            SelectionMode.MULTIPLE);
    dateColumn.setCellValueFactory(dataValue -> dataValue.getValue()
            .getDateProperty());
    payeeColumn.setCellValueFactory(dataValue -> dataValue.getValue()
            .getPayeeProperty());
    categoryColumn.setCellValueFactory(dataValue -> dataValue.getValue()
            .getCategoryProperty());
    inflowColumn.setCellValueFactory(dataValue -> dataValue.getValue()
            .getInflowProperty());
    deleteButton.disableProperty().bind(Bindings.isEmpty(transactionsTable.getSelectionModel().getSelectedItems()));
    editButton.disableProperty().bind(Bindings.size(transactionsTable.getSelectionModel().getSelectedItems()).isNotEqualTo(1));
    undoButton.disableProperty().bind(Bindings.isEmpty(commandRegistry.getCommandStack()));
    redoButton.disableProperty().bind(Bindings.isEmpty(commandRegistry.getUndoCommandStack()));
}
//handlers&setters ...
}
These two lines at the end are causing error. I want to disable buttons when the commands stacks are empty. I don't know why. For example same button disabling for Delete/Edit button works fine. Whole application without these two works perfectly fine.
Exception chain:
javafx.fxml.LoadException: 
/home/simon/eclipse/java-neon-workspace/to2/lab2/cw3/bin/pl/edu/agh/iisg/to/javafx/cw3/view/AccountOverviewPane.fxml
    at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2601)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2571)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441)
    at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409)
    at pl.edu.agh.iisg.to.javafx.cw3.presenter.AccountPresenter.initRootLayout(AccountPresenter.java:35)
    at pl.edu.agh.iisg.to.javafx.cw3.Main.start(Main.java:20)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$106(LauncherImpl.java:863)
    at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$119(PlatformImpl.java:326)
    at com.sun.javafx.application.PlatformImpl.lambda$null$117(PlatformImpl.java:295)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$118(PlatformImpl.java:294)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
    at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
    at com.sun.glass.ui.gtk.GtkApplication.lambda$null$450(GtkApplication.java:139)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)
    at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2566)
    ... 13 more
Caused by: java.lang.NullPointerException
    at pl.edu.agh.iisg.to.javafx.cw3.view.AccountOverviewController.initialize(AccountOverviewController.java:97)
    ... 23 more
Both of stacks are declared like this in CommandRegistry class
private ObservableList<Command> commandStack = FXCollections.observableArrayList();
and getters are returning themselves naturally. What could possibly go wrong here?
 
     
    