Program: 69323
Project: 69323
Buggy source:
/** 
 * Constructor for tunneling editor controller 
 * @param config The node module configuration
 * @param ureq The user request
 * @param wControl The window controller
 * @param tuCourseNode The current single page course node
 * @param course
 */
public LTIEditController(ModuleConfiguration config,UserRequest ureq,WindowControl wControl,BreadcrumbPanel stackPanel,BasicLTICourseNode ltCourseNode,ICourse course,UserCourseEnvironment euce){
  super(ureq,wControl);
  this.config=config;
  this.courseNode=ltCourseNode;
  this.editCourseEnv=course.getCourseEnvironment();
  this.stackPanel=stackPanel;
  myContent=createVelocityContainer("String_Node_Str");
  previewButton=LinkFactory.createButtonSmall("String_Node_Str",myContent,this);
  previewButton.setIconLeftCSS("String_Node_Str");
  highScoreNodeConfigController=new HighScoreEditController(ureq,wControl,courseNode);
  listenTo(highScoreNodeConfigController);
  ltConfigForm=new LTIConfigForm(ureq,wControl,config);
  listenTo(ltConfigForm);
  myContent.put("String_Node_Str",ltConfigForm.getInitialComponent());
  CourseEditorTreeModel editorModel=course.getEditorTreeModel();
  Condition accessCondition=courseNode.getPreConditionAccess();
  accessibilityCondContr=new ConditionEditController(ureq,getWindowControl(),euce,accessCondition,AssessmentHelper.getAssessableNodes(editorModel,ltCourseNode));
  this.listenTo(accessibilityCondContr);
  if (!(ltCourseNode.isConfigValid().isError()))   myContent.contextPut("String_Node_Str",Boolean.TRUE);
 else   myContent.contextPut("String_Node_Str",Boolean.FALSE);
}

Fixed version (ground truth):
/** 
 * Constructor for tunneling editor controller 
 * @param config The node module configuration
 * @param ureq The user request
 * @param wControl The window controller
 * @param tuCourseNode The current single page course node
 * @param course
 */
public LTIEditController(ModuleConfiguration config,UserRequest ureq,WindowControl wControl,BreadcrumbPanel stackPanel,BasicLTICourseNode ltCourseNode,ICourse course,UserCourseEnvironment euce){
  super(ureq,wControl);
  this.config=config;
  this.courseNode=ltCourseNode;
  this.editCourseEnv=course.getCourseEnvironment();
  this.stackPanel=stackPanel;
  myContent=createVelocityContainer("String_Node_Str");
  previewButton=LinkFactory.createButtonSmall("String_Node_Str",myContent,this);
  previewButton.setIconLeftCSS("String_Node_Str");
  highScoreNodeConfigController=new HighScoreEditController(ureq,wControl,config);
  listenTo(highScoreNodeConfigController);
  ltConfigForm=new LTIConfigForm(ureq,wControl,config);
  listenTo(ltConfigForm);
  myContent.put("String_Node_Str",ltConfigForm.getInitialComponent());
  CourseEditorTreeModel editorModel=course.getEditorTreeModel();
  Condition accessCondition=courseNode.getPreConditionAccess();
  accessibilityCondContr=new ConditionEditController(ureq,getWindowControl(),euce,accessCondition,AssessmentHelper.getAssessableNodes(editorModel,ltCourseNode));
  this.listenTo(accessibilityCondContr);
  if (!(ltCourseNode.isConfigValid().isError()))   myContent.contextPut("String_Node_Str",Boolean.TRUE);
 else   myContent.contextPut("String_Node_Str",Boolean.FALSE);
}