Program: 60449
Project: 60449
Buggy source:
public ActionPanel(final String componentId,final IModel<T> model,final Action<T> action){
  super(componentId);
  setOutputMarkupId(true);
  final T obj;
  if (model == null) {
    obj=null;
  }
 else {
    obj=model.getObject();
  }
  final boolean enabled;
  final AbstractLink actionLink;
  if (action.getLink() == null || action.getType() == ActionType.NOT_FOUND) {
    enabled=true;
    actionLink=new IndicatingAjaxLink<Void>("String_Node_Str"){
      private static final long serialVersionUID=-7978723352517770644L;
      @Override public boolean isEnabled(){
        return false;
      }
      @Override public void onClick(      final AjaxRequestTarget target){
      }
    }
;
  }
 else   if (action.getType() == ActionType.WORKFLOW_MODELER) {
    enabled=action.getLink().isEnabled(obj);
    actionLink=new BookmarkablePageLink<>("String_Node_Str",action.getLink().getPageClass(),action.getLink().getPageParameters()).setPopupSettings(new VeilPopupSettings().setHeight(600).setWidth(800));
  }
 else {
    enabled=action.getLink().isEnabled(obj);
    actionLink=action.isOnConfirm() ? new IndicatingOnConfirmAjaxLink<Void>("String_Node_Str",enabled){
      private static final long serialVersionUID=-7978723352517770644L;
      @Override public void onClick(      final AjaxRequestTarget target){
        action.getLink().onClick(target,obj);
      }
      @Override public String getAjaxIndicatorMarkupId(){
        return disableIndicator || !action.getLink().isIndicatorEnabled() ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
      }
    }
 : new IndicatingAjaxLink<Void>("String_Node_Str"){
      private static final long serialVersionUID=-7978723352517770644L;
      @Override public void onClick(      final AjaxRequestTarget target){
        action.getLink().onClick(target,obj);
      }
      @Override public String getAjaxIndicatorMarkupId(){
        return disableIndicator || !action.getLink().isIndicatorEnabled() ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
      }
    }
;
  }
  if (SyncopeConsoleSession.get().owns(action.getEntitlements(),action.getRealm())) {
    MetaDataRoleAuthorizationStrategy.authorizeAll(actionLink,RENDER);
  }
 else {
    MetaDataRoleAuthorizationStrategy.unauthorizeAll(actionLink,RENDER);
  }
  actionLink.setVisible(enabled);
  actionIcon=new Label("String_Node_Str","String_Node_Str");
  actionLink.add(actionIcon);
  final String clazz=action.getType().name().toLowerCase() + "String_Node_Str";
  actionIcon.add(new AttributeModifier("String_Node_Str",new ResourceModel(clazz,clazz)));
  final String title=action.getType().name().toLowerCase() + "String_Node_Str";
  final IModel<String> titleModel=new ResourceModel(title,title);
  actionIcon.add(new AttributeModifier("String_Node_Str",titleModel));
  final String alt=action.getType().name().toLowerCase() + "String_Node_Str";
  actionIcon.add(new AttributeModifier("String_Node_Str",new ResourceModel(alt,alt)));
  actionLabel=new Label("String_Node_Str",titleModel);
  actionLink.add(actionLabel);
  add(actionLink);
  actionLabel.setVisible(action.isVisibleLabel());
  if (action.getLabel() != null) {
    actionLabel.setDefaultModel(action.getLabel());
  }
  if (action.getTitle() != null) {
    actionIcon.add(new AttributeModifier("String_Node_Str",action.getTitle()));
  }
  if (action.getAlt() != null) {
    actionIcon.add(new AttributeModifier("String_Node_Str",action.getAlt()));
  }
  if (action.getIcon() != null) {
    actionIcon.add(new AttributeModifier("String_Node_Str",action.getIcon()));
  }
  this.disableIndicator=!action.hasIndicator();
}

