## Uses of Class
org.cpsolver.studentsct.model.Enrollment

- Packages that use Enrollment
  Package | Description
  --- | ---
  org.cpsolver.studentsct | Student Sectioning Solver.
  org.cpsolver.studentsct.check | Various checks of validity of a student sectioning solution.
  org.cpsolver.studentsct.constraint | Student Sectioning: Constraints.
  org.cpsolver.studentsct.extension | Student Sectioning: Various Extensions.
  org.cpsolver.studentsct.heuristics | Student Sectioning: Heuristics.
  org.cpsolver.studentsct.heuristics.selection | Student Sectioning: Various Neighbour Selection Criteria.
  org.cpsolver.studentsct.model | Student Sectioning: Model.
  org.cpsolver.studentsct.online | Online Student Sectioning Solver.
  org.cpsolver.studentsct.online.expectations | Student Sectioning Solver: Over-Expectation Criteria.
  org.cpsolver.studentsct.online.selection | Online Student Sectioning Solver: Selection Weights and Heuristics.
  org.cpsolver.studentsct.report | Student Sectioning: Various Reports.
  org.cpsolver.studentsct.reservation | Student Sectioning: Reservations.
  org.cpsolver.studentsct.weights | Student Sectioning Weightings: various students weight models

- - ### Uses of Enrollment in org.cpsolver.studentsct

    Methods in org.cpsolver.studentsct that return Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `protected Enrollment` | StudentSectioningXMLLoader.`loadEnrollment(Element enrollmentEl, Request request)` Load enrollment

    Methods in org.cpsolver.studentsct that return types with arguments of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `static Solution<Request,Enrollment>` | Test.`batchSectioning(DataProperties cfg)` Batch sectioning test
    `static Solution<Request,Enrollment>` | Test.`combineStudents(DataProperties cfg, File lastLikeStudentData, File realStudentData)` Combine students from the provided two files
    `InheritedAssignment<Request,Enrollment>` | StudentSectioningModel.`createInheritedAssignment(Solution<Request,Enrollment> solution, int index)`
    `Solution<Request,Enrollment>` | StudentSctBBTest.`getSolution()` Compute and return the sectioning solution.
    `static Solution<Request,Enrollment>` | Test.`load(DataProperties cfg)` Load student sectioning model
    `static Solution<Request,Enrollment>` | Test.`onlineSectioning(DataProperties cfg)` Online sectioning test
    `static Solution<Request,Enrollment>` | Test.`solve(Solution<Request,Enrollment> solution, DataProperties cfg)` Solve the student sectioning problem using IFS solver

    Methods in org.cpsolver.studentsct with parameters of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `void` | StudentSectioningModel.StudentSectioningModelContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called after an enrollment was assigned to a request.
    `double` | StudentPreferencePenalties.`getPenalty(Enrollment enrollment)` Return penalty of an enrollment.
    `protected void` | StudentSectioningXMLSaver.`saveEnrollment(Element assignmentEl, Enrollment enrollment)` Save enrollment
    `void` | StudentSectioningModel.StudentSectioningModelContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called before an enrollment was unassigned from a request.

    Method parameters in org.cpsolver.studentsct with type arguments of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `void` | StudentSectioningModel.StudentSectioningModelContext.`add(Assignment<Request,Enrollment> assignment, DistanceConflict.Conflict c)`
    `void` | StudentSectioningModel.StudentSectioningModelContext.`add(Assignment<Request,Enrollment> assignment, StudentQuality.Conflict c)`
    `void` | StudentSectioningModel.StudentSectioningModelContext.`add(Assignment<Request,Enrollment> assignment, TimeOverlapsCounter.Conflict c)`
    `protected void` | StudentSectioningXMLLoader.`assignBest(List<Enrollment> bestEnrollments)` Save best enrollments
    `protected void` | StudentSectioningXMLLoader.`assignCurrent(List<Enrollment> currentEnrollments)` Assign current enrollments
    `void` | StudentSectioningModel.StudentSectioningModelContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called after an enrollment was assigned to a request.
    `double` | StudentSectioningModel.`avgUnassignPriority(Assignment<Request,Enrollment> assignment)` Average priority of unassigned requests (see `Request.getPriority()`)
    `void` | Test.TestSolutionListener.`bestCleared(Solution<Request,Enrollment> solution)`
    `void` | Test.TestSolutionListener.`bestRestored(Solution<Request,Enrollment> solution)`
    `void` | Test.TestSolutionListener.`bestSaved(Solution<Request,Enrollment> solution)`
    `void` | StudentSectioningModel.`computeOnlineSectioningInfos(Assignment<Request,Enrollment> assignment)` Compute online student sectioning infos for all sections (see `Section.getSpaceExpected()` and `Section.getSpaceHeld()`).
    `StudentSectioningModel.StudentSectioningModelContext` | StudentSectioningModel.`createAssignmentContext(Assignment<Request,Enrollment> assignment)`
    `InheritedAssignment<Request,Enrollment>` | StudentSectioningModel.`createInheritedAssignment(Solution<Request,Enrollment> solution, int index)`
    `static Document` | StudentRequestXml.`exportModel(Assignment<Request,Enrollment> assignment, StudentSectioningModel model)`
    `Map<String,String>` | StudentSectioningModel.`getExtendedInfo(Assignment<Request,Enrollment> assignment)` Model extended info.
    `Map<String,String>` | StudentSectioningModel.`getInfo(Assignment<Request,Enrollment> assignment)` Model info
    `void` | StudentSectioningModel.StudentSectioningModelContext.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info)`
    `void` | StudentSectioningModel.StudentSectioningModelContext.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info, Collection<Request> variables)`
    `void` | Test.TestSolutionListener.`getInfo(Solution<Request,Enrollment> solution, Map<String,String> info)`
    `void` | Test.TestSolutionListener.`getInfo(Solution<Request,Enrollment> solution, Map<String,String> info, Collection<Request> variables)`
    `double[]` | StudentPreferencePenalties.`getMinMaxAvailableEnrollmentPenalty(Assignment<Request,Enrollment> assignment, CourseRequest request)` Minimal and maximal available enrollment penalty of a request
    `static double[]` | Test.`getMinMaxAvailableEnrollmentPenalty(Assignment<Request,Enrollment> assignment, CourseRequest request)` Minimum and maximum available enrollment penalty, i.e., `getPenalty()` of all available enrollments
    `double[]` | StudentPreferencePenalties.`getMinMaxAvailableEnrollmentPenalty(Assignment<Request,Enrollment> assignment, Request request)` Minimal and maximal available enrollment penalty of a request
    `int` | StudentSectioningModel.`getNrAssignedLastLikeRequests(Assignment<Request,Enrollment> assignment, boolean precise)` Number of requests from projected (`Student.isDummy()` equals true) students that are assigned.
    `int` | StudentSectioningModel.`getNrAssignedRealRequests(Assignment<Request,Enrollment> assignment, boolean precise)` Number of requests from real (`Student.isDummy()` equals false) students that are assigned.
    `int` | StudentSectioningModel.`getNrCompleteLastLikeStudents(Assignment<Request,Enrollment> assignment, boolean precise)` Number of last like (`Student.isDummy()` equals true) students with a complete schedule (`Student.isComplete(Assignment)` equals true).
    `int` | StudentSectioningModel.`getNrCompleteRealStudents(Assignment<Request,Enrollment> assignment, boolean precise)` Number of real (`Student.isDummy()` equals false) students with a complete schedule (`Student.isComplete(Assignment)` equals true).
    `double` | StudentSectioningModel.`getTotalValue(Assignment<Request,Enrollment> assignment)` Overall solution value
    `double` | StudentSectioningModel.`getTotalValue(Assignment<Request,Enrollment> assignment, boolean precise)` Overall solution value
    `double` | StudentSectioningModel.`getUnassignedRequestWeight(Assignment<Request,Enrollment> assignment)` Sum of weights of all requests that are not assigned (see `Request.getWeight()`).
    `StudentSectioningModel.StudentSectioningModelContext` | StudentSectioningModel.`inheritAssignmentContext(Assignment<Request,Enrollment> assignment, StudentSectioningModel.StudentSectioningModelContext parentContext)`
    `protected void` | StudentSectioningXMLLoader.`loadStudents(Element studentsEl, Map<Long,Offering> offeringTable, Map<Long,Course> courseTable, List<Enrollment> bestEnrollments, List<Enrollment> currentEnrollments)` Load students
    `protected void` | StudentSectioningXMLLoader.`loadStudents(Element studentsEl, Map<Long,Offering> offeringTable, Map<Long,Course> courseTable, List<Enrollment> bestEnrollments, List<Enrollment> currentEnrollments)` Load students
    `static void` | Test.`printInfo(Solution<Request,Enrollment> solution, boolean computeTables, boolean computeSectInfos, boolean runChecks)` Print some information about the solution
    `void` | StudentSectioningModel.`recomputeTotalValue(Assignment<Request,Enrollment> assignment)`
    `void` | StudentSectioningModel.StudentSectioningModelContext.`remove(Assignment<Request,Enrollment> assignment, DistanceConflict.Conflict c)`
    `void` | StudentSectioningModel.StudentSectioningModelContext.`remove(Assignment<Request,Enrollment> assignment, StudentQuality.Conflict c)`
    `void` | StudentSectioningModel.StudentSectioningModelContext.`remove(Assignment<Request,Enrollment> assignment, TimeOverlapsCounter.Conflict c)`
    `void` | StudentSectioningModel.`requestWeightsChanged(Assignment<Request,Enrollment> assignment)` Recompute cached request weights
    `void` | StudentSectioningModel.StudentSectioningModelContext.`requestWeightsChanged(Assignment<Request,Enrollment> assignment)` Recompute cached request weights
    `void` | StudentSectioningModel.`restoreBest(Assignment<Request,Enrollment> assignment)`
    `void` | StudentSectioningModel.`saveBest(Assignment<Request,Enrollment> assignment)`
    `static void` | Test.`saveInfoToXML(Solution<Request,Enrollment> solution, Map<String,String> extra, File file)` Save solution info as XML
    `void` | Test.TestSolutionListener.`solutionUpdated(Solution<Request,Enrollment> solution)`
    `static Solution<Request,Enrollment>` | Test.`solve(Solution<Request,Enrollment> solution, DataProperties cfg)` Solve the student sectioning problem using IFS solver
    `String` | StudentSectioningModel.`toString(Assignment<Request,Enrollment> assignment)`
    `void` | StudentSectioningModel.StudentSectioningModelContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called before an enrollment was unassigned from a request.

    Constructor parameters in org.cpsolver.studentsct with type arguments of type Enrollment
    Constructor and Description
    `StudentSectioningLoader(StudentSectioningModel model, Assignment<Request,Enrollment> assignment)` Constructor
    `StudentSectioningModelContext(Assignment<Request,Enrollment> assignment)`
    `StudentSectioningSaver(Solver<Request,Enrollment> solver)` Constructor
    `StudentSectioningXMLLoader(StudentSectioningModel model, Assignment<Request,Enrollment> assignment)` Constructor
    `StudentSectioningXMLSaver(Solver<Request,Enrollment> solver)` Constructor

  - ### Uses of Enrollment in org.cpsolver.studentsct.check

    Methods in org.cpsolver.studentsct.check that return Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `Enrollment` | InevitableStudentConflicts.StudentCheck.`firstConflict(Enrollment enrollment)` First conflicting enrollment
    `Enrollment[]` | InevitableStudentConflicts.StudentCheck.`getBestAssignment()` Best schedule

    Methods in org.cpsolver.studentsct.check with parameters of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `Enrollment` | InevitableStudentConflicts.StudentCheck.`firstConflict(Enrollment enrollment)` First conflicting enrollment

    Method parameters in org.cpsolver.studentsct.check with type arguments of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `void` | InevitableStudentConflicts.StudentCheck.`backTrack(Assignment<Request,Enrollment> assignment, int idx)` branch & bound search
    `boolean` | InevitableStudentConflicts.`check(Assignment<Request,Enrollment> assignment)` Check model for inevitable student conflicts
    `void` | InevitableStudentConflicts.StudentCheck.`check(Assignment<Request,Enrollment> assignment)` Execute branch & bound, return the best found schedule for the selected student.
    `boolean` | OverlapCheck.`check(Assignment<Request,Enrollment> a)` Check for overlapping sections that are attended by the same student
    `boolean` | SectionLimitCheck.`check(Assignment<Request,Enrollment> assignment)` Check for sections that have more students enrolled than it is allowed, i.e., the sum of requests weights is above the section limit

  - ### Uses of Enrollment in org.cpsolver.studentsct.constraint

    Fields in org.cpsolver.studentsct.constraint with type parameters of type Enrollment
    Modifier and Type | Field and Description
    --- | ---
    `protected Assignment<Request,Enrollment>` | LinkedSections.CurrentAssignment.`iAssignment`

    Methods in org.cpsolver.studentsct.constraint that return Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `Enrollment` | LinkedSections.EnrollmentAssignment.`getEnrollment(Request request, int index)` Return enrollment of the given request
    `Enrollment` | LinkedSections.CurrentAssignment.`getEnrollment(Request request, int index)` Return `Variable.getAssignment(Assignment)`
    `Enrollment` | LinkedSections.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Check for conflicts.
    `Enrollment` | LinkedSections.`inConflict(Enrollment enrollment, LinkedSections.EnrollmentAssignment assignment)` Check for conflicts.

    Methods in org.cpsolver.studentsct.constraint with parameters of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `static boolean` | StudentConflict.`canAssign(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` True if the given enrollment can be assigned to the student.
    `void` | LinkedSections.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, LinkedSections.ConflictHandler conflicts)` Compute conflicting enrollments.
    `void` | CancelledSections.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if there is a section that is cancelled.
    `void` | ConfigLimit.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if the config's enrollment (computed by `ConfigLimit.getEnrollmentWeight(Assignment, Config, Request)`) exceeds the limit.
    `void` | CourseLimit.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if the course's enrollment (computed by `CourseLimit.getEnrollmentWeight(Assignment, Course, Request)`) exceeds the limit.
    `void` | DisabledSections.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if there is a section that is disabled and there is not a matching reservation that would allow for that.
    `void` | FixInitialAssignments.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` If there is a conflict that is MPP (method `Request.isMPP()` returns true) and equal to the initial assignment (returned by `Variable.getInitialAssignment()`), the given enrollment is put into the conflicts.
    `void` | FixedAssignments.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` If there is a conflict that is fixed (method `CourseRequest.isFixed()` returns true) and equal to the initial assignment (returned by `CourseRequest.getFixedValue()`), the given enrollment is put into the conflicts.
    `void` | HardDistanceConflicts.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if there is a section that is disabled and there is not a matching reservation that would allow for that.
    `void` | LinkedSections.LinkedSectionsConstraint.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment value, Set<Enrollment> conflicts)` Compute conflicts using `LinkedSections.computeConflicts(Assignment, Enrollment, ConflictHandler)`
    `void` | RequiredReservation.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if there is a reservation that the student must use, but the given enrollment does not use it.
    `void` | RequiredRestrictions.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if there is restriction that is not met.
    `void` | RequiredSections.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if there is a section that is cancelled.
    `void` | ReservationLimit.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if the reservation's remaining available space (computed by `Reservation.getReservedAvailableSpace(Assignment, Request)`) is below the requests weight `Request.getWeight()`.
    `void` | SectionLimit.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if there is a section which limit (computed by `SectionLimit.getEnrollmentWeight(Assignment, Section, Request)`) exceeds the section limit.
    `void` | StudentConflict.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting when the student is enrolled into another course / free time request that has an assignment that is overlapping with one or more assignments of the given section.
    `void` | StudentNotAvailable.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if the student is not available.
    `void` | LinkedSections.`computeConflicts(Enrollment enrollment, LinkedSections.EnrollmentAssignment assignment, LinkedSections.ConflictHandler conflicts)` Compute conflicting enrollments.
    `protected boolean` | LinkedSections.`hasFullMatch(Enrollment enrollment)` Check if the given enrollment fully matches this constraint
    `boolean` | CancelledSections.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if there is a section that is cancelled.
    `boolean` | ConfigLimit.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if the config's enrollment (computed by `ConfigLimit.getEnrollmentWeight(Assignment, Config, Request)`) exceeds the limit.
    `boolean` | CourseLimit.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if the course's enrollment (computed by `CourseLimit.getEnrollmentWeight(Assignment, Course, Request)`) exceeds the limit.
    `boolean` | DisabledSections.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if there is a section that is disabled and there is not a matching reservation that would allow for that.
    `boolean` | HardDistanceConflicts.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if there is a section that is disabled and there is not a matching reservation that would allow for that.
    `Enrollment` | LinkedSections.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Check for conflicts.
    `boolean` | LinkedSections.LinkedSectionsConstraint.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment value)` Check for conflict using `LinkedSections.inConflict(Assignment, Enrollment)`
    `boolean` | RequiredReservation.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if there is a reservation that the student must use, but the given enrollment does not use it.
    `boolean` | RequiredRestrictions.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if there is restriction that is not met.
    `boolean` | RequiredSections.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if there is a section that is cancelled.
    `boolean` | ReservationLimit.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if the config's enrollment (computed by `ConfigLimit.getEnrollmentWeight(Assignment, Config, Request)`) exceeds the limit.
    `boolean` | SectionLimit.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if there is a section which limit(computed by `SectionLimit.getEnrollmentWeight(Assignment, Section, Request)`) exceeds the section limit.
    `boolean` | StudentConflict.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting when the student is enrolled into another course / free time request that has an assignment that is overlapping with one or more assignments of the given section.
    `boolean` | StudentNotAvailable.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if the student is not available.
    `Enrollment` | LinkedSections.`inConflict(Enrollment enrollment, LinkedSections.EnrollmentAssignment assignment)` Check for conflicts.
    `static boolean` | HardDistanceConflicts.`inConflict(StudentQuality sq, SctAssignment s1, Enrollment e)`
    `boolean` | LinkedSections.LinkedSectionsConstraint.`isConsistent(Enrollment enrollment, Enrollment other)` Check consistency using `LinkedSections.inConflict(Enrollment, EnrollmentAssignment)`
    `boolean` | StudentConflict.`isConsistent(Enrollment e1, Enrollment e2)` Two enrollments are consistent if they are not overlapping in time
    `boolean` | LinkedSections.ConflictHandler.`onConflict(Enrollment conflict)` Called when there is a conflict, if false the computation of other conflicts is stopped.

    Method parameters in org.cpsolver.studentsct.constraint with type arguments of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `static boolean` | StudentConflict.`canAssign(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` True if the given enrollment can be assigned to the student.
    `static boolean` | StudentConflict.`canAssign(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` True if the given enrollment can be assigned to the student.
    `void` | LinkedSections.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, LinkedSections.ConflictHandler conflicts)` Compute conflicting enrollments.
    `void` | CancelledSections.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if there is a section that is cancelled.
    `void` | CancelledSections.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if there is a section that is cancelled.
    `void` | ConfigLimit.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if the config's enrollment (computed by `ConfigLimit.getEnrollmentWeight(Assignment, Config, Request)`) exceeds the limit.
    `void` | ConfigLimit.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if the config's enrollment (computed by `ConfigLimit.getEnrollmentWeight(Assignment, Config, Request)`) exceeds the limit.
    `void` | CourseLimit.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if the course's enrollment (computed by `CourseLimit.getEnrollmentWeight(Assignment, Course, Request)`) exceeds the limit.
    `void` | CourseLimit.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if the course's enrollment (computed by `CourseLimit.getEnrollmentWeight(Assignment, Course, Request)`) exceeds the limit.
    `void` | DisabledSections.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if there is a section that is disabled and there is not a matching reservation that would allow for that.
    `void` | DisabledSections.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if there is a section that is disabled and there is not a matching reservation that would allow for that.
    `void` | FixInitialAssignments.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` If there is a conflict that is MPP (method `Request.isMPP()` returns true) and equal to the initial assignment (returned by `Variable.getInitialAssignment()`), the given enrollment is put into the conflicts.
    `void` | FixInitialAssignments.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` If there is a conflict that is MPP (method `Request.isMPP()` returns true) and equal to the initial assignment (returned by `Variable.getInitialAssignment()`), the given enrollment is put into the conflicts.
    `void` | FixedAssignments.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` If there is a conflict that is fixed (method `CourseRequest.isFixed()` returns true) and equal to the initial assignment (returned by `CourseRequest.getFixedValue()`), the given enrollment is put into the conflicts.
    `void` | FixedAssignments.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` If there is a conflict that is fixed (method `CourseRequest.isFixed()` returns true) and equal to the initial assignment (returned by `CourseRequest.getFixedValue()`), the given enrollment is put into the conflicts.
    `void` | HardDistanceConflicts.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if there is a section that is disabled and there is not a matching reservation that would allow for that.
    `void` | HardDistanceConflicts.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if there is a section that is disabled and there is not a matching reservation that would allow for that.
    `void` | LinkedSections.LinkedSectionsConstraint.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment value, Set<Enrollment> conflicts)` Compute conflicts using `LinkedSections.computeConflicts(Assignment, Enrollment, ConflictHandler)`
    `void` | LinkedSections.LinkedSectionsConstraint.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment value, Set<Enrollment> conflicts)` Compute conflicts using `LinkedSections.computeConflicts(Assignment, Enrollment, ConflictHandler)`
    `void` | RequiredReservation.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if there is a reservation that the student must use, but the given enrollment does not use it.
    `void` | RequiredReservation.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if there is a reservation that the student must use, but the given enrollment does not use it.
    `void` | RequiredRestrictions.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if there is restriction that is not met.
    `void` | RequiredRestrictions.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if there is restriction that is not met.
    `void` | RequiredSections.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if there is a section that is cancelled.
    `void` | RequiredSections.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if there is a section that is cancelled.
    `void` | ReservationLimit.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if the reservation's remaining available space (computed by `Reservation.getReservedAvailableSpace(Assignment, Request)`) is below the requests weight `Request.getWeight()`.
    `void` | ReservationLimit.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if the reservation's remaining available space (computed by `Reservation.getReservedAvailableSpace(Assignment, Request)`) is below the requests weight `Request.getWeight()`.
    `void` | SectionLimit.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if there is a section which limit (computed by `SectionLimit.getEnrollmentWeight(Assignment, Section, Request)`) exceeds the section limit.
    `void` | SectionLimit.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if there is a section which limit (computed by `SectionLimit.getEnrollmentWeight(Assignment, Section, Request)`) exceeds the section limit.
    `void` | StudentConflict.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting when the student is enrolled into another course / free time request that has an assignment that is overlapping with one or more assignments of the given section.
    `void` | StudentConflict.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting when the student is enrolled into another course / free time request that has an assignment that is overlapping with one or more assignments of the given section.
    `void` | StudentNotAvailable.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if the student is not available.
    `void` | StudentNotAvailable.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if the student is not available.
    `static double` | ConfigLimit.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Config config, Request request)` Enrollment weight of a config if the given request is assigned.
    `static double` | CourseLimit.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Course course, Request request)` Enrollment weight of a course if the given request is assigned.
    `static double` | SectionLimit.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Section section, Request request)` Enrollment weight of a section if the given request is assigned.
    `static double` | ReservationLimit.`getUnreservedSpace(Assignment<Request,Enrollment> assignment, Config config, Request request, boolean hasReservation)` Remaining unreserved space in a config if the given request is assigned.
    `static double` | SectionLimit.`getUnreservedSpace(Assignment<Request,Enrollment> assignment, Section section, Request request)` Remaining unreserved space in a section if the given request is assigned.
    `boolean` | CancelledSections.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if there is a section that is cancelled.
    `boolean` | ConfigLimit.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if the config's enrollment (computed by `ConfigLimit.getEnrollmentWeight(Assignment, Config, Request)`) exceeds the limit.
    `boolean` | CourseLimit.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if the course's enrollment (computed by `CourseLimit.getEnrollmentWeight(Assignment, Course, Request)`) exceeds the limit.
    `boolean` | DisabledSections.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if there is a section that is disabled and there is not a matching reservation that would allow for that.
    `boolean` | HardDistanceConflicts.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if there is a section that is disabled and there is not a matching reservation that would allow for that.
    `Enrollment` | LinkedSections.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Check for conflicts.
    `boolean` | LinkedSections.LinkedSectionsConstraint.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment value)` Check for conflict using `LinkedSections.inConflict(Assignment, Enrollment)`
    `boolean` | RequiredReservation.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if there is a reservation that the student must use, but the given enrollment does not use it.
    `boolean` | RequiredRestrictions.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if there is restriction that is not met.
    `boolean` | RequiredSections.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if there is a section that is cancelled.
    `boolean` | ReservationLimit.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if the config's enrollment (computed by `ConfigLimit.getEnrollmentWeight(Assignment, Config, Request)`) exceeds the limit.
    `boolean` | SectionLimit.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if there is a section which limit(computed by `SectionLimit.getEnrollmentWeight(Assignment, Section, Request)`) exceeds the section limit.
    `boolean` | StudentConflict.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting when the student is enrolled into another course / free time request that has an assignment that is overlapping with one or more assignments of the given section.
    `boolean` | StudentNotAvailable.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if the student is not available.

    Constructor parameters in org.cpsolver.studentsct.constraint with type arguments of type Enrollment
    Constructor and Description
    `CurrentAssignment(Assignment<Request,Enrollment> assignment)`

  - ### Uses of Enrollment in org.cpsolver.studentsct.extension

    Methods in org.cpsolver.studentsct.extension that return Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `Enrollment` | DistanceConflict.Conflict.`getE1()` First enrollment
    `Enrollment` | StudentQuality.Conflict.`getE1()` First enrollment
    `Enrollment` | TimeOverlapsCounter.Conflict.`getE1()` First enrollment
    `Enrollment` | DistanceConflict.Conflict.`getE2()` Second enrollment
    `Enrollment` | StudentQuality.Conflict.`getE2()` Second enrollment
    `Enrollment` | TimeOverlapsCounter.Conflict.`getE2()` Second enrollment
    `Enrollment` | StudentQuality.Conflict.`getOther(Enrollment enrollment)` Other enrollment of the conflict

    Methods in org.cpsolver.studentsct.extension with parameters of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `void` | DistanceConflict.`afterAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is assigned to a variable.
    `void` | DistanceConflict.DistanceConflictContext.`afterAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is assigned to a variable.
    `void` | StudentQuality.`afterAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)`
    `void` | StudentQuality.StudentQualityContext.`afterAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is assigned to a variable.
    `void` | TimeOverlapsCounter.`afterAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is assigned to a variable.
    `void` | TimeOverlapsCounter.TimeOverlapsCounterContext.`afterAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is assigned to a variable.
    `void` | DistanceConflict.`afterUnassigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is unassigned from a variable.
    `void` | DistanceConflict.DistanceConflictContext.`afterUnassigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is unassigned from a variable.
    `void` | StudentQuality.`afterUnassigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)`
    `void` | StudentQuality.StudentQualityContext.`afterUnassigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is unassigned from a variable.
    `void` | TimeOverlapsCounter.`afterUnassigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is unassigned from a variable.
    `void` | TimeOverlapsCounter.TimeOverlapsCounterContext.`afterUnassigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is unassigned from a variable.
    `Set<DistanceConflict.Conflict>` | DistanceConflict.`allConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` The set of all conflicts (`DistanceConflict.Conflict` objects) of the given enrollment and other enrollments that are assignmed to the same student.
    `Set<StudentQuality.Conflict>` | StudentQuality.`allConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` All conflicts of the any type for the enrollment (including conflicts with other enrollments of the student)
    `Set<TimeOverlapsCounter.Conflict>` | TimeOverlapsCounter.`allConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` The set of all conflicts (`TimeOverlapsCounter.Conflict` objects) of the given enrollment and other enrollments that are assigned to the same student.
    `Set<TimeOverlapsCounter.Conflict>` | TimeOverlapsCounter.TimeOverlapsCounterContext.`allConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` The set of all conflicts (`TimeOverlapsCounter.Conflict` objects) of the given enrollment and other enrollments that are assigned to the same student.
    `Set<StudentQuality.Conflict>` | StudentQuality.StudentQualityContext.`allConflicts(StudentQuality.Type type, Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `int` | StudentQuality.StudentQualityContext.`allPenalty(StudentQuality.Type type, Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `void` | DistanceConflict.DistanceConflictContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment value)` Called when a value is assigned to a variable.
    `void` | StudentQuality.StudentQualityContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment value)`
    `void` | TimeOverlapsCounter.TimeOverlapsCounterContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment value)` Called when a value is assigned to a variable.
    `void` | DistanceConflict.`beforeAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called before a value is assigned to a variable.
    `void` | DistanceConflict.DistanceConflictContext.`beforeAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called before a value is assigned to a variable.
    `void` | StudentQuality.`beforeAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)`
    `void` | StudentQuality.StudentQualityContext.`beforeAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called before a value is assigned to a variable.
    `void` | TimeOverlapsCounter.`beforeAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called before a value is assigned to a variable.
    `void` | TimeOverlapsCounter.TimeOverlapsCounterContext.`beforeAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called before a value is assigned to a variable.
    `Set<DistanceConflict.Conflict>` | DistanceConflict.`conflicts(Enrollment e1)` Return a set of distance conflicts (`DistanceConflict.Conflict` objects) of a (course) enrollment.
    `Set<StudentQuality.Conflict>` | StudentQuality.`conflicts(Enrollment e1)` Conflicts of any type between classes of a single enrollment (or with free times, unavailabilities, etc.)
    `Set<TimeOverlapsCounter.Conflict>` | TimeOverlapsCounter.`conflicts(Enrollment enrollment)` Return a set of free and unavailability time conflict of the given enrollment.
    `Set<DistanceConflict.Conflict>` | DistanceConflict.`conflicts(Enrollment e1, Enrollment e2)` Return a set of distance conflicts (`DistanceConflict.Conflict` objects) between given (course) enrollments.
    `Set<StudentQuality.Conflict>` | StudentQuality.`conflicts(Enrollment e1, Enrollment e2)` Conflicts of any type between two enrollments of a student.
    `Set<TimeOverlapsCounter.Conflict>` | TimeOverlapsCounter.`conflicts(Enrollment e1, Enrollment e2)` Return a set of time overlapping conflicts (`TimeOverlapsCounter.Conflict` objects) between given (course) enrollments.
    `Set<StudentQuality.Conflict>` | StudentQuality.`conflicts(StudentQuality.Type type, Enrollment e1)` Conflicts of the given type between classes of a single enrollment (or with free times, unavailabilities, etc.)
    `Set<StudentQuality.Conflict>` | StudentQuality.`conflicts(StudentQuality.Type type, Enrollment e1, Enrollment e2)` Conflicss of the given type between two enrollments of a student.
    `double` | StudentConflictStatistics.`countRemovals(long iteration, Enrollment conflictValue, Enrollment value)`
    `Set<TimeOverlapsCounter.Conflict>` | TimeOverlapsCounter.`freeTimeConflicts(Enrollment enrollment)` Return a set of free time conflict of the given enrollment.
    `Enrollment` | StudentQuality.Conflict.`getOther(Enrollment enrollment)` Other enrollment of the conflict
    `double` | StudentQuality.Conflict.`getWeight(Enrollment e)` Weight of the conflict on the given enrollment
    `double` | StudentQuality.Type.`getWeight(StudentQuality.Context cx, StudentQuality.Conflict c, Enrollment e)`
    `double` | StudentQuality.Quality.`getWeight(StudentQuality.Context cx, StudentQuality.Conflict c, Enrollment e)` Base weight of the given conflict and enrollment.
    `Set<TimeOverlapsCounter.Conflict>` | TimeOverlapsCounter.`notAvailableTimeConflicts(Enrollment enrollment)` Return a set of unavailability time conflict of the given enrollment.
    `int` | DistanceConflict.DistanceConflictContext.`nrAllConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Total sum of all conflict of the given enrollment and other enrollments that are assigned to the same student.
    `int` | TimeOverlapsCounter.TimeOverlapsCounterContext.`nrAllConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Total sum of all conflict of the given enrollment and other enrollments that are assigned to the same student.
    `int` | DistanceConflict.`nrConflicts(Enrollment e1)` Return number of distance conflict of a (course) enrollment.
    `int` | DistanceConflict.`nrConflicts(Enrollment e1, Enrollment e2)` Return number of distance conflicts that are between two enrollments.
    `int` | TimeOverlapsCounter.`nrConflicts(Enrollment e1, Enrollment e2)` Return number of time overlapping conflicts that are between two enrollments.
    `int` | TimeOverlapsCounter.`nrFreeTimeConflicts(Enrollment enrollment)` Total sum of all free time conflict of the given enrollment.
    `int` | TimeOverlapsCounter.`nrNotAvailableTimeConflicts(Enrollment enrollment)` Total sum of all unavailability time conflict of the given enrollment.
    `Iterable<? extends SctAssignment>` | StudentQuality.Type.`other(StudentQuality.Context cx, Enrollment e)`
    `Iterable<? extends SctAssignment>` | StudentQuality.Quality.`other(StudentQuality.Context cx, Enrollment e)` Enumerate other section assignments applicable for the given enrollment (e.g., student unavailabilities)
    `int` | StudentQuality.`penalty(StudentQuality.Type type, Enrollment e1)` Penalty of given type between classes of a single enrollment (or with free times, unavailabilities, etc.)
    `int` | StudentQuality.`penalty(StudentQuality.Type type, Enrollment e1, Enrollment e2)` Penalisation of the given type between two enrollments of a student.
    `void` | DistanceConflict.DistanceConflictContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment value)` Called when a value is unassigned from a variable.
    `void` | StudentQuality.StudentQualityContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment value)` Called when a value is unassigned from a variable.
    `void` | TimeOverlapsCounter.TimeOverlapsCounterContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment value)` Called when a value is unassigned from a variable.

    Method parameters in org.cpsolver.studentsct.extension with type arguments of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `void` | DistanceConflict.`afterAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is assigned to a variable.
    `void` | DistanceConflict.DistanceConflictContext.`afterAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is assigned to a variable.
    `void` | StudentQuality.`afterAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)`
    `void` | StudentQuality.StudentQualityContext.`afterAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is assigned to a variable.
    `void` | TimeOverlapsCounter.`afterAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is assigned to a variable.
    `void` | TimeOverlapsCounter.TimeOverlapsCounterContext.`afterAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is assigned to a variable.
    `void` | DistanceConflict.`afterUnassigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is unassigned from a variable.
    `void` | DistanceConflict.DistanceConflictContext.`afterUnassigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is unassigned from a variable.
    `void` | StudentQuality.`afterUnassigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)`
    `void` | StudentQuality.StudentQualityContext.`afterUnassigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is unassigned from a variable.
    `void` | TimeOverlapsCounter.`afterUnassigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is unassigned from a variable.
    `void` | TimeOverlapsCounter.TimeOverlapsCounterContext.`afterUnassigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is unassigned from a variable.
    `Set<DistanceConflict.Conflict>` | DistanceConflict.`allConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` The set of all conflicts (`DistanceConflict.Conflict` objects) of the given enrollment and other enrollments that are assignmed to the same student.
    `Set<StudentQuality.Conflict>` | StudentQuality.`allConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` All conflicts of the any type for the enrollment (including conflicts with other enrollments of the student)
    `Set<TimeOverlapsCounter.Conflict>` | TimeOverlapsCounter.`allConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` The set of all conflicts (`TimeOverlapsCounter.Conflict` objects) of the given enrollment and other enrollments that are assigned to the same student.
    `Set<TimeOverlapsCounter.Conflict>` | TimeOverlapsCounter.TimeOverlapsCounterContext.`allConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` The set of all conflicts (`TimeOverlapsCounter.Conflict` objects) of the given enrollment and other enrollments that are assigned to the same student.
    `Set<StudentQuality.Conflict>` | StudentQuality.StudentQualityContext.`allConflicts(StudentQuality.Type type, Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `Set<StudentQuality.Conflict>` | StudentQuality.StudentQualityContext.`allConflicts(StudentQuality.Type type, Assignment<Request,Enrollment> assignment, Student student)`
    `int` | StudentQuality.StudentQualityContext.`allPenalty(StudentQuality.Type type, Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `int` | StudentQuality.StudentQualityContext.`allPenalty(StudentQuality.Type type, Assignment<Request,Enrollment> assignment, Student student)`
    `void` | DistanceConflict.DistanceConflictContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment value)` Called when a value is assigned to a variable.
    `void` | StudentQuality.StudentQualityContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment value)`
    `void` | TimeOverlapsCounter.TimeOverlapsCounterContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment value)` Called when a value is assigned to a variable.
    `void` | DistanceConflict.`beforeAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called before a value is assigned to a variable.
    `void` | DistanceConflict.DistanceConflictContext.`beforeAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called before a value is assigned to a variable.
    `void` | StudentQuality.`beforeAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)`
    `void` | StudentQuality.StudentQualityContext.`beforeAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called before a value is assigned to a variable.
    `void` | TimeOverlapsCounter.`beforeAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called before a value is assigned to a variable.
    `void` | TimeOverlapsCounter.TimeOverlapsCounterContext.`beforeAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called before a value is assigned to a variable.
    `void` | DistanceConflict.`checkAllConflicts(Assignment<Request,Enrollment> assignment)` Checks the counter counting all conflicts
    `void` | DistanceConflict.DistanceConflictContext.`checkAllConflicts(Assignment<Request,Enrollment> assignment)` Checks the counter counting all conflicts
    `void` | TimeOverlapsCounter.`checkTotalNrConflicts(Assignment<Request,Enrollment> assignment)`
    `void` | TimeOverlapsCounter.TimeOverlapsCounterContext.`checkTotalNrConflicts(Assignment<Request,Enrollment> assignment)`
    `void` | StudentQuality.`checkTotalPenalty(Assignment<Request,Enrollment> assignment)` Re-check total penalization for the given assignment
    `void` | StudentQuality.`checkTotalPenalty(StudentQuality.Type type, Assignment<Request,Enrollment> assignment)` Re-check total penalization for the given assignment and conflict type
    `void` | StudentQuality.StudentQualityContext.`checkTotalPenalty(StudentQuality.Type type, Assignment<Request,Enrollment> assignment)`
    `Set<DistanceConflict.Conflict>` | DistanceConflict.`computeAllConflicts(Assignment<Request,Enrollment> assignment)` Compute a set of all distance conflicts (`DistanceConflict.Conflict` objects).
    `Set<TimeOverlapsCounter.Conflict>` | TimeOverlapsCounter.TimeOverlapsCounterContext.`computeAllConflicts(Assignment<Request,Enrollment> assignment)` Compute a set of all time overlapping conflicts (`TimeOverlapsCounter.Conflict` objects).
    `Set<StudentQuality.Conflict>` | StudentQuality.StudentQualityContext.`computeAllConflicts(StudentQuality.Type type, Assignment<Request,Enrollment> assignment)`
    `int` | DistanceConflict.`countTotalNrConflicts(Assignment<Request,Enrollment> assignment)` Compute the actual number of all distance conflicts.
    `int` | TimeOverlapsCounter.TimeOverlapsCounterContext.`countTotalNrConflicts(Assignment<Request,Enrollment> assignment)` Compute the actual number of all time overlapping conflicts.
    `int` | StudentQuality.StudentQualityContext.`countTotalPenalty(StudentQuality.Type type, Assignment<Request,Enrollment> assignment)`
    `DistanceConflict.DistanceConflictContext` | DistanceConflict.`createAssignmentContext(Assignment<Request,Enrollment> assignment)`
    `StudentQuality.StudentQualityContext` | StudentQuality.`createAssignmentContext(Assignment<Request,Enrollment> assignment)`
    `TimeOverlapsCounter.TimeOverlapsCounterContext` | TimeOverlapsCounter.`createAssignmentContext(Assignment<Request,Enrollment> assignment)`
    `Set<DistanceConflict.Conflict>` | DistanceConflict.`getAllConflicts(Assignment<Request,Enrollment> assignment)` Return a set of all distance conflicts (`DistanceConflict.Conflict` objects).
    `Set<TimeOverlapsCounter.Conflict>` | TimeOverlapsCounter.`getAllConflicts(Assignment<Request,Enrollment> assignment)` Return a set of all time overlapping conflicts (`TimeOverlapsCounter.Conflict` objects).
    `Set<StudentQuality.Conflict>` | StudentQuality.`getAllConflicts(StudentQuality.Type type, Assignment<Request,Enrollment> assignment)` All conflicts of the given type for the given assignment
    `void` | StudentQuality.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info)`
    `void` | StudentQuality.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info, Collection<Request> variables)`
    `int` | DistanceConflict.`getTotalNrConflicts(Assignment<Request,Enrollment> assignment)` Actual number of all distance conflicts
    `int` | TimeOverlapsCounter.`getTotalNrConflicts(Assignment<Request,Enrollment> assignment)` Actual number of all time overlapping conflicts
    `int` | DistanceConflict.`getTotalNrShortConflicts(Assignment<Request,Enrollment> assignment)` Actual number of all distance conflicts of students that need short distances
    `int` | StudentQuality.`getTotalPenalty(Assignment<Request,Enrollment> assignment, StudentQuality.Type... types)` Total penalisation of given types
    `int` | StudentQuality.`getTotalPenalty(StudentQuality.Type type, Assignment<Request,Enrollment> assignment)` Total penalisation of given type
    `DistanceConflict.DistanceConflictContext` | DistanceConflict.`inheritAssignmentContext(Assignment<Request,Enrollment> assignment, DistanceConflict.DistanceConflictContext parentContext)`
    `StudentQuality.StudentQualityContext` | StudentQuality.`inheritAssignmentContext(Assignment<Request,Enrollment> assignment, StudentQuality.StudentQualityContext parentContext)`
    `TimeOverlapsCounter.TimeOverlapsCounterContext` | TimeOverlapsCounter.`inheritAssignmentContext(Assignment<Request,Enrollment> assignment, TimeOverlapsCounter.TimeOverlapsCounterContext parentContext)`
    `int` | DistanceConflict.DistanceConflictContext.`nrAllConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Total sum of all conflict of the given enrollment and other enrollments that are assigned to the same student.
    `int` | TimeOverlapsCounter.TimeOverlapsCounterContext.`nrAllConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Total sum of all conflict of the given enrollment and other enrollments that are assigned to the same student.
    `String` | StudentQuality.`toString(Assignment<Request,Enrollment> assignment)`
    `void` | DistanceConflict.DistanceConflictContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment value)` Called when a value is unassigned from a variable.
    `void` | StudentQuality.StudentQualityContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment value)` Called when a value is unassigned from a variable.
    `void` | TimeOverlapsCounter.TimeOverlapsCounterContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment value)` Called when a value is unassigned from a variable.

    Constructors in org.cpsolver.studentsct.extension with parameters of type Enrollment
    Constructor and Description
    `Conflict(Student student, Enrollment e1, Section s1, Enrollment e2, Section s2)` Constructor
    `Conflict(Student student, int share, Enrollment e1, SctAssignment a1, Enrollment e2, SctAssignment a2)` Constructor
    `Conflict(Student student, StudentQuality.Type type, int penalty, Enrollment e1, SctAssignment a1, Enrollment e2, SctAssignment a2)` Constructor
    `Conflict(Student student, StudentQuality.Type type, int penalty, Enrollment e1, SctAssignment a1, SctAssignment a2)`
    `Online(Enrollment enrollment, boolean online)`

    Constructor parameters in org.cpsolver.studentsct.extension with type arguments of type Enrollment
    Constructor and Description
    `DistanceConflict(Solver<Request,Enrollment> solver, DataProperties properties)` Constructor.
    `DistanceConflictContext(Assignment<Request,Enrollment> assignment)`
    `StudentConflictStatistics(Solver<Request,Enrollment> solver, DataProperties properties)`
    `StudentQuality(Solver<Request,Enrollment> solver, DataProperties properties)` Constructor
    `StudentQualityContext(Assignment<Request,Enrollment> assignment)`
    `TimeOverlapsCounter(Solver<Request,Enrollment> solver, DataProperties properties)` Constructor.
    `TimeOverlapsCounterContext(Assignment<Request,Enrollment> assignment)`

  - ### Uses of Enrollment in org.cpsolver.studentsct.heuristics

    Fields in org.cpsolver.studentsct.heuristics with type parameters of type Enrollment
    Modifier and Type | Field and Description
    --- | ---
    `protected List<Enrollment>` | EnrollmentSelection.`iTabu`

    Methods in org.cpsolver.studentsct.heuristics that return Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `Enrollment` | EnrollmentSelection.`selectValue(Solution<Request,Enrollment> solution, Request selectedVariable)` Value selection
    `Enrollment` | EnrollmentSelection.`selectValue(Solution<Request,Enrollment> solution, Request selectedVariable, AssignmentCheck<Request,Enrollment> test)`

    Methods in org.cpsolver.studentsct.heuristics that return types with arguments of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `Neighbour<Request,Enrollment>` | RestoreBestSolution.`selectNeighbour(Solution<Request,Enrollment> solution)`
    `Neighbour<Request,Enrollment>` | TwoPhaseStudentSctNeighbourSelection.RestoreDummyStudents.`selectNeighbour(Solution<Request,Enrollment> solution)` Return all (removed) dummy students into the problem
    `protected Iterator<Enrollment>` | RandomizedBacktrackNeighbourSelection.`values(BacktrackNeighbourSelection.BacktrackNeighbourSelectionContext context, Request variable)` List of values of a variable.

    Methods in org.cpsolver.studentsct.heuristics with parameters of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | RandomizedBacktrackNeighbourSelection.`canUnassign(Enrollment enrollment, Enrollment conflict, Assignment<Request,Enrollment> assignment)` Check if the given conflicting enrollment can be unassigned
    `protected boolean` | RandomizedBacktrackNeighbourSelection.`checkBound(List<Request> variables2resolve, int idx, int depth, Enrollment value, Set<Enrollment> conflicts)`
    `boolean` | EnrollmentSelection.`isAllowed(Assignment<Request,Enrollment> assignment, Enrollment value, AssignmentCheck<Request,Enrollment> test)` true, if it is allowed to assign given value
    `boolean` | EnrollmentSelection.`isAllowed(Assignment<Request,Enrollment> assignment, Enrollment value, Set<Enrollment> conflicts, AssignmentCheck<Request,Enrollment> test)` true, if it is allowed to assign given value
    `boolean` | StudentSctNeighbourSelection.`valueSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable, Enrollment value)`

    Method parameters in org.cpsolver.studentsct.heuristics with type arguments of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | RandomizedBacktrackNeighbourSelection.`canUnassign(Enrollment enrollment, Enrollment conflict, Assignment<Request,Enrollment> assignment)` Check if the given conflicting enrollment can be unassigned
    `protected boolean` | RandomizedBacktrackNeighbourSelection.`checkBound(List<Request> variables2resolve, int idx, int depth, Enrollment value, Set<Enrollment> conflicts)`
    `protected RouletteWheelSelection<Request>` | RouletteWheelRequestSelection.`getRoulette(Solution<Request,Enrollment> solution)` Populate roulette wheel selection, if null or empty.
    `void` | EnrollmentSelection.`init(Solver<Request,Enrollment> solver)` Initialization
    `void` | RestoreBestSolution.`init(Solver<Request,Enrollment> solver)`
    `void` | RouletteWheelRequestSelection.`init(Solver<Request,Enrollment> solver)` Initialization
    `void` | StudentSctNeighbourSelection.`init(Solver<Request,Enrollment> solver)`
    `void` | TwoPhaseStudentSctNeighbourSelection.`init(Solver<Request,Enrollment> solver)` Initialization -- also remove all the dummy students from the problem
    `void` | TwoPhaseStudentSctNeighbourSelection.RestoreDummyStudents.`init(Solver<Request,Enrollment> solver)`
    `boolean` | EnrollmentSelection.`isAllowed(Assignment<Request,Enrollment> assignment, Enrollment value, AssignmentCheck<Request,Enrollment> test)` true, if it is allowed to assign given value
    `boolean` | EnrollmentSelection.`isAllowed(Assignment<Request,Enrollment> assignment, Enrollment value, AssignmentCheck<Request,Enrollment> test)` true, if it is allowed to assign given value
    `boolean` | EnrollmentSelection.`isAllowed(Assignment<Request,Enrollment> assignment, Enrollment value, Set<Enrollment> conflicts, AssignmentCheck<Request,Enrollment> test)` true, if it is allowed to assign given value
    `boolean` | EnrollmentSelection.`isAllowed(Assignment<Request,Enrollment> assignment, Enrollment value, Set<Enrollment> conflicts, AssignmentCheck<Request,Enrollment> test)` true, if it is allowed to assign given value
    `boolean` | EnrollmentSelection.`isAllowed(Assignment<Request,Enrollment> assignment, Enrollment value, Set<Enrollment> conflicts, AssignmentCheck<Request,Enrollment> test)` true, if it is allowed to assign given value
    `void` | StudentSctNeighbourSelection.`neighbourFailed(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `void` | StudentSctNeighbourSelection.`neighbourFailed(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `boolean` | StudentSctNeighbourSelection.`neighbourSelected(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `boolean` | StudentSctNeighbourSelection.`neighbourSelected(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `Neighbour<Request,Enrollment>` | RestoreBestSolution.`selectNeighbour(Solution<Request,Enrollment> solution)`
    `Neighbour<Request,Enrollment>` | TwoPhaseStudentSctNeighbourSelection.RestoreDummyStudents.`selectNeighbour(Solution<Request,Enrollment> solution)` Return all (removed) dummy students into the problem
    `Enrollment` | EnrollmentSelection.`selectValue(Solution<Request,Enrollment> solution, Request selectedVariable)` Value selection
    `Enrollment` | EnrollmentSelection.`selectValue(Solution<Request,Enrollment> solution, Request selectedVariable, AssignmentCheck<Request,Enrollment> test)`
    `Enrollment` | EnrollmentSelection.`selectValue(Solution<Request,Enrollment> solution, Request selectedVariable, AssignmentCheck<Request,Enrollment> test)`
    `Request` | RouletteWheelRequestSelection.`selectVariable(Solution<Request,Enrollment> solution)` Variable selection.
    `void` | StudentSctNeighbourSelection.`setup(Solver<Request,Enrollment> solver)`
    `boolean` | StudentSctNeighbourSelection.`valueSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable, Enrollment value)`
    `boolean` | StudentSctNeighbourSelection.`variableSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable)`

  - ### Uses of Enrollment in org.cpsolver.studentsct.heuristics.selection

    Fields in org.cpsolver.studentsct.heuristics.selection declared as Enrollment
    Modifier and Type | Field and Description
    --- | ---
    `protected Enrollment[]` | BranchBoundSelection.Selection.`iAssignment` Current assignment
    `protected Enrollment[]` | BranchBoundSelection.Selection.`iBestAssignment` Best assignment

    Fields in org.cpsolver.studentsct.heuristics.selection with type parameters of type Enrollment
    Modifier and Type | Field and Description
    --- | ---
    `protected Assignment<Request,Enrollment>` | BranchBoundSelection.Selection.`iCurrentAssignment` Current assignment
    `protected HashMap<CourseRequest,List<Enrollment>>` | BranchBoundSelection.Selection.`iValues` Value cache
    `protected ValueSelection<Request,Enrollment>` | StandardSelection.`iValueSelection`
    `protected VariableSelection<Request,Enrollment>` | StandardSelection.`iVariableSelection`

    Methods in org.cpsolver.studentsct.heuristics.selection that return Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `static Enrollment` | SwapStudentSelection.`bestSwap(Assignment<Request,Enrollment> assignment, Enrollment conflict, Enrollment enrl, Set<Student> problematicStudents)` Identify the best swap for the given student
    `Enrollment` | BranchBoundSelection.Selection.`firstConflict(int idx, Enrollment enrollment)` First conflicting enrollment
    `Enrollment` | OnlineSelection.EpsilonSelection.`firstConflict(int idx, Enrollment enrollment)` First conflicting enrollment
    `Enrollment[]` | BranchBoundSelection.BranchBoundNeighbour.`getAssignment()` Assignment
    `Enrollment[]` | BranchBoundSelection.Selection.`getBestAssignment()` Best schedule
    `Enrollment` | SwapStudentSelection.Selection.`getBestEnrollment()` The best enrollment found.

    Methods in org.cpsolver.studentsct.heuristics.selection that return types with arguments of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `Map<Request,Enrollment>` | BranchBoundSelection.BranchBoundNeighbour.`assignments()`
    `Map<Request,Enrollment>` | PriorityConstructionSelection.ConstructionNeighbour.`assignments()`
    `Map<Request,Enrollment>` | RandomUnassignmentSelection.UnassignStudentNeighbour.`assignments()`
    `Map<Request,Enrollment>` | SwapStudentSelection.SwapStudentNeighbour.`assignments()`
    `Neighbour<Request,Enrollment>` | PriorityConstructionSelection.`branchAndBound(Solution<Request,Enrollment> solution)` Find best solution for the next student using `BranchBoundSelection`.
    `Neighbour<Request,Enrollment>` | AssignInitialSelection.`selectNeighbour(Solution<Request,Enrollment> solution)`
    `Neighbour<Request,Enrollment>` | BacktrackSelection.`selectNeighbour(Solution<Request,Enrollment> solution)`
    `Neighbour<Request,Enrollment>` | BranchBoundSelection.`selectNeighbour(Solution<Request,Enrollment> solution)` Select neighbour.
    `Neighbour<Request,Enrollment>` | CriticalCoursesBranchAndBoundSelection.`selectNeighbour(Solution<Request,Enrollment> solution)`
    `Neighbour<Request,Enrollment>` | MinCreditBranchAndBoundSelection.`selectNeighbour(Solution<Request,Enrollment> solution)`
    `Neighbour<Request,Enrollment>` | PriorityConstructionSelection.`selectNeighbour(Solution<Request,Enrollment> solution)` Select neighbor.
    `Neighbour<Request,Enrollment>` | RandomUnassignmentSelection.`selectNeighbour(Solution<Request,Enrollment> solution)` With the given probabilty, a student is randomly selected to be unassigned.
    `Neighbour<Request,Enrollment>` | ResectionIncompleteStudentsSelection.`selectNeighbour(Solution<Request,Enrollment> solution)` Select neighbour.
    `Neighbour<Request,Enrollment>` | ResectionUnassignedStudentsSelection.`selectNeighbour(Solution<Request,Enrollment> solution)` Select neighbour.
    `Neighbour<Request,Enrollment>` | RndUnProblStudSelection.`selectNeighbour(Solution<Request,Enrollment> solution)` With the given probabilty, a problematic student is randomly selected to be unassigned.
    `Neighbour<Request,Enrollment>` | ShuffleStudentsSelection.`selectNeighbour(Solution<Request,Enrollment> solution)`
    `Neighbour<Request,Enrollment>` | StandardSelection.`selectNeighbour(Solution<Request,Enrollment> solution)` Employ the provided `VariableSelection` and `ValueSelection` and return the selected value as `SimpleNeighbour`.
    `Neighbour<Request,Enrollment>` | StudentEnrollmentSwapSelection.`selectNeighbour(Solution<Request,Enrollment> solution)`
    `Neighbour<Request,Enrollment>` | SwapStudentSelection.`selectNeighbour(Solution<Request,Enrollment> solution)` For each student that does not have a complete schedule, try to find a request and a student that can be moved out of an enrollment so that the selected student can be assigned to the selected request.
    `protected Neighbour<Request,Enrollment>` | ShuffleStudentsSelection.ShuffleBacktrackNeighbourSelection.`selectNeighbour(Solution<Request,Enrollment> solution, org.cpsolver.studentsct.heuristics.selection.ShuffleStudentsSelection.Shuffle shuffle)`
    `protected Iterator<Enrollment>` | ShuffleStudentsSelection.ShuffleBacktrackNeighbourSelection.`values(BacktrackNeighbourSelection.BacktrackNeighbourSelectionContext context, Request variable)` List of values of the given variable that will be considered (filtered using `ShuffleStudentsSelection.Shuffle.matchFilter(Enrollment)` if applicable).
    `protected List<Enrollment>` | BranchBoundSelection.Selection.`values(CourseRequest request)` Returns list of available enrollments for a course request

    Methods in org.cpsolver.studentsct.heuristics.selection with parameters of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `static Enrollment` | SwapStudentSelection.`bestSwap(Assignment<Request,Enrollment> assignment, Enrollment conflict, Enrollment enrl, Set<Student> problematicStudents)` Identify the best swap for the given student
    `boolean` | RandomUnassignmentSelection.UnassignStudentNeighbour.`canUnassign(Enrollment enrollment)` Check if the given enrollment can be unassigned
    `boolean` | CriticalStandardSelection.`canUnassign(Enrollment enrollment, Enrollment conflict, Assignment<Request,Enrollment> assignment)`
    `boolean` | StandardSelection.`canUnassign(Enrollment enrollment, Enrollment conflict, Assignment<Request,Enrollment> assignment)` Check if the given conflicting enrollment can be unassigned
    `boolean` | SwapStudentSelection.Selection.`canUnassign(Enrollment enrollment, Enrollment conflict, Assignment<Request,Enrollment> assignment)` Check if the given conflicting enrollment can be unassigned
    `Enrollment` | BranchBoundSelection.Selection.`firstConflict(int idx, Enrollment enrollment)` First conflicting enrollment
    `Enrollment` | OnlineSelection.EpsilonSelection.`firstConflict(int idx, Enrollment enrollment)` First conflicting enrollment
    `protected double` | BranchBoundSelection.Selection.`getWeight(Enrollment enrollment, Set<DistanceConflict.Conflict> distanceConflicts, Set<TimeOverlapsCounter.Conflict> timeOverlappingConflicts)` Deprecated.
    `protected double` | BranchBoundSelection.Selection.`getWeight(Enrollment enrollment, Set<StudentQuality.Conflict> conflicts)`
    `boolean` | BranchBoundSelection.Selection.`inConflict(int idx, Enrollment enrollment)` True if the enrollment is conflicting
    `boolean` | OnlineSelection.EpsilonSelection.`isAllowed(int idx, Enrollment enrollment)`
    `boolean` | BacktrackSelection.`valueSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable, Enrollment value)`
    `boolean` | BranchBoundSelection.`valueSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable, Enrollment value)`
    `boolean` | StudentEnrollmentSwapSelection.`valueSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable, Enrollment value)`
    `boolean` | SwapStudentSelection.`valueSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable, Enrollment value)`

    Method parameters in org.cpsolver.studentsct.heuristics.selection with type arguments of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | StandardSelection.`accept(SimpleNeighbour<Request,Enrollment> n, Solution<Request,Enrollment> solution)` Check whether the given neighbors can be returned
    `boolean` | StandardSelection.`accept(SimpleNeighbour<Request,Enrollment> n, Solution<Request,Enrollment> solution)` Check whether the given neighbors can be returned
    `void` | BranchBoundSelection.BranchBoundNeighbour.`assign(Assignment<Request,Enrollment> assignment, long iteration)` Assign the schedule
    `void` | PriorityConstructionSelection.ConstructionNeighbour.`assign(Assignment<Request,Enrollment> assignment, long iteration)` Only assign given number of assignments (from the first priority down).
    `void` | RandomUnassignmentSelection.UnassignStudentNeighbour.`assign(Assignment<Request,Enrollment> assignment, long iteration)` All requests of the given student are unassigned
    `void` | SwapStudentSelection.SwapStudentNeighbour.`assign(Assignment<Request,Enrollment> assignment, long iteration)` Perform the move.
    `static Enrollment` | SwapStudentSelection.`bestSwap(Assignment<Request,Enrollment> assignment, Enrollment conflict, Enrollment enrl, Set<Student> problematicStudents)` Identify the best swap for the given student
    `Neighbour<Request,Enrollment>` | PriorityConstructionSelection.`branchAndBound(Solution<Request,Enrollment> solution)` Find best solution for the next student using `BranchBoundSelection`.
    `boolean` | CriticalStandardSelection.`canUnassign(Enrollment enrollment, Enrollment conflict, Assignment<Request,Enrollment> assignment)`
    `boolean` | StandardSelection.`canUnassign(Enrollment enrollment, Enrollment conflict, Assignment<Request,Enrollment> assignment)` Check if the given conflicting enrollment can be unassigned
    `boolean` | SwapStudentSelection.Selection.`canUnassign(Enrollment enrollment, Enrollment conflict, Assignment<Request,Enrollment> assignment)` Check if the given conflicting enrollment can be unassigned
    `void` | BacktrackSelection.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info)`
    `void` | BranchBoundSelection.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info)`
    `void` | StudentEnrollmentSwapSelection.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info)`
    `void` | SwapStudentSelection.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info)`
    `void` | BacktrackSelection.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info, Collection<Request> variables)`
    `void` | BranchBoundSelection.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info, Collection<Request> variables)`
    `void` | StudentEnrollmentSwapSelection.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info, Collection<Request> variables)`
    `void` | SwapStudentSelection.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info, Collection<Request> variables)`
    `BranchBoundSelection.Selection` | BranchBoundSelection.`getSelection(Assignment<Request,Enrollment> assignment, Student student)` Branch & bound selection for a student
    `BranchBoundSelection.Selection` | CriticalCoursesBranchAndBoundSelection.`getSelection(Assignment<Request,Enrollment> assignment, Student student)`
    `BranchBoundSelection.Selection` | MinCreditBranchAndBoundSelection.`getSelection(Assignment<Request,Enrollment> assignment, Student student)`
    `BranchBoundSelection.Selection` | OnlineSelection.`getSelection(Assignment<Request,Enrollment> assignment, Student student)` Branch & bound selection for a student
    `SwapStudentSelection.Selection` | SwapStudentSelection.`getSelection(Assignment<Request,Enrollment> assignment, Student student)` Selection subclass for a student
    `void` | AssignInitialSelection.`init(Solver<Request,Enrollment> solver)`
    `void` | BacktrackSelection.`init(Solver<Request,Enrollment> solver)`
    `void` | BranchBoundSelection.`init(Solver<Request,Enrollment> solver)`
    `void` | CriticalCoursesBranchAndBoundSelection.`init(Solver<Request,Enrollment> solver)`
    `void` | CriticalStandardSelection.`init(Solver<Request,Enrollment> solver)`
    `void` | MinCreditBranchAndBoundSelection.`init(Solver<Request,Enrollment> solver)`
    `void` | OnlineSelection.`init(Solver<Request,Enrollment> solver)`
    `void` | PriorityConstructionSelection.`init(Solver<Request,Enrollment> solver)` Initialize
    `void` | RandomUnassignmentSelection.`init(Solver<Request,Enrollment> solver)` Initialization
    `void` | ResectionIncompleteStudentsSelection.`init(Solver<Request,Enrollment> solver)`
    `void` | ResectionUnassignedStudentsSelection.`init(Solver<Request,Enrollment> solver)`
    `void` | RndUnProblStudSelection.`init(Solver<Request,Enrollment> solver)` Initialization -- `ProblemStudentsProvider.getProblemStudents()` is called
    `void` | ShuffleStudentsSelection.`init(Solver<Request,Enrollment> solver)`
    `void` | StandardSelection.`init(Solver<Request,Enrollment> solver)` Initialization
    `void` | StudentEnrollmentSwapSelection.`init(Solver<Request,Enrollment> solver)`
    `void` | SwapStudentSelection.`init(Solver<Request,Enrollment> solver)` Initialization
    `void` | UnassignedCriticalCourseRequestSelection.`init(Solver<Request,Enrollment> solver)`
    `void` | UnassignedRequestSelection.`init(Solver<Request,Enrollment> solver)`
    `void` | BacktrackSelection.`init(Solver<Request,Enrollment> solver, String name)`
    `void` | BranchBoundSelection.`init(Solver<Request,Enrollment> solver, String name)` Initialize
    `void` | CriticalBacktrackSelection.`init(Solver<Request,Enrollment> solver, String name)`
    `protected void` | StandardSelection.`init(Solver<Request,Enrollment> solver, String name)`
    `void` | StudentEnrollmentSwapSelection.`init(Solver<Request,Enrollment> solver, String name)`
    `void` | BacktrackSelection.`neighbourFailed(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `void` | BacktrackSelection.`neighbourFailed(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `void` | BranchBoundSelection.`neighbourFailed(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `void` | BranchBoundSelection.`neighbourFailed(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `void` | StudentEnrollmentSwapSelection.`neighbourFailed(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `void` | StudentEnrollmentSwapSelection.`neighbourFailed(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `void` | SwapStudentSelection.`neighbourFailed(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `void` | SwapStudentSelection.`neighbourFailed(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `boolean` | BacktrackSelection.`neighbourSelected(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `boolean` | BacktrackSelection.`neighbourSelected(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `boolean` | BranchBoundSelection.`neighbourSelected(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `boolean` | BranchBoundSelection.`neighbourSelected(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `boolean` | StudentEnrollmentSwapSelection.`neighbourSelected(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `boolean` | StudentEnrollmentSwapSelection.`neighbourSelected(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `boolean` | SwapStudentSelection.`neighbourSelected(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `boolean` | SwapStudentSelection.`neighbourSelected(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `protected void` | PriorityConstructionSelection.`nextCycle(Solution<Request,Enrollment> solution)` Increment cycle
    `protected Request` | UnassignedCriticalCourseRequestSelection.`nextRequest(Solution<Request,Enrollment> solution)`
    `protected Request` | UnassignedRequestSelection.`nextRequest(Solution<Request,Enrollment> solution)`
    `Neighbour<Request,Enrollment>` | AssignInitialSelection.`selectNeighbour(Solution<Request,Enrollment> solution)`
    `Neighbour<Request,Enrollment>` | BacktrackSelection.`selectNeighbour(Solution<Request,Enrollment> solution)`
    `Neighbour<Request,Enrollment>` | BranchBoundSelection.`selectNeighbour(Solution<Request,Enrollment> solution)` Select neighbour.
    `Neighbour<Request,Enrollment>` | CriticalCoursesBranchAndBoundSelection.`selectNeighbour(Solution<Request,Enrollment> solution)`
    `Neighbour<Request,Enrollment>` | MinCreditBranchAndBoundSelection.`selectNeighbour(Solution<Request,Enrollment> solution)`
    `Neighbour<Request,Enrollment>` | PriorityConstructionSelection.`selectNeighbour(Solution<Request,Enrollment> solution)` Select neighbor.
    `Neighbour<Request,Enrollment>` | RandomUnassignmentSelection.`selectNeighbour(Solution<Request,Enrollment> solution)` With the given probabilty, a student is randomly selected to be unassigned.
    `Neighbour<Request,Enrollment>` | ResectionIncompleteStudentsSelection.`selectNeighbour(Solution<Request,Enrollment> solution)` Select neighbour.
    `Neighbour<Request,Enrollment>` | ResectionUnassignedStudentsSelection.`selectNeighbour(Solution<Request,Enrollment> solution)` Select neighbour.
    `Neighbour<Request,Enrollment>` | RndUnProblStudSelection.`selectNeighbour(Solution<Request,Enrollment> solution)` With the given probabilty, a problematic student is randomly selected to be unassigned.
    `Neighbour<Request,Enrollment>` | ShuffleStudentsSelection.`selectNeighbour(Solution<Request,Enrollment> solution)`
    `Neighbour<Request,Enrollment>` | StandardSelection.`selectNeighbour(Solution<Request,Enrollment> solution)` Employ the provided `VariableSelection` and `ValueSelection` and return the selected value as `SimpleNeighbour`.
    `Neighbour<Request,Enrollment>` | StudentEnrollmentSwapSelection.`selectNeighbour(Solution<Request,Enrollment> solution)`
    `Neighbour<Request,Enrollment>` | SwapStudentSelection.`selectNeighbour(Solution<Request,Enrollment> solution)` For each student that does not have a complete schedule, try to find a request and a student that can be moved out of an enrollment so that the selected student can be assigned to the selected request.
    `protected Neighbour<Request,Enrollment>` | ShuffleStudentsSelection.ShuffleBacktrackNeighbourSelection.`selectNeighbour(Solution<Request,Enrollment> solution, org.cpsolver.studentsct.heuristics.selection.ShuffleStudentsSelection.Shuffle shuffle)`
    `Request` | UnassignedCriticalCourseRequestSelection.`selectVariable(Solution<Request,Enrollment> solution)`
    `Request` | UnassignedRequestSelection.`selectVariable(Solution<Request,Enrollment> solution)`
    `void` | OnlineSelection.`updateSpace(Assignment<Request,Enrollment> assignment, Student student)` Update online sectioning info after the given student is sectioned
    `double` | BranchBoundSelection.BranchBoundNeighbour.`value(Assignment<Request,Enrollment> assignment)`
    `double` | PriorityConstructionSelection.ConstructionNeighbour.`value(Assignment<Request,Enrollment> assignment)`
    `double` | RandomUnassignmentSelection.UnassignStudentNeighbour.`value(Assignment<Request,Enrollment> assignment)`
    `double` | SwapStudentSelection.SwapStudentNeighbour.`value(Assignment<Request,Enrollment> assignment)`
    `boolean` | BacktrackSelection.`valueSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable, Enrollment value)`
    `boolean` | BranchBoundSelection.`valueSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable, Enrollment value)`
    `boolean` | StudentEnrollmentSwapSelection.`valueSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable, Enrollment value)`
    `boolean` | SwapStudentSelection.`valueSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable, Enrollment value)`
    `boolean` | BacktrackSelection.`variableSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable)`
    `boolean` | BranchBoundSelection.`variableSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable)`
    `boolean` | StudentEnrollmentSwapSelection.`variableSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable)`
    `boolean` | SwapStudentSelection.`variableSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable)`

    Constructors in org.cpsolver.studentsct.heuristics.selection with parameters of type Enrollment
    Constructor and Description
    `BranchBoundNeighbour(Student student, double value, Enrollment[] assignment)` Constructor
    `SwapStudentNeighbour(double value, Enrollment enrollment, List<Enrollment> swaps)` Constructor

    Constructor parameters in org.cpsolver.studentsct.heuristics.selection with type arguments of type Enrollment
    Constructor and Description
    `CriticalCoursesSelection(Student student, Assignment<Request,Enrollment> assignment)`
    `CriticalStandardSelection(DataProperties properties, ValueSelection<Request,Enrollment> valueSelection)`
    `CriticalStandardSelection(DataProperties properties, ValueSelection<Request,Enrollment> valueSelection, Request.RequestPriority priority)`
    `CriticalStandardSelection(DataProperties properties, VariableSelection<Request,Enrollment> variableSelection, ValueSelection<Request,Enrollment> valueSelection, Request.RequestPriority priority)`
    `CriticalStandardSelection(DataProperties properties, VariableSelection<Request,Enrollment> variableSelection, ValueSelection<Request,Enrollment> valueSelection, Request.RequestPriority priority)`
    `EpsilonSelection(Student student, Assignment<Request,Enrollment> assignment, BranchBoundSelection.Selection selection)` Constructor
    `InitialSelection(Student student, Assignment<Request,Enrollment> assignment)`
    `MinCreditSelection(Student student, Assignment<Request,Enrollment> assignment)`
    `Selection(Student student, Assignment<Request,Enrollment> assignment)` Constructor
    `Selection(Student student, Assignment<Request,Enrollment> assignment)` Constructor
    `StandardSelection(DataProperties properties, VariableSelection<Request,Enrollment> variableSelection, ValueSelection<Request,Enrollment> valueSelection)` Constructor (variable and value selection are expected to be already initialized).
    `StandardSelection(DataProperties properties, VariableSelection<Request,Enrollment> variableSelection, ValueSelection<Request,Enrollment> valueSelection)` Constructor (variable and value selection are expected to be already initialized).
    `SwapStudentNeighbour(double value, Enrollment enrollment, List<Enrollment> swaps)` Constructor
    `UnassignStudentNeighbour(Student student, Assignment<Request,Enrollment> assignment, Request.RequestPriority priority)` Constructor

  - ### Uses of Enrollment in org.cpsolver.studentsct.model

    Methods in org.cpsolver.studentsct.model that return Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `Enrollment` | FreeTimeRequest.`createEnrollment()` Create enrollment of this request
    `Enrollment` | Unavailability.`createEnrollment()` Create dummy enrollment of this unavailability
    `Enrollment` | CourseRequest.`createEnrollment(Assignment<Request,Enrollment> assignment, Set<? extends SctAssignment> sections)` Create enrollment for the given list of sections.
    `Enrollment` | CourseRequest.`createEnrollment(Course course, Set<? extends SctAssignment> sections, Reservation reservation)` Create enrollment for the given list of sections.
    `Enrollment` | CourseRequest.`createEnrollment(Set<? extends SctAssignment> sections, Reservation reservation)` Create enrollment for the given list of sections.
    `Enrollment` | CourseRequest.`getFixedValue()`

    Methods in org.cpsolver.studentsct.model that return types with arguments of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `List<Enrollment>` | CourseRequest.`computeEnrollments(Assignment<Request,Enrollment> assignment)` Return all possible enrollments.
    `List<Enrollment>` | FreeTimeRequest.`computeEnrollments(Assignment<Request,Enrollment> assignment)` Create all possible enrollments of this request -- there is only one possible enrollment: `FreeTimeRequest.createEnrollment()`
    `abstract List<Enrollment>` | Request.`computeEnrollments(Assignment<Request,Enrollment> assignment)` Compute available enrollments
    `List<Enrollment>` | CourseRequest.`computeRandomEnrollments(Assignment<Request,Enrollment> assignment, int limitEachConfig)` Return a subset of all enrollments -- randomly select only up to limitEachConfig enrollments of each config.
    `List<Enrollment>` | CourseRequest.`getAvaiableEnrollments(Assignment<Request,Enrollment> assignment)` Return all enrollments that are available
    `List<Enrollment>` | CourseRequest.`getAvaiableEnrollmentsSkipSameTime(Assignment<Request,Enrollment> assignment)` Return all enrollments that are available, pick only the first section of the sections with the same time (of each subpart, `Section` comparator is used)
    `Set<Enrollment>` | Config.ConfigContext.`getEnrollments()` Set of assigned enrollments
    `Set<Enrollment>` | Course.CourseContext.`getEnrollments()` Set of assigned enrollments
    `Set<Enrollment>` | FreeTimeRequest.FreeTimeRequestContext.`getEnrollments()` Return the list of assigned enrollments that contains this assignment.
    `Set<Enrollment>` | RequestGroup.RequestGroupContext.`getEnrollments()` Set of assigned enrollments
    `Set<Enrollment>` | Section.SectionContext.`getEnrollments()` Set of assigned enrollments
    `Set<Enrollment>` | Config.`getEnrollments(Assignment<Request,Enrollment> assignment)` Set of assigned enrollments
    `Set<Enrollment>` | Course.`getEnrollments(Assignment<Request,Enrollment> assignment)` Set of assigned enrollments
    `Set<Enrollment>` | FreeTimeRequest.`getEnrollments(Assignment<Request,Enrollment> assignment)` Return the list of assigned enrollments that contains this assignment.
    `Set<Enrollment>` | SctAssignment.`getEnrollments(Assignment<Request,Enrollment> assignment)` Return the list of assigned enrollments that contains this assignment.
    `Set<Enrollment>` | Section.`getEnrollments(Assignment<Request,Enrollment> assignment)` Set of assigned enrollments
    `Set<Enrollment>` | Unavailability.`getEnrollments(Assignment<Request,Enrollment> assignment)` Not used, always null
    `List<Enrollment>` | CourseRequest.`getEnrollmentsSkipSameTime(Assignment<Request,Enrollment> assignment)` Return all possible enrollments, but pick only the first section of the sections with the same time (of each subpart, `Section` comparator is used).
    `Model<Request,Enrollment>` | Config.`getModel()`
    `Model<Request,Enrollment>` | Course.`getModel()`
    `Model<Request,Enrollment>` | Offering.`getModel()`
    `Model<Request,Enrollment>` | RequestGroup.`getModel()`
    `Model<Request,Enrollment>` | Section.`getModel()`
    `List<Enrollment>` | CourseRequest.`getSelectedEnrollments(Assignment<Request,Enrollment> assignment, boolean availableOnly)` Return all enrollments of the first course that are selected ( `CourseRequest.isSelected(Section)` is true)
    `List<Enrollment>` | Request.`values(Assignment<Request,Enrollment> assignment)` Domain of this variable -- list of available enrollments.

    Methods in org.cpsolver.studentsct.model with parameters of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `void` | Config.ConfigContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment with this config is assigned to a request
    `void` | Course.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment with this course is assigned to a request
    `void` | Course.CourseContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `void` | FreeTimeRequest.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Enrollment with this assignment was assigned to a `Request`.
    `void` | FreeTimeRequest.FreeTimeRequestContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Enrollment with this assignment was assigned to a `Request`.
    `void` | RequestGroup.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment is assigned to a request of this request group
    `void` | RequestGroup.RequestGroupContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment is assigned to a request of this request group
    `void` | SctAssignment.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Enrollment with this assignment was assigned to a `Request`.
    `void` | Section.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment with this section is assigned to a request
    `void` | Section.SectionContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment with this section is assigned to a request
    `void` | Unavailability.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `int` | Student.`countFreeTimeOverlaps(Enrollment enrollment)` Count number of free time slots overlapping with the given enrollment
    `double` | RequestGroup.`getEnrollmentSpread(Assignment<Request,Enrollment> assignment, Enrollment enrollment, double bestRatio, double fillRatio)` Return how much is the given enrollment similar to other enrollments of this group.
    `double` | RequestGroup.RequestGroupContext.`getEnrollmentSpread(Assignment<Request,Enrollment> assignment, Enrollment enrollment, double bestRatio, double fillRatio)` Return how much is the given enrollment (which is not part of the request group) creating an issue for this request group
    `boolean` | Student.`isAvailable(Enrollment enrollment)` Check if student is available during the given enrollment
    `boolean` | CourseRequest.`isNotAllowed(Enrollment e)` Return true when there are restrictions for a course of this course request and the given enrollment does not meet any of them
    `boolean` | Enrollment.`isOverlapping(Enrollment enrl)` True when this enrollment is overlapping with the given enrollment
    `boolean` | Choice.`sameConfiguration(Enrollment enrollment)` True if the configuration is the very same
    `boolean` | Choice.`sameSection(Enrollment enrollment)` True if the configuration is the very same
    `void` | CourseRequest.`setFixedValue(Enrollment constant)`
    `void` | Config.ConfigContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment with this config is unassigned from a request
    `void` | Course.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment with this course is unassigned from a request
    `void` | Course.CourseContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `void` | FreeTimeRequest.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Enrollment with this assignment was unassigned from a `Request`.
    `void` | FreeTimeRequest.FreeTimeRequestContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Enrollment with this assignment was unassigned from a `Request`.
    `void` | RequestGroup.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment is unassigned from a request of this request group
    `void` | RequestGroup.RequestGroupContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment is unassigned from a request of this request group
    `void` | SctAssignment.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Enrollment with this assignment was unassigned from a `Request`.
    `void` | Section.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment with this section is unassigned from a request
    `void` | Section.SectionContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment with this section is unassigned from a request
    `void` | Unavailability.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `void` | CourseRequest.`variableAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment enrollment)`
    `void` | Request.`variableAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment enrollment)` Assign given enrollment to this request.
    `void` | CourseRequest.`variableUnassigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment enrollment)`
    `void` | Request.`variableUnassigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment enrollment)` Unassign currently assigned enrollment from this request.

    Method parameters in org.cpsolver.studentsct.model with type arguments of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `void` | Config.ConfigContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment with this config is assigned to a request
    `void` | Course.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment with this course is assigned to a request
    `void` | Course.CourseContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `void` | FreeTimeRequest.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Enrollment with this assignment was assigned to a `Request`.
    `void` | FreeTimeRequest.FreeTimeRequestContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Enrollment with this assignment was assigned to a `Request`.
    `void` | RequestGroup.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment is assigned to a request of this request group
    `void` | RequestGroup.RequestGroupContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment is assigned to a request of this request group
    `void` | SctAssignment.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Enrollment with this assignment was assigned to a `Request`.
    `void` | Section.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment with this section is assigned to a request
    `void` | Section.SectionContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment with this section is assigned to a request
    `void` | Unavailability.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `boolean` | Student.`canAssign(Assignment<Request,Enrollment> assignment, Request request)` True if the given request can be assigned to the student.
    `int` | Section.`compareTo(Assignment<Request,Enrollment> assignment, Section s)` Compare two sections, prefer sections with lower penalty and more open space
    `List<Enrollment>` | CourseRequest.`computeEnrollments(Assignment<Request,Enrollment> assignment)` Return all possible enrollments.
    `List<Enrollment>` | FreeTimeRequest.`computeEnrollments(Assignment<Request,Enrollment> assignment)` Create all possible enrollments of this request -- there is only one possible enrollment: `FreeTimeRequest.createEnrollment()`
    `abstract List<Enrollment>` | Request.`computeEnrollments(Assignment<Request,Enrollment> assignment)` Compute available enrollments
    `List<Enrollment>` | CourseRequest.`computeRandomEnrollments(Assignment<Request,Enrollment> assignment, int limitEachConfig)` Return a subset of all enrollments -- randomly select only up to limitEachConfig enrollments of each config.
    `Config.ConfigContext` | Config.`createAssignmentContext(Assignment<Request,Enrollment> assignment)`
    `Course.CourseContext` | Course.`createAssignmentContext(Assignment<Request,Enrollment> assignment)`
    `Request.RequestContext` | FreeTimeRequest.`createAssignmentContext(Assignment<Request,Enrollment> assignment)`
    `Request.RequestContext` | Request.`createAssignmentContext(Assignment<Request,Enrollment> assignment)`
    `RequestGroup.RequestGroupContext` | RequestGroup.`createAssignmentContext(Assignment<Request,Enrollment> assignment)`
    `Section.SectionContext` | Section.`createAssignmentContext(Assignment<Request,Enrollment> assignment)`
    `Enrollment` | CourseRequest.`createEnrollment(Assignment<Request,Enrollment> assignment, Set<? extends SctAssignment> sections)` Create enrollment for the given list of sections.
    `Set<DistanceConflict.Conflict>` | Enrollment.`distanceConflicts(Assignment<Request,Enrollment> assignment)` Distance conflicts, in which this enrollment is involved.
    `float` | Student.`getAssignedCredit(Assignment<Request,Enrollment> assignment)` Return the number of assigned credits of the student
    `List<Enrollment>` | CourseRequest.`getAvaiableEnrollments(Assignment<Request,Enrollment> assignment)` Return all enrollments that are available
    `List<Enrollment>` | CourseRequest.`getAvaiableEnrollmentsSkipSameTime(Assignment<Request,Enrollment> assignment)` Return all enrollments that are available, pick only the first section of the sections with the same time (of each subpart, `Section` comparator is used)
    `double` | RequestGroup.`getAverageSpread(Assignment<Request,Enrollment> assignment)` Return average section spread of this group.
    `Set<Enrollment>` | Config.`getEnrollments(Assignment<Request,Enrollment> assignment)` Set of assigned enrollments
    `Set<Enrollment>` | Course.`getEnrollments(Assignment<Request,Enrollment> assignment)` Set of assigned enrollments
    `Set<Enrollment>` | FreeTimeRequest.`getEnrollments(Assignment<Request,Enrollment> assignment)` Return the list of assigned enrollments that contains this assignment.
    `Set<Enrollment>` | SctAssignment.`getEnrollments(Assignment<Request,Enrollment> assignment)` Return the list of assigned enrollments that contains this assignment.
    `Set<Enrollment>` | Section.`getEnrollments(Assignment<Request,Enrollment> assignment)` Set of assigned enrollments
    `Set<Enrollment>` | Unavailability.`getEnrollments(Assignment<Request,Enrollment> assignment)` Not used, always null
    `double` | RequestGroup.`getEnrollmentSpread(Assignment<Request,Enrollment> assignment, Enrollment enrollment, double bestRatio, double fillRatio)` Return how much is the given enrollment similar to other enrollments of this group.
    `double` | RequestGroup.RequestGroupContext.`getEnrollmentSpread(Assignment<Request,Enrollment> assignment, Enrollment enrollment, double bestRatio, double fillRatio)` Return how much is the given enrollment (which is not part of the request group) creating an issue for this request group
    `List<Enrollment>` | CourseRequest.`getEnrollmentsSkipSameTime(Assignment<Request,Enrollment> assignment)` Return all possible enrollments, but pick only the first section of the sections with the same time (of each subpart, `Section` comparator is used).
    `double` | Config.`getEnrollmentTotalWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight including over the limit enrollments.
    `double` | Config.ConfigContext.`getEnrollmentTotalWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight including over the limit enrollments.
    `double` | Section.`getEnrollmentTotalWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight including over the limit enrollments.
    `double` | Section.SectionContext.`getEnrollmentTotalWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight including over the limit enrollments.
    `double` | Config.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight -- weight of all requests which have an enrollment that contains this config, excluding the given one.
    `double` | Config.ConfigContext.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight -- weight of all requests which have an enrollment that contains this config, excluding the given one.
    `double` | Course.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight -- weight of all requests that are enrolled into this course, excluding the given one.
    `double` | Course.CourseContext.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight -- weight of all requests that are enrolled into this course, excluding the given one.
    `double` | RequestGroup.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight -- weight of all requests which have an enrollment that is of this request group, excluding the given one.
    `double` | RequestGroup.RequestGroupContext.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight -- weight of all requests which have an enrollment that is of this request group, excluding the given one.
    `double` | Section.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight -- weight of all requests which have an enrollment that contains this section, excluding the given one.
    `double` | Section.SectionContext.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight -- weight of all requests which have an enrollment that contains this section, excluding the given one.
    `double` | Config.`getMaxEnrollmentWeight(Assignment<Request,Enrollment> assignment)` Maximal weight of a single enrollment in the config
    `double` | Course.`getMaxEnrollmentWeight(Assignment<Request,Enrollment> assignment)` Maximal weight of a single enrollment in the course
    `double` | Section.`getMaxEnrollmentWeight(Assignment<Request,Enrollment> assignment)` Maximal weight of a single enrollment in the section
    `double` | Config.`getMinEnrollmentWeight(Assignment<Request,Enrollment> assignment)` Minimal weight of a single enrollment in the config
    `double` | Course.`getMinEnrollmentWeight(Assignment<Request,Enrollment> assignment)` Minimal weight of a single enrollment in the course
    `double` | Section.`getMinEnrollmentWeight(Assignment<Request,Enrollment> assignment)` Minimal weight of a single enrollment in the section
    `double` | Section.`getOnlineSectioningPenalty(Assignment<Request,Enrollment> assignment)` Online sectioning penalty.
    `double` | RequestGroup.`getSectionSpread(Assignment<Request,Enrollment> assignment, Section section)` Return section spread of this group.
    `double` | RequestGroup.`getSectionWeight(Assignment<Request,Enrollment> assignment, Section section, Request excludeRequest)` Section weight -- weight of all requests which have an enrollment that is of this request group and that includes the given section, excluding the given one.
    `double` | RequestGroup.RequestGroupContext.`getSectionWeight(Assignment<Request,Enrollment> assignment, Section section, Request excludeRequest)` Section weight -- weight of all requests which have an enrollment that is of this request group and that includes the given section, excluding the given one.
    `List<Enrollment>` | CourseRequest.`getSelectedEnrollments(Assignment<Request,Enrollment> assignment, boolean availableOnly)` Return all enrollments of the first course that are selected ( `CourseRequest.isSelected(Section)` is true)
    `TreeSet<Reservation>` | CourseRequest.`getSortedReservations(Assignment<Request,Enrollment> assignment, Course course)` Get reservations for this course requests ordered using `Reservation.compareTo(Assignment, Reservation)`
    `double` | Config.`getUnreservedSpace(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Available space in the configuration that is not reserved by any config reservation
    `double` | Offering.`getUnreservedSpace(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Available space in the offering that is not reserved by any reservation
    `double` | Section.`getUnreservedSpace(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Available space in the section that is not reserved by any section reservation
    `void` | Enrollment.`guessReservation(Assignment<Request,Enrollment> assignment, boolean onlyAvailable)` Guess the reservation based on the enrollment
    `boolean` | Student.`hasUnassignedCritical(Assignment<Request,Enrollment> assignment)` Deprecated.
    `boolean` | Student.`hasUnassignedCritical(Assignment<Request,Enrollment> assignment, Request.RequestPriority rp)` Has student any unassigned critical course requests?
    `Config.ConfigContext` | Config.`inheritAssignmentContext(Assignment<Request,Enrollment> assignment, Config.ConfigContext parentContext)`
    `Course.CourseContext` | Course.`inheritAssignmentContext(Assignment<Request,Enrollment> assignment, Course.CourseContext parentContext)`
    `RequestGroup.RequestGroupContext` | RequestGroup.`inheritAssignmentContext(Assignment<Request,Enrollment> assignment, RequestGroup.RequestGroupContext parentContext)`
    `Section.SectionContext` | Section.`inheritAssignmentContext(Assignment<Request,Enrollment> assignment, Section.SectionContext parentContext)`
    `boolean` | CourseRequest.`isAssigned(Assignment<Request,Enrollment> assignment)` Return true if request is assigned.
    `boolean` | Request.`isAssigned(Assignment<Request,Enrollment> assignment)` Return true if request is assigned.
    `boolean` | Student.`isComplete(Assignment<Request,Enrollment> assignment)` True if the student has assigned the desired number of requests (i.e., number of non-alternative course requests).
    `int` | Student.`nrAssignedRequests(Assignment<Request,Enrollment> assignment)` Number of assigned COURSE requests
    `void` | Offering.`setModel(Model<Request,Enrollment> model)`
    `Set<StudentQuality.Conflict>` | Enrollment.`studentQualityConflicts(Assignment<Request,Enrollment> assignment)`
    `Set<TimeOverlapsCounter.Conflict>` | Enrollment.`timeOverlappingConflicts(Assignment<Request,Enrollment> assignment)` Time overlapping conflicts, in which this enrollment is involved.
    `double` | Enrollment.`toDouble(Assignment<Request,Enrollment> assignment)` Enrollment value
    `double` | Enrollment.`toDouble(Assignment<Request,Enrollment> assignment, boolean precise)` Enrollment value
    `String` | Enrollment.`toString(Assignment<Request,Enrollment> a)`
    `void` | Config.ConfigContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment with this config is unassigned from a request
    `void` | Course.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment with this course is unassigned from a request
    `void` | Course.CourseContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `void` | FreeTimeRequest.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Enrollment with this assignment was unassigned from a `Request`.
    `void` | FreeTimeRequest.FreeTimeRequestContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Enrollment with this assignment was unassigned from a `Request`.
    `void` | RequestGroup.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment is unassigned from a request of this request group
    `void` | RequestGroup.RequestGroupContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment is unassigned from a request of this request group
    `void` | SctAssignment.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Enrollment with this assignment was unassigned from a `Request`.
    `void` | Section.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment with this section is unassigned from a request
    `void` | Section.SectionContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment with this section is unassigned from a request
    `void` | Unavailability.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `List<Enrollment>` | Request.`values(Assignment<Request,Enrollment> assignment)` Domain of this variable -- list of available enrollments.
    `void` | CourseRequest.`variableAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment enrollment)`
    `void` | Request.`variableAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment enrollment)` Assign given enrollment to this request.
    `void` | CourseRequest.`variableUnassigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment enrollment)`
    `void` | Request.`variableUnassigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment enrollment)` Unassign currently assigned enrollment from this request.

    Constructor parameters in org.cpsolver.studentsct.model with type arguments of type Enrollment
    Constructor and Description
    `ConfigContext(Assignment<Request,Enrollment> assignment)`
    `CourseContext(Assignment<Request,Enrollment> assignment)`
    `Enrollment(Request request, int priority, Config config, Set<? extends SctAssignment> assignments, Assignment<Request,Enrollment> assignment)` Constructor
    `FreeTimeRequestContext(Assignment<Request,Enrollment> assignment)`
    `RequestContext(Assignment<Request,Enrollment> assignment)`
    `RequestGroupContext(Assignment<Request,Enrollment> assignment)`
    `SectionContext(Assignment<Request,Enrollment> assignment)`

  - ### Uses of Enrollment in org.cpsolver.studentsct.online

    Methods in org.cpsolver.studentsct.online that return types with arguments of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `Assignment<Request,Enrollment>` | Test.`assignment()`

    Methods in org.cpsolver.studentsct.online with parameters of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `void` | MaxOverExpectedConstraint.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment value, Set<Enrollment> conflicts)`
    `double` | OnlineSectioningModel.`getOverExpected(Assignment<Request,Enrollment> assignment, Enrollment[] enrollment, int index, Section section, Request request)` Expectation penalty, to be minimized
    `double` | OnlineSectioningModel.`getOverExpected(Assignment<Request,Enrollment> assignment, Enrollment selection, Enrollment value, Set<Enrollment> conflicts)` Expectation penalty, to be minimized.
    `boolean` | MaxOverExpectedConstraint.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment value)`
    `static void` | Test.`updateSpace(Assignment<Request,Enrollment> assignment, Enrollment enrollment, boolean increment)`

    Method parameters in org.cpsolver.studentsct.online with type arguments of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `void` | MaxOverExpectedConstraint.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment value, Set<Enrollment> conflicts)`
    `void` | MaxOverExpectedConstraint.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment value, Set<Enrollment> conflicts)`
    `Map<String,String>` | Test.TestModel.`getExtendedInfo(Assignment<Request,Enrollment> assignment)`
    `double` | OnlineSectioningModel.`getOverExpected(Assignment<Request,Enrollment> assignment, Enrollment[] enrollment, int index, Section section, Request request)` Expectation penalty, to be minimized
    `double` | OnlineSectioningModel.`getOverExpected(Assignment<Request,Enrollment> assignment, Enrollment selection, Enrollment value, Set<Enrollment> conflicts)` Expectation penalty, to be minimized.
    `double` | OnlineSectioningModel.`getOverExpected(Assignment<Request,Enrollment> assignment, Enrollment selection, Enrollment value, Set<Enrollment> conflicts)` Expectation penalty, to be minimized.
    `double` | OnlineSectioningModel.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)` Expectation penalty, to be minimized (computed using `OverExpectedCriterion.getOverExpected(Assignment, Section, Request)`)
    `double` | Test.`getPercDisbalancedSections(Assignment<Request,Enrollment> assignment, double perc)`
    `boolean` | MaxOverExpectedConstraint.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment value)`
    `static void` | Test.`updateSpace(Assignment<Request,Enrollment> assignment, Enrollment enrollment, boolean increment)`

  - ### Uses of Enrollment in org.cpsolver.studentsct.online.expectations

    Methods in org.cpsolver.studentsct.online.expectations with parameters of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `double` | MinimizeConflicts.`getOverExpected(Assignment<Request,Enrollment> assignment, Enrollment[] enrollment, int index, Section section, Request request)`
    `double` | OverExpectedCriterion.HasContext.`getOverExpected(Assignment<Request,Enrollment> assignment, Enrollment[] enrollment, int index, Section section, Request request)` Expectation penalty, to be minimized
    `double` | MinimizeConflicts.`getOverExpected(Assignment<Request,Enrollment> assignment, Enrollment selection, Enrollment value, Set<Enrollment> conflicts)`
    `double` | OverExpectedCriterion.HasContext.`getOverExpected(Assignment<Request,Enrollment> assignment, Enrollment selection, Enrollment value, Set<Enrollment> conflicts)` Expectation penalty, to be minimized.

    Method parameters in org.cpsolver.studentsct.online.expectations with type arguments of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `protected double` | PercentageOverExpected.`getEnrollment(Assignment<Request,Enrollment> assignment, Config config, Request request)` Config enrollment (using `OnlineConfig.getEnrollment()` if applicable}, `Config.getEnrollmentWeight(Assignment, Request)` otherwise)
    `protected double` | PercentageOverExpected.`getEnrollment(Assignment<Request,Enrollment> assignment, Section section, Request request)` Section enrollment (using `OnlineSection.getEnrollment()` if applicable}, `Section.getEnrollmentWeight(Assignment, Request)` otherwise)
    `double` | MinimizeConflicts.`getOverExpected(Assignment<Request,Enrollment> assignment, Enrollment[] enrollment, int index, Section section, Request request)`
    `double` | OverExpectedCriterion.HasContext.`getOverExpected(Assignment<Request,Enrollment> assignment, Enrollment[] enrollment, int index, Section section, Request request)` Expectation penalty, to be minimized
    `double` | MinimizeConflicts.`getOverExpected(Assignment<Request,Enrollment> assignment, Enrollment selection, Enrollment value, Set<Enrollment> conflicts)`
    `double` | MinimizeConflicts.`getOverExpected(Assignment<Request,Enrollment> assignment, Enrollment selection, Enrollment value, Set<Enrollment> conflicts)`
    `double` | OverExpectedCriterion.HasContext.`getOverExpected(Assignment<Request,Enrollment> assignment, Enrollment selection, Enrollment value, Set<Enrollment> conflicts)` Expectation penalty, to be minimized.
    `double` | OverExpectedCriterion.HasContext.`getOverExpected(Assignment<Request,Enrollment> assignment, Enrollment selection, Enrollment value, Set<Enrollment> conflicts)` Expectation penalty, to be minimized.
    `double` | AvoidUnbalancedWhenNoExpectations.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)`
    `double` | FractionallyOverExpected.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)`
    `double` | FractionallyUnbalancedWhenNoExpectations.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)`
    `double` | MinimizeConflicts.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)`
    `double` | NeverOverExpected.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)`
    `double` | OverExpectedCriterion.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)` Expectation penalty, to be minimized
    `double` | PenaltyNotNegative.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)`
    `double` | PercentageOverExpected.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)`

  - ### Uses of Enrollment in org.cpsolver.studentsct.online.selection

    Fields in org.cpsolver.studentsct.online.selection declared as Enrollment
    Modifier and Type | Field and Description
    --- | ---
    `protected Enrollment[]` | MultiCriteriaBranchAndBoundSelection.`iBestAssignment` Best assignment
    `protected Enrollment[]` | MultiCriteriaBranchAndBoundSelection.`iCurrentAssignment` Current assignment

    Fields in org.cpsolver.studentsct.online.selection with type parameters of type Enrollment
    Modifier and Type | Field and Description
    --- | ---
    `protected Assignment<Request,Enrollment>` | MultiCriteriaBranchAndBoundSelection.`iAssignment`
    `protected HashMap<CourseRequest,List<Enrollment>>` | MultiCriteriaBranchAndBoundSelection.`iValues` Value cache

    Methods in org.cpsolver.studentsct.online.selection that return Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `Enrollment` | SuggestionSelection.Selection.`firstConflict(int idx, Enrollment enrollment)`
    `Enrollment[]` | SuggestionsBranchAndBound.Suggestion.`getEnrollments()` Current assignment for the student

    Methods in org.cpsolver.studentsct.online.selection that return types with arguments of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `protected List<Enrollment>` | MultiCriteriaBranchAndBoundSelection.`values(CourseRequest request)` Returns list of available enrollments for a course request
    `protected List<Enrollment>` | SuggestionSelection.Selection.`values(CourseRequest request)`
    `protected List<Enrollment>` | SuggestionsBranchAndBound.`values(Request request)` Domain of a request

    Methods in org.cpsolver.studentsct.online.selection with parameters of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | BestPenaltyCriterion.`canImprove(Assignment<Request,Enrollment> assignment, int maxIdx, Enrollment[] current, Enrollment[] best)`
    `boolean` | BestPenaltyCriterion.`canImprove(Assignment<Request,Enrollment> assignment, int maxIdx, Enrollment[] current, Enrollment[] best)`
    `boolean` | EqualWeightCriterion.`canImprove(Assignment<Request,Enrollment> assignment, int maxIdx, Enrollment[] current, Enrollment[] best)`
    `boolean` | EqualWeightCriterion.`canImprove(Assignment<Request,Enrollment> assignment, int maxIdx, Enrollment[] current, Enrollment[] best)`
    `boolean` | MultiCriteriaBranchAndBoundSelection.SelectionCriterion.`canImprove(Assignment<Request,Enrollment> assignment, int idx, Enrollment[] current, Enrollment[] best)` Bound
    `boolean` | MultiCriteriaBranchAndBoundSelection.SelectionCriterion.`canImprove(Assignment<Request,Enrollment> assignment, int idx, Enrollment[] current, Enrollment[] best)` Bound
    `boolean` | OnlineSectioningCriterion.`canImprove(Assignment<Request,Enrollment> assignment, int maxIdx, Enrollment[] current, Enrollment[] best)`
    `boolean` | OnlineSectioningCriterion.`canImprove(Assignment<Request,Enrollment> assignment, int maxIdx, Enrollment[] current, Enrollment[] best)`
    `protected boolean` | SuggestionsBranchAndBound.`checkBound(ArrayList<Request> requests2resolve, int idx, int depth, Enrollment value, Set<Enrollment> conflicts)` Check bound
    `int` | BestPenaltyCriterion.`compare(Assignment<Request,Enrollment> assignment, Enrollment[] current, Enrollment[] best)`
    `int` | BestPenaltyCriterion.`compare(Assignment<Request,Enrollment> assignment, Enrollment[] current, Enrollment[] best)`
    `int` | EqualWeightCriterion.`compare(Assignment<Request,Enrollment> assignment, Enrollment[] current, Enrollment[] best)`
    `int` | EqualWeightCriterion.`compare(Assignment<Request,Enrollment> assignment, Enrollment[] current, Enrollment[] best)`
    `int` | MultiCriteriaBranchAndBoundSelection.SelectionCriterion.`compare(Assignment<Request,Enrollment> assignment, Enrollment[] current, Enrollment[] best)` Compare two solutions
    `int` | MultiCriteriaBranchAndBoundSelection.SelectionCriterion.`compare(Assignment<Request,Enrollment> assignment, Enrollment[] current, Enrollment[] best)` Compare two solutions
    `int` | OnlineSectioningCriterion.`compare(Assignment<Request,Enrollment> assignment, Enrollment[] current, Enrollment[] best)`
    `int` | OnlineSectioningCriterion.`compare(Assignment<Request,Enrollment> assignment, Enrollment[] current, Enrollment[] best)`
    `int` | BestPenaltyCriterion.`compare(Assignment<Request,Enrollment> assignment, Enrollment e1, Enrollment e2)`
    `int` | MultiCriteriaBranchAndBoundSelection.SelectionComparator.`compare(Assignment<Request,Enrollment> assignment, Enrollment e1, Enrollment e2)` Compare two enrollments
    `int` | OnlineSectioningCriterion.`compare(Assignment<Request,Enrollment> assignment, Enrollment e1, Enrollment e2)`
    `Enrollment` | SuggestionSelection.Selection.`firstConflict(int idx, Enrollment enrollment)`
    `double` | StudentSchedulingAssistantWeights.`getBaseWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `Set<DistanceConflict.Conflict>` | OnlineSectioningCriterion.`getDistanceConflicts(Enrollment[] assignment, int idx)` Distance conflicts of idx-th assignment of the current schedule
    `Set<StudentQuality.Conflict>` | OnlineSectioningCriterion.`getStudentQualityConflicts(Enrollment[] assignment, int idx)`
    `double` | StudentSchedulingAssistantWeights.`getStudentQualityConflictWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, StudentQuality.Conflict conflict)`
    `double` | StudentSchedulingAssistantWeights.`getTimeOverlapConflictWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, TimeOverlapsCounter.Conflict timeOverlap)` Deprecated.
    `Set<TimeOverlapsCounter.Conflict>` | OnlineSectioningCriterion.`getTimeOverlappingConflicts(Enrollment[] assignment, int idx)` Time overlapping conflicts of idx-th assignment of the current schedule
    `double` | BestPenaltyCriterion.`getTotalWeight(Assignment<Request,Enrollment> assignment, Enrollment[] enrollments)`
    `double` | MultiCriteriaBranchAndBoundSelection.SelectionCriterion.`getTotalWeight(Assignment<Request,Enrollment> assignment, Enrollment[] enrollments)` For backward compatibility, return a weighted sum
    `double` | OnlineSectioningCriterion.`getTotalWeight(Assignment<Request,Enrollment> assignment, Enrollment[] enrollemnts)`
    `double` | ResectioningWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `double` | StudentSchedulingAssistantWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `protected double` | OnlineSectioningCriterion.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<DistanceConflict.Conflict> distanceConflicts, Set<TimeOverlapsCounter.Conflict> timeOverlappingConflicts)` Deprecated.
    `double` | StudentSchedulingAssistantWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<DistanceConflict.Conflict> distanceConflicts, Set<TimeOverlapsCounter.Conflict> timeOverlappingConflicts)`
    `protected double` | OnlineSectioningCriterion.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<StudentQuality.Conflict> conflicts)`
    `double` | StudentSchedulingAssistantWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<StudentQuality.Conflict> qualityConflicts)`
    `protected double` | SuggestionSelection.Selection.`getWeight(Enrollment enrollment, Set<DistanceConflict.Conflict> distanceConflicts, Set<TimeOverlapsCounter.Conflict> timeOverlappingConflicts)` Deprecated.
    `boolean` | MultiCriteriaBranchAndBoundSelection.`inConflict(int idx, Enrollment enrollment)` True if the enrollment is conflicting
    `boolean` | SuggestionSelection.Selection.`inConflict(int idx, Enrollment enrollment)`
    `boolean` | SuggestionsBranchAndBound.`isAllowed(Enrollment enrollment)` Check required sections
    `boolean` | MultiCriteriaBranchAndBoundSelection.`isAllowed(int idx, Enrollment enrollment)`
    `boolean` | SuggestionSelection.Selection.`isAllowed(int idx, Enrollment enrollment)` Check if the given enrollment is allowed
    `static boolean` | ResectioningWeights.`isSame(Enrollment e1, Enrollment e2)`

    Method parameters in org.cpsolver.studentsct.online.selection with type arguments of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | BestPenaltyCriterion.`canImprove(Assignment<Request,Enrollment> assignment, int maxIdx, Enrollment[] current, Enrollment[] best)`
    `boolean` | EqualWeightCriterion.`canImprove(Assignment<Request,Enrollment> assignment, int maxIdx, Enrollment[] current, Enrollment[] best)`
    `boolean` | MultiCriteriaBranchAndBoundSelection.SelectionCriterion.`canImprove(Assignment<Request,Enrollment> assignment, int idx, Enrollment[] current, Enrollment[] best)` Bound
    `boolean` | OnlineSectioningCriterion.`canImprove(Assignment<Request,Enrollment> assignment, int maxIdx, Enrollment[] current, Enrollment[] best)`
    `protected boolean` | SuggestionsBranchAndBound.`checkBound(ArrayList<Request> requests2resolve, int idx, int depth, Enrollment value, Set<Enrollment> conflicts)` Check bound
    `int` | BestPenaltyCriterion.`compare(Assignment<Request,Enrollment> assignment, Enrollment[] current, Enrollment[] best)`
    `int` | EqualWeightCriterion.`compare(Assignment<Request,Enrollment> assignment, Enrollment[] current, Enrollment[] best)`
    `int` | MultiCriteriaBranchAndBoundSelection.SelectionCriterion.`compare(Assignment<Request,Enrollment> assignment, Enrollment[] current, Enrollment[] best)` Compare two solutions
    `int` | OnlineSectioningCriterion.`compare(Assignment<Request,Enrollment> assignment, Enrollment[] current, Enrollment[] best)`
    `int` | BestPenaltyCriterion.`compare(Assignment<Request,Enrollment> assignment, Enrollment e1, Enrollment e2)`
    `int` | MultiCriteriaBranchAndBoundSelection.SelectionComparator.`compare(Assignment<Request,Enrollment> assignment, Enrollment e1, Enrollment e2)` Compare two enrollments
    `int` | OnlineSectioningCriterion.`compare(Assignment<Request,Enrollment> assignment, Enrollment e1, Enrollment e2)`
    `protected int` | MultiCriteriaBranchAndBoundSuggestions.`compare(Assignment<Request,Enrollment> assignment, SuggestionsBranchAndBound.Suggestion s1, SuggestionsBranchAndBound.Suggestion s2)`
    `protected int` | SuggestionsBranchAndBound.`compare(Assignment<Request,Enrollment> assignment, SuggestionsBranchAndBound.Suggestion s1, SuggestionsBranchAndBound.Suggestion s2)` Compare two suggestions
    `double` | StudentSchedulingAssistantWeights.`getBaseWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `double` | StudentSchedulingAssistantWeights.`getDistanceConflictWeight(Assignment<Request,Enrollment> assignment, DistanceConflict.Conflict distanceConflict)` Deprecated.
    `double` | StudentSchedulingAssistantWeights.`getStudentQualityConflictWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, StudentQuality.Conflict conflict)`
    `double` | StudentSchedulingAssistantWeights.`getTimeOverlapConflictWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, TimeOverlapsCounter.Conflict timeOverlap)` Deprecated.
    `double` | BestPenaltyCriterion.`getTotalWeight(Assignment<Request,Enrollment> assignment, Enrollment[] enrollments)`
    `double` | MultiCriteriaBranchAndBoundSelection.SelectionCriterion.`getTotalWeight(Assignment<Request,Enrollment> assignment, Enrollment[] enrollments)` For backward compatibility, return a weighted sum
    `double` | OnlineSectioningCriterion.`getTotalWeight(Assignment<Request,Enrollment> assignment, Enrollment[] enrollemnts)`
    `double` | ResectioningWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `double` | StudentSchedulingAssistantWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `protected double` | OnlineSectioningCriterion.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<DistanceConflict.Conflict> distanceConflicts, Set<TimeOverlapsCounter.Conflict> timeOverlappingConflicts)` Deprecated.
    `double` | StudentSchedulingAssistantWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<DistanceConflict.Conflict> distanceConflicts, Set<TimeOverlapsCounter.Conflict> timeOverlappingConflicts)`
    `protected double` | OnlineSectioningCriterion.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<StudentQuality.Conflict> conflicts)`
    `double` | StudentSchedulingAssistantWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<StudentQuality.Conflict> qualityConflicts)`
    `boolean` | StudentSchedulingAssistantWeights.`isBetterThanBestSolution(Solution<Request,Enrollment> currentSolution)`
    `BranchBoundSelection.BranchBoundNeighbour` | MultiCriteriaBranchAndBoundSelection.`select(Assignment<Request,Enrollment> assignment, Student student)`
    `BranchBoundSelection.BranchBoundNeighbour` | OnlineSectioningSelection.`select(Assignment<Request,Enrollment> assignment, Student student)` Compute student schedule
    `BranchBoundSelection.BranchBoundNeighbour` | SuggestionSelection.`select(Assignment<Request,Enrollment> assignment, Student student)`
    `BranchBoundSelection.BranchBoundNeighbour` | MultiCriteriaBranchAndBoundSelection.`select(Assignment<Request,Enrollment> assignment, Student student, MultiCriteriaBranchAndBoundSelection.SelectionCriterion comparator)`

    Constructor parameters in org.cpsolver.studentsct.online.selection with type arguments of type Enrollment
    Constructor and Description
    `EqualWeightCriterion(Student student, OnlineSectioningModel model, Assignment<Request,Enrollment> assignment, Hashtable<CourseRequest,Set<Section>> preferredSections)`
    `MultiCriteriaBranchAndBoundSuggestions(DataProperties properties, Student student, Assignment<Request,Enrollment> assignment, Hashtable<CourseRequest,Set<Section>> requiredSections, Set<FreeTimeRequest> requiredFreeTimes, Hashtable<CourseRequest,Set<Section>> preferredSections, Request selectedRequest, Section selectedSection, SuggestionsBranchAndBound.SuggestionFilter filter, double maxSectionsWithPenalty, boolean priorityWeighting)` Constructor
    `OnlineSectioningCriterion(Student student, OnlineSectioningModel model, Assignment<Request,Enrollment> assignment, Hashtable<CourseRequest,Set<Section>> preferredSections)` Constructor
    `Selection(Student student, Assignment<Request,Enrollment> assignment)`
    `SuggestionsBranchAndBound(DataProperties properties, Student student, Assignment<Request,Enrollment> assignment, Hashtable<CourseRequest,Set<Section>> requiredSections, Set<FreeTimeRequest> requiredFreeTimes, Hashtable<CourseRequest,Set<Section>> preferredSections, Request selectedRequest, Section selectedSection, SuggestionsBranchAndBound.SuggestionFilter filter, double maxSectionsWithPenalty)` Constructor

  - ### Uses of Enrollment in org.cpsolver.studentsct.report

    Methods in org.cpsolver.studentsct.report that return Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `Enrollment` | AbstractStudentSectioningReport.RequestMatcher.`enrollment()`

    Methods in org.cpsolver.studentsct.report with parameters of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | AbstractStudentSectioningReport.`matches(Request r, Enrollment e)`
    `boolean` | StudentSectioningReport.Filter.`matches(Request r, Enrollment e)` Returns true if the given request with the given assignment matches the filter.

    Method parameters in org.cpsolver.studentsct.report with type arguments of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `CSVFile` | AbstractStudentSectioningReport.`create(Assignment<Request,Enrollment> assignment, DataProperties properties)`
    `CSVFile` | StudentSectioningReport.`create(Assignment<Request,Enrollment> assignment, DataProperties properties)`
    `abstract CSVFile` | AbstractStudentSectioningReport.`createTable(Assignment<Request,Enrollment> assignment, DataProperties properties)`
    `CSVFile` | AccommodationConflictsTable.`createTable(Assignment<Request,Enrollment> assignment, DataProperties properties)` Create report
    `CSVFile` | CourseConflictTable.`createTable(Assignment<Request,Enrollment> assignment, DataProperties properties)` Create report
    `CSVFile` | CriticalCoursesTable.`createTable(Assignment<Request,Enrollment> assignment, DataProperties properties)`
    `CSVFile` | DistanceConflictTable.`createTable(Assignment<Request,Enrollment> assignment, DataProperties properties)` Create report
    `CSVFile` | RequestGroupTable.`createTable(Assignment<Request,Enrollment> assignment, DataProperties properties)`
    `CSVFile` | RequestPriorityTable.`createTable(Assignment<Request,Enrollment> assignment, DataProperties properties)`
    `CSVFile` | SectionConflictTable.`createTable(Assignment<Request,Enrollment> assignment, DataProperties properties)` Create report
    `CSVFile` | SolutionStatsReport.`createTable(Assignment<Request,Enrollment> assignment, DataProperties properties)`
    `CSVFile` | TableauReport.`createTable(Assignment<Request,Enrollment> assignment, DataProperties properties)`
    `CSVFile` | TimeOverlapConflictTable.`createTable(Assignment<Request,Enrollment> assignment, DataProperties properties)` Create report
    `CSVFile` | UnbalancedSectionsTable.`createTable(Assignment<Request,Enrollment> assignment, DataProperties properties)` Create report
    `String[]` | SolutionStatsReport.Statistic.`getValues(SolutionStatsReport.StudentGroup group, StudentSectioningModel model, Assignment<Request,Enrollment> assignment, StudentSectioningReport.Filter filter)`
    `String[]` | SolutionStatsReport.Statistics.`getValues(SolutionStatsReport.StudentGroup group, StudentSectioningModel model, Assignment<Request,Enrollment> assignment, StudentSectioningReport.Filter filter)`

    Constructors in org.cpsolver.studentsct.report with parameters of type Enrollment
    Constructor and Description
    `RequestMatcher(Request request, Enrollment enrollment, Assignment<Request,Enrollment> assignment, String user)`

    Constructor parameters in org.cpsolver.studentsct.report with type arguments of type Enrollment
    Constructor and Description
    `RequestMatcher(Request request, Enrollment enrollment, Assignment<Request,Enrollment> assignment, String user)`

  - ### Uses of Enrollment in org.cpsolver.studentsct.reservation

    Methods in org.cpsolver.studentsct.reservation that return types with arguments of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `Set<Enrollment>` | Reservation.ReservationContext.`getEnrollments()` Enrollments assigned using this reservation
    `Set<Enrollment>` | Reservation.`getEnrollments(Assignment<Request,Enrollment> assignment)` Enrollments assigned using this reservation
    `Model<Request,Enrollment>` | Reservation.`getModel()`

    Methods in org.cpsolver.studentsct.reservation with parameters of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `void` | Reservation.ReservationContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Notify reservation about an unassignment
    `boolean` | Reservation.`canEnroll(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` True if the enrollment can be done using this reservation
    `boolean` | Reservation.`isIncluded(Enrollment enrollment)` Return true if the given enrollment meets the reservation.
    `boolean` | Restriction.`isIncluded(Enrollment enrollment)` Return true if the given enrollment meets the restriction.
    `void` | Reservation.ReservationContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Notify reservation about an assignment

    Method parameters in org.cpsolver.studentsct.reservation with type arguments of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `void` | Reservation.ReservationContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Notify reservation about an unassignment
    `boolean` | Reservation.`canEnroll(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` True if the enrollment can be done using this reservation
    `int` | Reservation.`compareTo(Assignment<Request,Enrollment> assignment, Reservation r)` Priority first, than restrictivity (more restrictive first), than availability (more available first), than id
    `Reservation.ReservationContext` | Reservation.`createAssignmentContext(Assignment<Request,Enrollment> assignment)`
    `Set<Enrollment>` | Reservation.`getEnrollments(Assignment<Request,Enrollment> assignment)` Enrollments assigned using this reservation
    `double` | Reservation.`getReservedAvailableSpace(Assignment<Request,Enrollment> assignment, Config config, Request excludeRequest)` Available reserved space for a particular config
    `double` | Reservation.ReservationContext.`getReservedAvailableSpace(Assignment<Request,Enrollment> assignment, Config config, Request excludeRequest)` Available reserved space for a particular config
    `double` | Reservation.`getReservedAvailableSpace(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Available reserved space
    `double` | Reservation.ReservationContext.`getReservedAvailableSpace(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Available reserved space
    `Reservation.ReservationContext` | Reservation.`inheritAssignmentContext(Assignment<Request,Enrollment> assignment, Reservation.ReservationContext parentContext)`
    `void` | Reservation.ReservationContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Notify reservation about an assignment

    Constructor parameters in org.cpsolver.studentsct.reservation with type arguments of type Enrollment
    Constructor and Description
    `ReservationContext(Assignment<Request,Enrollment> assignment)`

  - ### Uses of Enrollment in org.cpsolver.studentsct.weights

    Methods in org.cpsolver.studentsct.weights with parameters of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `protected double` | PriorityStudentWeights.`getBaseWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `protected double` | PriorityStudentWeights.`getDifference(Enrollment enrollment)` Return how much the given enrollment is different from the initial enrollment
    `double` | PriorityStudentWeights.`getSelection(Enrollment enrollment)` Return how much the given enrollment is different from the selection (if any)
    `double` | OriginalStudentWeights.`getStudentQualityConflictWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, StudentQuality.Conflict conflict)`
    `double` | PriorityStudentWeights.`getStudentQualityConflictWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, StudentQuality.Conflict conflict)`
    `double` | StudentWeights.`getStudentQualityConflictWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, StudentQuality.Conflict conflict)` Return weight of a student quality conflict
    `double` | OriginalStudentWeights.`getTimeOverlapConflictWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, TimeOverlapsCounter.Conflict timeOverlap)`
    `double` | PriorityStudentWeights.`getTimeOverlapConflictWeight(Assignment<Request,Enrollment> assignment, Enrollment e, TimeOverlapsCounter.Conflict c)`
    `double` | StudentWeights.`getTimeOverlapConflictWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, TimeOverlapsCounter.Conflict timeOverlap)` Return weight of a time overlapping conflict
    `double` | OriginalStudentWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `double` | PriorityStudentWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `double` | StudentWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Return base weight of the given enrollment
    `double` | OriginalStudentWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<DistanceConflict.Conflict> distanceConflicts, Set<TimeOverlapsCounter.Conflict> timeOverlappingConflicts)`
    `double` | PriorityStudentWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<DistanceConflict.Conflict> distanceConflicts, Set<TimeOverlapsCounter.Conflict> timeOverlappingConflicts)`
    `double` | StudentWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<DistanceConflict.Conflict> distanceConflicts, Set<TimeOverlapsCounter.Conflict> timeOverlappingConflicts)` Return weight of the given enrollment
    `double` | OriginalStudentWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<StudentQuality.Conflict> qualityConflicts)`
    `double` | PriorityStudentWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<StudentQuality.Conflict> qualityConflicts)`
    `double` | StudentWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<StudentQuality.Conflict> qualityConflicts)` Return weight of the given enrollment
    `double` | PriorityStudentWeights.`getWeightAdditive(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `double` | PriorityStudentWeights.`getWeightMultiplicative(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`

    Method parameters in org.cpsolver.studentsct.weights with type arguments of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `protected double` | PriorityStudentWeights.`getBaseWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `double` | OriginalStudentWeights.`getDistanceConflictWeight(Assignment<Request,Enrollment> assignment, DistanceConflict.Conflict c)`
    `double` | PriorityStudentWeights.`getDistanceConflictWeight(Assignment<Request,Enrollment> assignment, DistanceConflict.Conflict c)`
    `double` | StudentWeights.`getDistanceConflictWeight(Assignment<Request,Enrollment> assignment, DistanceConflict.Conflict distanceConflict)` Return weight of a distance conflict
    `double` | OriginalStudentWeights.`getStudentQualityConflictWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, StudentQuality.Conflict conflict)`
    `double` | PriorityStudentWeights.`getStudentQualityConflictWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, StudentQuality.Conflict conflict)`
    `double` | StudentWeights.`getStudentQualityConflictWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, StudentQuality.Conflict conflict)` Return weight of a student quality conflict
    `double` | OriginalStudentWeights.`getTimeOverlapConflictWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, TimeOverlapsCounter.Conflict timeOverlap)`
    `double` | PriorityStudentWeights.`getTimeOverlapConflictWeight(Assignment<Request,Enrollment> assignment, Enrollment e, TimeOverlapsCounter.Conflict c)`
    `double` | StudentWeights.`getTimeOverlapConflictWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, TimeOverlapsCounter.Conflict timeOverlap)` Return weight of a time overlapping conflict
    `double` | OriginalStudentWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `double` | PriorityStudentWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `double` | StudentWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Return base weight of the given enrollment
    `double` | OriginalStudentWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<DistanceConflict.Conflict> distanceConflicts, Set<TimeOverlapsCounter.Conflict> timeOverlappingConflicts)`
    `double` | PriorityStudentWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<DistanceConflict.Conflict> distanceConflicts, Set<TimeOverlapsCounter.Conflict> timeOverlappingConflicts)`
    `double` | StudentWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<DistanceConflict.Conflict> distanceConflicts, Set<TimeOverlapsCounter.Conflict> timeOverlappingConflicts)` Return weight of the given enrollment
    `double` | OriginalStudentWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<StudentQuality.Conflict> qualityConflicts)`
    `double` | PriorityStudentWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<StudentQuality.Conflict> qualityConflicts)`
    `double` | StudentWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<StudentQuality.Conflict> qualityConflicts)` Return weight of the given enrollment
    `double` | PriorityStudentWeights.`getWeightAdditive(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `double` | PriorityStudentWeights.`getWeightMultiplicative(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `boolean` | EqualStudentWeights.`isBetterThanBestSolution(Solution<Request,Enrollment> currentSolution)`
    `boolean` | OriginalStudentWeights.`isBetterThanBestSolution(Solution<Request,Enrollment> currentSolution)`
    `boolean` | PriorityStudentWeights.`isBetterThanBestSolution(Solution<Request,Enrollment> currentSolution)`