Program: 69264
Project: 69264
Buggy source:
public MembersCourseNodeRunController(UserRequest ureq,WindowControl wControl,UserCourseEnvironment userCourseEnv,ModuleConfiguration config){
  super(ureq,wControl);
  CourseEnvironment courseEnv=userCourseEnv.getCourseEnvironment();
  this.coaches=new ArrayList<>();
  this.participants=new ArrayList<>();
  boolean showOwners=config.getBooleanSafe(MembersCourseNode.CONFIG_KEY_SHOWOWNER);
  MembersCourseNodeConfiguration nodeConfig=(MembersCourseNodeConfiguration)CourseNodeFactory.getInstance().getCourseNodeConfiguration("String_Node_Str");
  boolean deduplicateList=nodeConfig.isDeduplicateList();
  String emailFct=config.getStringValue(MembersCourseNode.CONFIG_KEY_EMAIL_FUNCTION,MembersCourseNode.EMAIL_FUNCTION_COACH_ADMIN);
  boolean canEmail=MembersCourseNode.EMAIL_FUNCTION_ALL.equals(emailFct) || userCourseEnv.isAdmin() || userCourseEnv.isCoach();
  String downloadFct=config.getStringValue(MembersCourseNode.CONFIG_KEY_DOWNLOAD_FUNCTION,MembersCourseNode.EMAIL_FUNCTION_COACH_ADMIN);
  boolean canDownload=MembersCourseNode.EMAIL_FUNCTION_ALL.equals(downloadFct) || userCourseEnv.isAdmin() || userCourseEnv.isCoach();
  if (showOwners) {
    RepositoryEntry courseRepositoryEntry=courseEnv.getCourseGroupManager().getCourseEntry();
    owners=MembersHelpers.getOwners(repositoryService,courseRepositoryEntry);
  }
 else {
    owners=Collections.emptyList();
  }
  boolean showCoaches=false;
  if (config.anyTrue(MembersCourseNode.CONFIG_KEY_COACHES_ALL,MembersCourseNode.CONFIG_KEY_COACHES_COURSE) || config.hasAnyOf(MembersCourseNode.CONFIG_KEY_COACHES_GROUP,MembersCourseNode.CONFIG_KEY_COACHES_AREA)) {
    CourseGroupManager cgm=courseEnv.getCourseGroupManager();
    MembersHelpers.addCoaches(config,cgm,businessGroupService,coaches);
    showCoaches=true;
  }
  boolean showParticipants=false;
  if (config.anyTrue(MembersCourseNode.CONFIG_KEY_PARTICIPANTS_ALL,MembersCourseNode.CONFIG_KEY_PARTICIPANTS_COURSE) || config.hasAnyOf(MembersCourseNode.CONFIG_KEY_PARTICIPANTS_GROUP,MembersCourseNode.CONFIG_KEY_PARTICIPANTS_AREA)) {
    CourseGroupManager cgm=courseEnv.getCourseGroupManager();
    MembersHelpers.addParticipants(config,cgm,businessGroupService,participants);
    showParticipants=true;
  }
  membersDisplayRunController=new MembersDisplayRunController(ureq,wControl,getTranslator(),courseEnv,null,owners,coaches,participants,new ArrayList<>(),canEmail,canDownload,deduplicateList,showOwners,showCoaches,showParticipants,false,true);
  listenTo(membersDisplayRunController);
  putInitialPanel(membersDisplayRunController.getInitialComponent());
}

Fixed version (ground truth):
public MembersCourseNodeRunController(UserRequest ureq,WindowControl wControl,UserCourseEnvironment userCourseEnv,ModuleConfiguration config){
  super(ureq,wControl);
  CourseEnvironment courseEnv=userCourseEnv.getCourseEnvironment();
  List<Identity> owners;
  List<Identity> coaches=new ArrayList<>();
  List<Identity> participants=new ArrayList<>();
  boolean showOwners=config.getBooleanSafe(MembersCourseNode.CONFIG_KEY_SHOWOWNER);
  MembersCourseNodeConfiguration nodeConfig=(MembersCourseNodeConfiguration)CourseNodeFactory.getInstance().getCourseNodeConfiguration("String_Node_Str");
  boolean deduplicateList=nodeConfig.isDeduplicateList();
  String emailFct=config.getStringValue(MembersCourseNode.CONFIG_KEY_EMAIL_FUNCTION,MembersCourseNode.EMAIL_FUNCTION_COACH_ADMIN);
  boolean canEmail=MembersCourseNode.EMAIL_FUNCTION_ALL.equals(emailFct) || userCourseEnv.isAdmin() || userCourseEnv.isCoach();
  String downloadFct=config.getStringValue(MembersCourseNode.CONFIG_KEY_DOWNLOAD_FUNCTION,MembersCourseNode.EMAIL_FUNCTION_COACH_ADMIN);
  boolean canDownload=MembersCourseNode.EMAIL_FUNCTION_ALL.equals(downloadFct) || userCourseEnv.isAdmin() || userCourseEnv.isCoach();
  if (showOwners) {
    RepositoryEntry courseRepositoryEntry=courseEnv.getCourseGroupManager().getCourseEntry();
    owners=MembersHelpers.getOwners(repositoryService,courseRepositoryEntry);
  }
 else {
    owners=Collections.emptyList();
  }
  boolean showCoaches=false;
  if (config.anyTrue(MembersCourseNode.CONFIG_KEY_COACHES_ALL,MembersCourseNode.CONFIG_KEY_COACHES_COURSE) || config.hasAnyOf(MembersCourseNode.CONFIG_KEY_COACHES_GROUP,MembersCourseNode.CONFIG_KEY_COACHES_AREA)) {
    CourseGroupManager cgm=courseEnv.getCourseGroupManager();
    MembersHelpers.addCoaches(config,cgm,businessGroupService,coaches);
    showCoaches=true;
  }
  boolean showParticipants=false;
  if (config.anyTrue(MembersCourseNode.CONFIG_KEY_PARTICIPANTS_ALL,MembersCourseNode.CONFIG_KEY_PARTICIPANTS_COURSE) || config.hasAnyOf(MembersCourseNode.CONFIG_KEY_PARTICIPANTS_GROUP,MembersCourseNode.CONFIG_KEY_PARTICIPANTS_AREA)) {
    CourseGroupManager cgm=courseEnv.getCourseGroupManager();
    MembersHelpers.addParticipants(config,cgm,businessGroupService,participants);
    showParticipants=true;
  }
  membersDisplayRunController=new MembersDisplayRunController(ureq,wControl,getTranslator(),courseEnv,null,owners,coaches,participants,new ArrayList<>(),canEmail,canDownload,deduplicateList,showOwners,showCoaches,showParticipants,false,true);
  listenTo(membersDisplayRunController);
  putInitialPanel(membersDisplayRunController.getInitialComponent());
}