Fixed version (ground truth):
public ActionPanel(final String componentId,final IModel<T> model,final Action<T> action){
  super(componentId);
  setOutputMarkupId(true);
  this.action=action;
  final T obj;
  if (model == null) {
    obj=null;
  }
 else {
    obj=model.getObject();
  }
  final boolean enabled;
  final AbstractLink actionLink;
  if (action.getLink() == null || action.getType() == ActionType.NOT_FOUND) {
    enabled=true;
    actionLink=new IndicatingAjaxLink<Void>("String_Node_Str"){
      private static final long serialVersionUID=-7978723352517770644L;
      @Override public boolean isEnabled(){
        return false;
      }
      @Override public void onClick(      final AjaxRequestTarget target){
      }
    }
;
  }
 else   if (action.getType() == ActionType.WORKFLOW_MODELER) {
    enabled=action.getLink().isEnabled(obj);
    actionLink=new BookmarkablePageLink<>("String_Node_Str",action.getLink().getPageClass(),action.getLink().getPageParameters()).setPopupSettings(new VeilPopupSettings().setHeight(600).setWidth(800));
  }
 else {
    enabled=action.getLink().isEnabled(obj);
    actionLink=action.isOnConfirm() ? new IndicatingOnConfirmAjaxLink<Void>("String_Node_Str",enabled){
      private static final long serialVersionUID=-7978723352517770644L;
      @Override public void onClick(      final AjaxRequestTarget target){
        beforeOnClick(target);
        action.getLink().onClick(target,obj);
      }
      @Override public String getAjaxIndicatorMarkupId(){
        return disableIndicator || !action.getLink().isIndicatorEnabled() ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
      }
    }
 : new IndicatingAjaxLink<Void>("String_Node_Str"){
      private static final long serialVersionUID=-7978723352517770644L;
      @Override public void onClick(      final AjaxRequestTarget target){
        beforeOnClick(target);
        action.getLink().onClick(target,obj);
      }
      @Override public String getAjaxIndicatorMarkupId(){
        return disableIndicator || !action.getLink().isIndicatorEnabled() ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
      }
    }
;
  }
  if (SyncopeConsoleSession.get().owns(action.getEntitlements(),action.getRealm())) {
    MetaDataRoleAuthorizationStrategy.authorizeAll(actionLink,RENDER);
  }
 else {
    MetaDataRoleAuthorizationStrategy.unauthorizeAll(actionLink,RENDER);
  }
  actionLink.setVisible(enabled);
  actionIcon=new Label("String_Node_Str","String_Node_Str");
  actionLink.add(actionIcon);
  final String clazz=action.getType().name().toLowerCase() + "String_Node_Str";
  actionIcon.add(new AttributeModifier("String_Node_Str",new ResourceModel(clazz,clazz)));
  final String title=action.getType().name().toLowerCase() + "String_Node_Str";
  final IModel<String> titleModel=new ResourceModel(title,title);
  actionIcon.add(new AttributeModifier("String_Node_Str",titleModel));
  final String alt=action.getType().name().toLowerCase() + "String_Node_Str";
  actionIcon.add(new AttributeModifier("String_Node_Str",new ResourceModel(alt,alt)));
  actionLabel=new Label("String_Node_Str",titleModel);
  actionLink.add(actionLabel);
  add(actionLink);
  actionLabel.setVisible(action.isVisibleLabel());
  if (action.getLabel() != null) {
    actionLabel.setDefaultModel(action.getLabel());
  }
  if (action.getTitle() != null) {
    actionIcon.add(new AttributeModifier("String_Node_Str",action.getTitle()));
  }
  if (action.getAlt() != null) {
    actionIcon.add(new AttributeModifier("String_Node_Str",action.getAlt()));
  }
  if (action.getIcon() != null) {
    actionIcon.add(new AttributeModifier("String_Node_Str",action.getIcon()));
  }
  this.disableIndicator=!action.hasIndicator();
}