Program: 680
Project: 680
Buggy source:
@Override public void initialise(){
  availableAssetDropdown=find("String_Node_Str",UIDropdownScrollable.class);
  editorTreeView=find("String_Node_Str",UITreeView.class);
  selectedScreenContainer=find("String_Node_Str",UIBox.class);
  availableAssetList.addAll(assetManager.getAvailableAssets(UIElement.class).stream().collect(Collectors.toList()));
  availableAssetList.removeIf(asset -> asset.getRootUrn().equals(ASSET_URI));
  availableAssetList.sort(Comparator.comparing(ResourceUrn::toString));
  availableAssetDropdown.setOptions(availableAssetList);
  availableAssetDropdown.bindSelection(new Binding<ResourceUrn>(){
    @Override public ResourceUrn get(){
      return selectedUrn;
    }
    @Override public void set(    ResourceUrn value){
      if (selectedUrn != value) {
        selectFile(value);
      }
    }
  }
);
  editorTreeView.subscribeTreeViewUpdate(() -> {
    JsonTree tree=(JsonTree)(editorTreeView.getModel().getItem(0).getRoot());
    if (editorHistoryPosition < editorHistory.size() - 1) {
      editorHistory=editorHistory.subList(0,editorHistoryPosition + 1);
    }
    editorHistory.add(tree);
    editorHistoryPosition++;
    updateWidget(tree);
  }
);
  editorTreeView.subscribeItemMouseClick((event,item) -> {
    if (event.getMouseButton() == MouseInput.MOUSE_RIGHT) {
      if (!getManager().isOpen(ContextMenuScreen.ASSET_URI)) {
        getManager().pushScreen(ContextMenuScreen.ASSET_URI,ContextMenuScreen.class);
      }
      ((JsonTree)item).setSelected(true);
      ContextMenuScreen contextMenuScreen=(ContextMenuScreen)getManager().getScreen(ContextMenuScreen.ASSET_URI);
      List<String> options=Lists.newArrayList();
      options.add(OPTION_COPY);
      options.add(OPTION_PASTE);
      if (((JsonTree)item).getValue().getType() == JsonTreeNode.ElementType.ARRAY && ((JsonTree)item).getValue().getKey().equals("String_Node_Str")) {
        options.add(OPTION_ADD_WIDGET);
      }
      contextMenuScreen.setList(options);
      contextMenuScreen.setMenuPosition(event.getMouse().getPosition());
      contextMenuScreen.bindSelection(new Binding(){
        @Override public Object get(){
          return null;
        }
        @Override public void set(        Object value){
          getManager().closeScreen(ContextMenuScreen.ASSET_URI);
          ((JsonTree)item).setSelected(false);
          if (value.equals(OPTION_COPY)) {
            editorTreeView.copy(item);
          }
 else           if (value.equals(OPTION_PASTE)) {
            editorTreeView.paste(item);
          }
 else           if (value.equals(OPTION_ADD_WIDGET)) {
            addWidget((JsonTree)item);
          }
 else {
            throw new IllegalStateException(String.format("String_Node_Str",value));
          }
        }
      }
);
      contextMenuScreen.subscribeSelection(() -> {
        ((JsonTree)item).setSelected(false);
      }
);
    }
  }
);
  WidgetUtil.trySubscribe(this,"String_Node_Str",button -> {
    getManager().pushScreen(NUIEditorSettingsScreen.ASSET_URI,NUIEditorSettingsScreen.class);
  }
);
  WidgetUtil.trySubscribe(this,"String_Node_Str",button -> {
    copyJson();
  }
);
  WidgetUtil.trySubscribe(this,"String_Node_Str",button -> {
    pasteJson();
  }
);
  WidgetUtil.trySubscribe(this,"String_Node_Str",button -> {
    undo();
  }
);
  WidgetUtil.trySubscribe(this,"String_Node_Str",button -> {
    redo();
  }
);
}

Fixed version (ground truth):
@Override public void initialise(){
  availableAssetDropdown=find("String_Node_Str",UIDropdownScrollable.class);
  editorTreeView=find("String_Node_Str",UITreeView.class);
  selectedScreenContainer=find("String_Node_Str",UIBox.class);
  availableAssetList.addAll(assetManager.getAvailableAssets(UIElement.class).stream().collect(Collectors.toList()));
  availableAssetList.removeIf(asset -> asset.getRootUrn().equals(ASSET_URI));
  availableAssetList.sort(Comparator.comparing(ResourceUrn::toString));
  availableAssetDropdown.setOptions(availableAssetList);
  availableAssetDropdown.bindSelection(new Binding<ResourceUrn>(){
    @Override public ResourceUrn get(){
      return selectedUrn;
    }
    @Override public void set(    ResourceUrn value){
      if (selectedUrn != value) {
        selectFile(value);
      }
    }
  }
);
  editorTreeView.subscribeTreeViewUpdate(() -> {
    JsonTree tree=(JsonTree)(editorTreeView.getModel().getItem(0).getRoot());
    if (editorHistoryPosition < editorHistory.size() - 1) {
      editorHistory=editorHistory.subList(0,editorHistoryPosition + 1);
    }
    editorHistory.add(tree);
    editorHistoryPosition++;
    updateWidget(tree);
  }
);
  editorTreeView.subscribeItemMouseClick((event,item) -> {
    if (event.getMouseButton() == MouseInput.MOUSE_RIGHT) {
      ((JsonTree)item).setSelected(true);
      ContextMenuBuilder contextMenuBuilder=new ContextMenuBuilder();
      contextMenuBuilder.addOption(OPTION_COPY,this::copy,(JsonTree)item);
      contextMenuBuilder.addOption(OPTION_PASTE,this::paste,(JsonTree)item);
      if (((JsonTree)item).getValue().getType() == JsonTreeNode.ElementType.ARRAY && ((JsonTree)item).getValue().getKey().equals("String_Node_Str")) {
        contextMenuBuilder.addOption(OPTION_ADD_WIDGET,this::addWidget,(JsonTree)item);
      }
      contextMenuBuilder.subscribeSelection(() -> {
        ((JsonTree)item).setSelected(false);
      }
);
      contextMenuBuilder.show(getManager(),event.getMouse().getPosition());
    }
  }
);
  WidgetUtil.trySubscribe(this,"String_Node_Str",button -> {
    getManager().pushScreen(NUIEditorSettingsScreen.ASSET_URI,NUIEditorSettingsScreen.class);
  }
);
  WidgetUtil.trySubscribe(this,"String_Node_Str",button -> {
    copyJson();
  }
);
  WidgetUtil.trySubscribe(this,"String_Node_Str",button -> {
    pasteJson();
  }
);
  WidgetUtil.trySubscribe(this,"String_Node_Str",button -> {
    undo();
  }
);
  WidgetUtil.trySubscribe(this,"String_Node_Str",button -> {
    redo();
  }
);
}