code: @ProblemFactCollectionProperty
      private List<TopicConflict> calculateTopicConflictList() {
          List<TopicConflict> topicConflictList = new ArrayList<>();
          for (Topic leftTopic : topicList) {
              for (Topic rightTopic : topicList) {
                  if (leftTopic.getId() < rightTopic.getId()) {
                      int studentSize = 0;
                      for (Student student : leftTopic.getStudentList()) {
                          if (rightTopic.getStudentList().contains(student)) {
                              studentSize++;
                          }
                      }
                      if (studentSize > 0) {
                          topicConflictList.add(new TopicConflict(leftTopic, rightTopic, studentSize));
                      }
                  }
              }
          }
          return topicConflictList;
      }
docs: ************************************************************************