# Hierarchy For All Packages

Package Hierarchies:

- net.sf.cpsolver.coursett,
- net.sf.cpsolver.coursett.constraint,
- net.sf.cpsolver.coursett.criteria,
- net.sf.cpsolver.coursett.criteria.additional,
- net.sf.cpsolver.coursett.criteria.placement,
- net.sf.cpsolver.coursett.custom,
- net.sf.cpsolver.coursett.heuristics,
- net.sf.cpsolver.coursett.model,
- net.sf.cpsolver.coursett.neighbourhoods,
- net.sf.cpsolver.coursett.preference,
- net.sf.cpsolver.exam,
- net.sf.cpsolver.exam.criteria,
- net.sf.cpsolver.exam.criteria.additional,
- net.sf.cpsolver.exam.heuristics,
- net.sf.cpsolver.exam.model,
- net.sf.cpsolver.exam.neighbours,
- net.sf.cpsolver.exam.reports,
- net.sf.cpsolver.exam.split,
- net.sf.cpsolver.ifs,
- net.sf.cpsolver.ifs.algorithms,
- net.sf.cpsolver.ifs.algorithms.neighbourhoods,
- net.sf.cpsolver.ifs.constant,
- net.sf.cpsolver.ifs.criteria,
- net.sf.cpsolver.ifs.dbt,
- net.sf.cpsolver.ifs.example.csp,
- net.sf.cpsolver.ifs.example.jobshop,
- net.sf.cpsolver.ifs.example.rpp,
- net.sf.cpsolver.ifs.example.tt,
- net.sf.cpsolver.ifs.extension,
- net.sf.cpsolver.ifs.heuristics,
- net.sf.cpsolver.ifs.model,
- net.sf.cpsolver.ifs.perturbations,
- net.sf.cpsolver.ifs.solution,
- net.sf.cpsolver.ifs.solver,
- net.sf.cpsolver.ifs.termination,
- net.sf.cpsolver.ifs.util,
- net.sf.cpsolver.studentsct,
- net.sf.cpsolver.studentsct.check,
- net.sf.cpsolver.studentsct.constraint,
- net.sf.cpsolver.studentsct.extension,
- net.sf.cpsolver.studentsct.filter,
- net.sf.cpsolver.studentsct.heuristics,
- net.sf.cpsolver.studentsct.heuristics.selection,
- net.sf.cpsolver.studentsct.heuristics.studentord,
- net.sf.cpsolver.studentsct.model,
- net.sf.cpsolver.studentsct.report,
- net.sf.cpsolver.studentsct.reservation,
- net.sf.cpsolver.studentsct.weights

## Class Hierarchy

- java.lang.Object
  - net.sf.cpsolver.ifs.criteria.AbstractCriterion<V,T> (implements net.sf.cpsolver.ifs.criteria.Criterion<V,T>)
    - net.sf.cpsolver.ifs.criteria.AssignedValue<V,T>
    - net.sf.cpsolver.exam.criteria.ExamCriterion
      - net.sf.cpsolver.exam.criteria.additional.DistanceToStronglyPreferredRoom
      - net.sf.cpsolver.exam.criteria.DistributionPenalty
      - net.sf.cpsolver.exam.criteria.additional.DistributionViolation
      - net.sf.cpsolver.exam.criteria.ExamRotationPenalty
      - net.sf.cpsolver.exam.split.ExamSplitter
      - net.sf.cpsolver.exam.criteria.LargeExamsPenalty
      - net.sf.cpsolver.exam.criteria.PeriodIndexPenalty
      - net.sf.cpsolver.exam.criteria.PeriodPenalty
      - net.sf.cpsolver.exam.criteria.PeriodSizePenalty
      - net.sf.cpsolver.exam.criteria.additional.PeriodViolation
      - net.sf.cpsolver.exam.criteria.PerturbationPenalty
        - net.sf.cpsolver.exam.criteria.RoomPerturbationPenalty
      - net.sf.cpsolver.exam.criteria.RoomPenalty
      - net.sf.cpsolver.exam.criteria.RoomSizePenalty
      - net.sf.cpsolver.exam.criteria.RoomSplitDistancePenalty
      - net.sf.cpsolver.exam.criteria.RoomSplitPenalty
      - net.sf.cpsolver.exam.criteria.additional.RoomViolation
      - net.sf.cpsolver.exam.criteria.StudentBackToBackConflicts
        - net.sf.cpsolver.exam.criteria.InstructorBackToBackConflicts
      - net.sf.cpsolver.exam.criteria.StudentDirectConflicts
        - net.sf.cpsolver.exam.criteria.InstructorDirectConflicts
          - net.sf.cpsolver.exam.criteria.InstructorNotAvailableConflicts
        - net.sf.cpsolver.exam.criteria.StudentNotAvailableConflicts
      - net.sf.cpsolver.exam.criteria.StudentDistanceBackToBackConflicts
        - net.sf.cpsolver.exam.criteria.InstructorDistanceBackToBackConflicts
      - net.sf.cpsolver.exam.criteria.StudentMoreThan2ADayConflicts
        - net.sf.cpsolver.exam.criteria.InstructorMoreThan2ADayConflicts
    - net.sf.cpsolver.coursett.criteria.additional.InstructorLunchBreak
    - net.sf.cpsolver.coursett.criteria.TimetablingCriterion
      - net.sf.cpsolver.coursett.criteria.BackToBackInstructorPreferences
      - net.sf.cpsolver.coursett.criteria.BrokenTimePatterns
        - net.sf.cpsolver.coursett.criteria.UselessHalfHours
      - net.sf.cpsolver.coursett.criteria.DistributionPreferences
      - net.sf.cpsolver.coursett.criteria.FlexibleConstraintCriterion
      - net.sf.cpsolver.coursett.criteria.Perturbations
      - net.sf.cpsolver.coursett.criteria.placement.PlacementSelectionCriterion
        - net.sf.cpsolver.coursett.criteria.placement.AssignmentCount
        - net.sf.cpsolver.coursett.criteria.placement.DeltaTimePreference
        - net.sf.cpsolver.coursett.criteria.placement.HardConflicts
        - net.sf.cpsolver.coursett.criteria.placement.WeightedHardConflicts (implements net.sf.cpsolver.ifs.solution.SolutionListener<V,T>)
          - net.sf.cpsolver.coursett.criteria.placement.PotentialHardConflicts
      - net.sf.cpsolver.coursett.criteria.RoomPreferences
      - net.sf.cpsolver.coursett.criteria.additional.RoomSizePenalty
      - net.sf.cpsolver.coursett.criteria.RoomViolations
        - net.sf.cpsolver.coursett.criteria.TimeViolations
      - net.sf.cpsolver.coursett.criteria.SameSubpartBalancingPenalty
        - net.sf.cpsolver.coursett.criteria.DepartmentBalancingPenalty
      - net.sf.cpsolver.coursett.criteria.StudentConflict
        - net.sf.cpsolver.coursett.criteria.additional.IgnoredCommittedStudentConflict
        - net.sf.cpsolver.coursett.criteria.additional.IgnoredStudentConflict
        - net.sf.cpsolver.coursett.criteria.additional.ImportantStudentConflict
          - net.sf.cpsolver.coursett.criteria.additional.ImportantStudentHardConflict
        - net.sf.cpsolver.coursett.criteria.additional.InstructorStudentConflict
          - net.sf.cpsolver.coursett.criteria.additional.InstructorStudentHardConflict
        - net.sf.cpsolver.coursett.criteria.additional.QuadraticStudentConflict
          - net.sf.cpsolver.coursett.criteria.additional.QuadraticStudentHardConflict
        - net.sf.cpsolver.coursett.criteria.StudentCommittedConflict
        - net.sf.cpsolver.coursett.criteria.StudentDistanceConflict
        - net.sf.cpsolver.coursett.criteria.StudentHardConflict
        - net.sf.cpsolver.coursett.criteria.additional.StudentLuchBreak
        - net.sf.cpsolver.coursett.criteria.StudentOverlapConflict
      - net.sf.cpsolver.coursett.criteria.TimePreferences
      - net.sf.cpsolver.coursett.criteria.TooBigRooms
  - net.sf.cpsolver.studentsct.model.AcademicAreaCode
  - net.sf.cpsolver.ifs.extension.Assignment<T>
  - net.sf.cpsolver.ifs.extension.Assignment.AssignmentComparator<E> (implements java.util.Comparator<T>)
  - net.sf.cpsolver.ifs.extension.AssignmentSet<T>
  - net.sf.cpsolver.studentsct.heuristics.selection.BacktrackSelection (implements net.sf.cpsolver.ifs.heuristics.NeighbourSelection<V,T>)
  - net.sf.cpsolver.studentsct.heuristics.selection.BranchBoundSelection (implements net.sf.cpsolver.ifs.heuristics.NeighbourSelection<V,T>)
    - net.sf.cpsolver.studentsct.heuristics.selection.OnlineSelection
    - net.sf.cpsolver.studentsct.heuristics.selection.ResectionIncompleteStudentsSelection
    - net.sf.cpsolver.studentsct.heuristics.selection.ResectionUnassignedStudentsSelection
  - net.sf.cpsolver.studentsct.heuristics.selection.BranchBoundSelection.Selection
    - net.sf.cpsolver.studentsct.heuristics.selection.OnlineSelection.EpsilonSelection
  - net.sf.cpsolver.studentsct.model.Choice
  - net.sf.cpsolver.studentsct.filter.CombinedStudentFilter (implements net.sf.cpsolver.studentsct.filter.StudentFilter)
  - net.sf.cpsolver.studentsct.model.Config
  - net.sf.cpsolver.coursett.model.Configuration
  - net.sf.cpsolver.ifs.Constants
    - net.sf.cpsolver.coursett.Constants
  - net.sf.cpsolver.ifs.model.Constraint<V,T> (implements java.lang.Comparable<T>)
    - net.sf.cpsolver.ifs.model.BinaryConstraint<V,T>
      - net.sf.cpsolver.ifs.example.csp.CSPBinaryConstraint
      - net.sf.cpsolver.ifs.example.tt.Dependence
      - net.sf.cpsolver.coursett.constraint.JenrlConstraint (implements net.sf.cpsolver.ifs.model.WeakeningConstraint<V,T>)
    - net.sf.cpsolver.coursett.constraint.ClassLimitConstraint
    - net.sf.cpsolver.exam.model.ExamDistributionConstraint
    - net.sf.cpsolver.exam.model.ExamInstructor
    - net.sf.cpsolver.exam.model.ExamRoom
    - net.sf.cpsolver.exam.model.ExamStudent
    - net.sf.cpsolver.coursett.constraint.FlexibleConstraint
      - net.sf.cpsolver.coursett.constraint.BreakFlexibleConstraint
      - net.sf.cpsolver.coursett.constraint.MaxBlockFlexibleConstraint
      - net.sf.cpsolver.coursett.constraint.MaxBreaksFlexibleConstraint (implements net.sf.cpsolver.ifs.model.WeakeningConstraint<V,T>)
    - net.sf.cpsolver.ifs.model.GlobalConstraint<V,T>
      - net.sf.cpsolver.studentsct.constraint.ConfigLimit
      - net.sf.cpsolver.studentsct.constraint.CourseLimit
      - net.sf.cpsolver.studentsct.constraint.RequiredReservation
      - net.sf.cpsolver.studentsct.constraint.ReservationLimit
      - net.sf.cpsolver.studentsct.constraint.SectionLimit
    - net.sf.cpsolver.coursett.constraint.GroupConstraint
    - net.sf.cpsolver.coursett.constraint.IgnoreStudentConflictsConstraint
    - net.sf.cpsolver.coursett.constraint.InstructorConstraint
    - net.sf.cpsolver.ifs.example.jobshop.Job
    - net.sf.cpsolver.studentsct.constraint.LinkedSections.LinkedSectionsConstraint
    - net.sf.cpsolver.ifs.example.jobshop.Machine
    - net.sf.cpsolver.coursett.constraint.MinimizeNumberOfUsedGroupsOfTime (implements net.sf.cpsolver.ifs.model.WeakeningConstraint<V,T>)
    - net.sf.cpsolver.coursett.constraint.MinimizeNumberOfUsedRoomsConstraint (implements net.sf.cpsolver.ifs.model.WeakeningConstraint<V,T>)
    - net.sf.cpsolver.ifs.example.tt.Resource
    - net.sf.cpsolver.ifs.example.rpp.ResourceConstraint
    - net.sf.cpsolver.coursett.constraint.RoomConstraint
      - net.sf.cpsolver.coursett.constraint.DiscouragedRoomConstraint (implements net.sf.cpsolver.ifs.model.WeakeningConstraint<V,T>)
    - net.sf.cpsolver.coursett.constraint.SpreadConstraint (implements net.sf.cpsolver.ifs.model.WeakeningConstraint<V,T>)
      - net.sf.cpsolver.coursett.constraint.DepartmentSpreadConstraint
    - net.sf.cpsolver.studentsct.constraint.StudentConflict
  - net.sf.cpsolver.ifs.util.Counter
  - net.sf.cpsolver.studentsct.model.Course
  - net.sf.cpsolver.studentsct.report.CourseConflictTable (implements net.sf.cpsolver.studentsct.report.StudentSectioningReport)
  - net.sf.cpsolver.studentsct.check.CourseLimitCheck
  - net.sf.cpsolver.studentsct.report.CourseSection (implements java.lang.Comparable<T>)
  - net.sf.cpsolver.ifs.util.Csv2Html
  - net.sf.cpsolver.ifs.util.Csv2Tex
  - net.sf.cpsolver.ifs.util.CSVFile (implements java.io.Serializable)
  - net.sf.cpsolver.ifs.util.CSVFile.CSVField (implements java.io.Serializable)
  - net.sf.cpsolver.ifs.util.CSVFile.CSVLine (implements java.io.Serializable)
  - net.sf.cpsolver.ifs.dbt.DbtValueSelection<V,T> (implements net.sf.cpsolver.ifs.heuristics.ValueSelection<V,T>)
  - net.sf.cpsolver.ifs.dbt.DbtVariableSelection<V,T> (implements net.sf.cpsolver.ifs.heuristics.VariableSelection<V,T>)
  - net.sf.cpsolver.ifs.perturbations.DefaultPerturbationsCounter<V,T> (implements net.sf.cpsolver.ifs.perturbations.PerturbationsCounter<V,T>)
    - net.sf.cpsolver.coursett.heuristics.UniversalPerturbationsCounter
  - net.sf.cpsolver.coursett.model.DefaultStudentSectioning (implements net.sf.cpsolver.coursett.model.StudentSectioning)
    - net.sf.cpsolver.coursett.custom.DeterministicStudentSectioning
  - java.util.Dictionary<K,V>
    - java.util.Hashtable<K,V> (implements java.lang.Cloneable, java.util.Map<K,V>, java.io.Serializable)
      - java.util.Properties
        - net.sf.cpsolver.ifs.util.DataProperties
  - net.sf.cpsolver.studentsct.extension.DistanceConflict.Conflict
  - net.sf.cpsolver.studentsct.report.DistanceConflictTable (implements net.sf.cpsolver.studentsct.report.StudentSectioningReport)
  - net.sf.cpsolver.ifs.util.DistanceMetric
  - net.sf.cpsolver.coursett.DomainChart
    - net.sf.cpsolver.coursett.JenrlChart
  - net.sf.cpsolver.studentsct.heuristics.EnrollmentSelection (implements net.sf.cpsolver.ifs.heuristics.ValueSelection<V,T>)
  - net.sf.cpsolver.exam.reports.ExamAssignments
  - net.sf.cpsolver.exam.heuristics.ExamColoringConstruction (implements net.sf.cpsolver.ifs.heuristics.NeighbourSelection<V,T>)
  - net.sf.cpsolver.exam.heuristics.ExamConstruction (implements net.sf.cpsolver.ifs.heuristics.NeighbourSelection<V,T>)
  - net.sf.cpsolver.exam.reports.ExamCourseSectionAssignments
  - net.sf.cpsolver.exam.heuristics.ExamGreatDeluge (implements net.sf.cpsolver.ifs.model.LazyNeighbour.LazyNeighbourAcceptanceCriterion<V,T>, net.sf.cpsolver.ifs.heuristics.NeighbourSelection<V,T>, net.sf.cpsolver.ifs.solution.SolutionListener<V,T>)
  - net.sf.cpsolver.exam.heuristics.ExamHillClimbing (implements net.sf.cpsolver.ifs.model.LazyNeighbour.LazyNeighbourAcceptanceCriterion<V,T>, net.sf.cpsolver.ifs.heuristics.NeighbourSelection<V,T>, net.sf.cpsolver.ifs.solution.SolutionListener<V,T>)
  - net.sf.cpsolver.exam.reports.ExamInstructorConflicts
  - net.sf.cpsolver.exam.reports.ExamNbrMeetingsPerDay
  - net.sf.cpsolver.exam.heuristics.ExamNeighbourSelection (implements net.sf.cpsolver.ifs.heuristics.NeighbourSelection<V,T>, net.sf.cpsolver.ifs.termination.TerminationCondition<V,T>)
  - net.sf.cpsolver.exam.model.ExamOwner (implements java.lang.Comparable<T>)
  - net.sf.cpsolver.exam.model.ExamPeriod (implements java.lang.Comparable<T>)
  - net.sf.cpsolver.exam.model.ExamPeriodPlacement (implements java.lang.Comparable<T>)
  - net.sf.cpsolver.exam.neighbours.ExamPeriodSwapMove (implements net.sf.cpsolver.ifs.heuristics.NeighbourSelection<V,T>)
  - net.sf.cpsolver.exam.reports.ExamPeriodUsage
  - net.sf.cpsolver.exam.neighbours.ExamRandomMove (implements net.sf.cpsolver.ifs.heuristics.NeighbourSelection<V,T>)
  - net.sf.cpsolver.exam.reports.ExamRoomComparator (implements java.util.Comparator<T>)
  - net.sf.cpsolver.exam.neighbours.ExamRoomMove (implements net.sf.cpsolver.ifs.heuristics.NeighbourSelection<V,T>)
  - net.sf.cpsolver.exam.model.ExamRoomPlacement (implements java.lang.Comparable<T>)
  - net.sf.cpsolver.exam.reports.ExamRoomSchedule
  - net.sf.cpsolver.exam.model.ExamRoomSharing
    - net.sf.cpsolver.exam.model.PredefinedExamRoomSharing
    - net.sf.cpsolver.exam.model.SimpleExamRoomSharing
  - net.sf.cpsolver.exam.reports.ExamRoomSplit
  - net.sf.cpsolver.exam.heuristics.ExamSimulatedAnnealing (implements net.sf.cpsolver.ifs.model.LazyNeighbour.LazyNeighbourAcceptanceCriterion<V,T>, net.sf.cpsolver.ifs.heuristics.NeighbourSelection<V,T>, net.sf.cpsolver.ifs.solution.SolutionListener<V,T>)
  - net.sf.cpsolver.exam.split.ExamSplitMoves (implements net.sf.cpsolver.ifs.heuristics.NeighbourSelection<V,T>)
  - net.sf.cpsolver.exam.reports.ExamStudentBackToBackConflicts
  - net.sf.cpsolver.exam.reports.ExamStudentConflicts
  - net.sf.cpsolver.exam.reports.ExamStudentConflictsBySectionCourse
  - net.sf.cpsolver.exam.reports.ExamStudentConflictsPerExam
  - net.sf.cpsolver.exam.reports.ExamStudentDirectConflicts
  - net.sf.cpsolver.exam.reports.ExamStudentMoreTwoADay
  - net.sf.cpsolver.exam.heuristics.ExamTabuSearch (implements net.sf.cpsolver.ifs.heuristics.NeighbourSelection<V,T>, net.sf.cpsolver.ifs.heuristics.ValueSelection<V,T>)
  - net.sf.cpsolver.exam.neighbours.ExamTimeMove (implements net.sf.cpsolver.ifs.heuristics.NeighbourSelection<V,T>)
  - net.sf.cpsolver.exam.heuristics.ExamUnassignedVariableSelection (implements net.sf.cpsolver.ifs.heuristics.VariableSelection<V,T>)
  - net.sf.cpsolver.ifs.extension.Extension<V,T> (implements net.sf.cpsolver.ifs.model.ModelListener<V,T>)
    - net.sf.cpsolver.ifs.extension.ConflictStatistics<V,T> (implements net.sf.cpsolver.ifs.model.ConstraintListener<T>)
      - net.sf.cpsolver.studentsct.extension.StudentConflictStatistics
    - net.sf.cpsolver.studentsct.extension.DistanceConflict (implements net.sf.cpsolver.ifs.model.ModelListener<V,T>)
    - net.sf.cpsolver.ifs.extension.MacPropagation<V,T>
      - net.sf.cpsolver.ifs.dbt.DbtPropagation<V,T> (implements net.sf.cpsolver.ifs.solver.SolverListener<V,T>)
    - net.sf.cpsolver.ifs.extension.MacRevised<V,T>
    - net.sf.cpsolver.ifs.extension.SearchIntensification<V,T> (implements net.sf.cpsolver.ifs.solution.SolutionListener<V,T>)
    - net.sf.cpsolver.studentsct.extension.TimeOverlapsCounter
    - net.sf.cpsolver.ifs.extension.ViolatedInitials<V,T>
  - net.sf.cpsolver.coursett.model.FinalSectioning (implements java.lang.Runnable)
  - net.sf.cpsolver.coursett.model.FinalSectioning.Move
  - net.sf.cpsolver.coursett.model.FinalSectioning.MoveBetweenCfgs
  - net.sf.cpsolver.coursett.constraint.FlexibleConstraint.Block
  - net.sf.cpsolver.coursett.constraint.FlexibleConstraint.PlacementTimeComparator (implements java.util.Comparator<T>)
  - net.sf.cpsolver.studentsct.filter.FreshmanStudentFilter (implements net.sf.cpsolver.studentsct.filter.StudentFilter)
  - net.sf.cpsolver.ifs.solution.GeneralSolutionComparator<V,T> (implements net.sf.cpsolver.ifs.solution.SolutionComparator<V,T>)
    - net.sf.cpsolver.coursett.heuristics.TimetableComparator
  - net.sf.cpsolver.ifs.termination.GeneralTerminationCondition<V,T> (implements net.sf.cpsolver.ifs.termination.TerminationCondition<V,T>)
  - net.sf.cpsolver.ifs.heuristics.GeneralValueSelection<V,T> (implements net.sf.cpsolver.ifs.heuristics.ValueSelection<V,T>)
  - net.sf.cpsolver.ifs.heuristics.GeneralVariableSelection<V,T> (implements net.sf.cpsolver.ifs.heuristics.VariableSelection<V,T>)
  - net.sf.cpsolver.studentsct.GetChoices
  - net.sf.cpsolver.coursett.GetInfo
  - net.sf.cpsolver.studentsct.GetInfo
  - net.sf.cpsolver.coursett.GetInfo.Info
  - net.sf.cpsolver.studentsct.GetInfo.Info
  - net.sf.cpsolver.coursett.GetMppInfo
  - net.sf.cpsolver.coursett.heuristics.HeuristicSelector<E>
  - net.sf.cpsolver.coursett.heuristics.HeuristicSelector.Element
  - net.sf.cpsolver.coursett.IdConvertor
  - net.sf.cpsolver.ifs.util.IdGenerator
  - net.sf.cpsolver.studentsct.check.InevitableStudentConflicts
  - net.sf.cpsolver.studentsct.check.InevitableStudentConflicts.StudentCheck
  - net.sf.cpsolver.coursett.model.InitialSectioning
    - net.sf.cpsolver.coursett.custom.DeterministicStudentSectioning.DeterministicInitialSectioning (implements java.util.Comparator<T>)
  - net.sf.cpsolver.coursett.model.InitialSectioning.Group
  - net.sf.cpsolver.coursett.criteria.additional.InstructorLunchBreak.CompactInfo
  - net.sf.cpsolver.ifs.util.JProf
  - net.sf.cpsolver.coursett.heuristics.LectureSelection (implements net.sf.cpsolver.ifs.heuristics.VariableSelection<V,T>)
  - net.sf.cpsolver.studentsct.constraint.LinkedSections
  - net.sf.cpsolver.studentsct.constraint.LinkedSections.CurrentAssignment (implements net.sf.cpsolver.studentsct.constraint.LinkedSections.Assignment)
  - net.sf.cpsolver.exam.MistaTables
  - net.sf.cpsolver.exam.MistaTables.Counter
  - net.sf.cpsolver.exam.MistaTables.Table
    - net.sf.cpsolver.exam.MistaTables.Problems
    - net.sf.cpsolver.exam.MistaTables.Rooms
  - net.sf.cpsolver.ifs.model.Model<V,T>
    - net.sf.cpsolver.ifs.constant.ConstantModel<V,T>
      - net.sf.cpsolver.coursett.model.TimetableModel
    - net.sf.cpsolver.ifs.example.csp.CSPModel
    - net.sf.cpsolver.exam.model.ExamModel
    - net.sf.cpsolver.ifs.example.jobshop.JobShopModel
    - net.sf.cpsolver.ifs.example.rpp.RPPModel
    - net.sf.cpsolver.ifs.example.csp.StructuredCSPModel
    - net.sf.cpsolver.studentsct.StudentSctBBTest
    - net.sf.cpsolver.studentsct.StudentSectioningModel
    - net.sf.cpsolver.ifs.example.tt.TimetableModel
  - net.sf.cpsolver.ifs.solution.MPPSolutionComparator<V,T> (implements net.sf.cpsolver.ifs.solution.SolutionComparator<V,T>)
  - net.sf.cpsolver.ifs.termination.MPPTerminationCondition<V,T> (implements net.sf.cpsolver.ifs.termination.TerminationCondition<V,T>)
  - net.sf.cpsolver.ifs.model.Neighbour<V,T>
    - net.sf.cpsolver.ifs.heuristics.BacktrackNeighbourSelection.BackTrackNeighbour
    - net.sf.cpsolver.studentsct.heuristics.selection.BranchBoundSelection.BranchBoundNeighbour
    - net.sf.cpsolver.exam.neighbours.ExamRoomSwapNeighbour
    - net.sf.cpsolver.exam.split.ExamSplitMoves.ExamMergeNeighbour
    - net.sf.cpsolver.exam.split.ExamSplitMoves.ExamShuffleNeighbour
    - net.sf.cpsolver.exam.split.ExamSplitMoves.ExamSplitNeighbour
    - net.sf.cpsolver.ifs.model.LazyNeighbour<V,T>
      - net.sf.cpsolver.ifs.model.LazySwap<V,T>
    - net.sf.cpsolver.coursett.heuristics.NeighbourSelectionWithSuggestions.SuggestionNeighbour
    - net.sf.cpsolver.studentsct.heuristics.selection.PriorityConstructionSelection.ConstructionNeighbour
    - net.sf.cpsolver.ifs.algorithms.neighbourhoods.RandomSwapMove.SwapNeighbour
    - net.sf.cpsolver.studentsct.heuristics.selection.RandomUnassignmentSelection.UnassignStudentNeighbour
    - net.sf.cpsolver.ifs.model.SimpleNeighbour<V,T>
      - net.sf.cpsolver.exam.neighbours.ExamSimpleNeighbour
    - net.sf.cpsolver.studentsct.heuristics.selection.SwapStudentSelection.SwapStudentNeighbour
  - net.sf.cpsolver.ifs.algorithms.NeighbourSearch<V,T> (implements net.sf.cpsolver.ifs.model.LazyNeighbour.LazyNeighbourAcceptanceCriterion<V,T>, net.sf.cpsolver.ifs.heuristics.NeighbourSelection<V,T>, net.sf.cpsolver.ifs.solution.SolutionListener<V,T>)
    - net.sf.cpsolver.ifs.algorithms.GreatDeluge<V,T>
    - net.sf.cpsolver.ifs.algorithms.HillClimber<V,T>
      - net.sf.cpsolver.ifs.algorithms.StepCountingHillClimber<V,T>
    - net.sf.cpsolver.ifs.algorithms.SimulatedAnnealing<V,T>
  - net.sf.cpsolver.ifs.algorithms.NeighbourSelector<V,T> (implements net.sf.cpsolver.ifs.heuristics.NeighbourSelection<V,T>)
  - net.sf.cpsolver.studentsct.model.Offering
  - net.sf.cpsolver.coursett.model.OnFlySectioning (implements net.sf.cpsolver.ifs.model.ModelListener<V,T>)
  - net.sf.cpsolver.studentsct.OnlineSectProof
  - net.sf.cpsolver.studentsct.OnlineSectProof.CatCmp (implements java.util.Comparator<T>)
  - net.sf.cpsolver.studentsct.OnlineSectProof.Counter
  - net.sf.cpsolver.studentsct.OnlineSectProof.Sequence
    - net.sf.cpsolver.studentsct.OnlineSectProof.StudentSequence
  - net.sf.cpsolver.studentsct.weights.OriginalStudentWeights (implements net.sf.cpsolver.studentsct.weights.StudentWeights)
  - net.sf.cpsolver.studentsct.check.OverlapCheck
  - net.sf.cpsolver.coursett.heuristics.PlacementSelection (implements net.sf.cpsolver.ifs.heuristics.ValueSelection<V,T>)
  - net.sf.cpsolver.coursett.preference.PreferenceCombination
    - net.sf.cpsolver.coursett.preference.AveragePreferenceCombination
    - net.sf.cpsolver.coursett.preference.MinMaxPreferenceCombination
    - net.sf.cpsolver.coursett.preference.SumPreferenceCombination
  - net.sf.cpsolver.studentsct.heuristics.selection.PriorityConstructionSelection (implements net.sf.cpsolver.ifs.heuristics.NeighbourSelection<V,T>)
  - net.sf.cpsolver.studentsct.weights.PriorityStudentWeights (implements net.sf.cpsolver.studentsct.weights.StudentWeights)
    - net.sf.cpsolver.studentsct.weights.EqualStudentWeights
  - net.sf.cpsolver.ifs.util.Progress
  - net.sf.cpsolver.ifs.util.Progress.Message (implements java.io.Serializable)
  - net.sf.cpsolver.ifs.util.ProgressWriter (implements net.sf.cpsolver.ifs.util.ProgressListener)
  - net.sf.cpsolver.ifs.util.PrologFile (implements java.util.Iterator<E>)
  - net.sf.cpsolver.ifs.util.PrologFile.Term
  - net.sf.cpsolver.ifs.algorithms.neighbourhoods.RandomMove<V,T> (implements net.sf.cpsolver.ifs.algorithms.neighbourhoods.HillClimberSelection, net.sf.cpsolver.ifs.heuristics.NeighbourSelection<V,T>)
    - net.sf.cpsolver.coursett.neighbourhoods.RoomChange
    - net.sf.cpsolver.coursett.neighbourhoods.TimeChange
  - net.sf.cpsolver.studentsct.filter.RandomStudentFilter (implements net.sf.cpsolver.studentsct.filter.StudentFilter)
  - net.sf.cpsolver.ifs.algorithms.neighbourhoods.RandomSwapMove<V,T> (implements net.sf.cpsolver.ifs.algorithms.neighbourhoods.HillClimberSelection, net.sf.cpsolver.ifs.heuristics.NeighbourSelection<V,T>)
    - net.sf.cpsolver.coursett.neighbourhoods.RoomSwap
    - net.sf.cpsolver.ifs.algorithms.neighbourhoods.SuggestionMove<V,T>
    - net.sf.cpsolver.coursett.neighbourhoods.TimeSwap
  - net.sf.cpsolver.studentsct.heuristics.selection.RandomUnassignmentSelection (implements net.sf.cpsolver.ifs.heuristics.NeighbourSelection<V,T>)
    - net.sf.cpsolver.studentsct.heuristics.selection.RndUnProblStudSelection
  - net.sf.cpsolver.studentsct.filter.RealStudentFilter (implements net.sf.cpsolver.studentsct.filter.StudentFilter)
  - net.sf.cpsolver.studentsct.reservation.Reservation (implements java.lang.Comparable<T>)
    - net.sf.cpsolver.studentsct.reservation.CourseReservation
    - net.sf.cpsolver.studentsct.reservation.CurriculumReservation
    - net.sf.cpsolver.studentsct.reservation.DummyReservation
    - net.sf.cpsolver.studentsct.reservation.IndividualReservation
      - net.sf.cpsolver.studentsct.reservation.GroupReservation
  - net.sf.cpsolver.studentsct.filter.ReverseStudentFilter (implements net.sf.cpsolver.studentsct.filter.StudentFilter)
  - net.sf.cpsolver.coursett.model.RoomLocation (implements java.lang.Comparable<T>)
  - net.sf.cpsolver.coursett.model.RoomSharingModel
  - net.sf.cpsolver.studentsct.heuristics.RouletteWheelRequestSelection (implements net.sf.cpsolver.ifs.heuristics.VariableSelection<V,T>)
  - net.sf.cpsolver.ifs.heuristics.RouletteWheelSelection<E> (implements java.util.Enumeration<E>)
  - net.sf.cpsolver.studentsct.model.Section (implements net.sf.cpsolver.studentsct.model.Assignment, java.lang.Comparable<T>)
  - net.sf.cpsolver.studentsct.report.SectionConflictTable (implements net.sf.cpsolver.studentsct.report.StudentSectioningReport)
  - net.sf.cpsolver.studentsct.check.SectionLimitCheck
  - net.sf.cpsolver.ifs.algorithms.SimpleSearch<V,T> (implements net.sf.cpsolver.ifs.heuristics.NeighbourSelection<V,T>, net.sf.cpsolver.ifs.termination.TerminationCondition<V,T>)
  - net.sf.cpsolver.ifs.example.csp.SimpleTest
  - net.sf.cpsolver.ifs.util.SoftCache<K,V> (implements java.util.Map<K,V>)
  - net.sf.cpsolver.ifs.solution.Solution<V,T>
  - net.sf.cpsolver.studentsct.Solution2Expectations
  - net.sf.cpsolver.ifs.solver.Solver<V,T>
    - net.sf.cpsolver.coursett.TimetableSolver
  - net.sf.cpsolver.ifs.heuristics.StandardNeighbourSelection<V,T> (implements net.sf.cpsolver.ifs.heuristics.NeighbourSelection<V,T>)
    - net.sf.cpsolver.ifs.heuristics.BacktrackNeighbourSelection<V,T>
      - net.sf.cpsolver.studentsct.heuristics.RandomizedBacktrackNeighbourSelection
    - net.sf.cpsolver.coursett.heuristics.NeighbourSelectionWithSuggestions
    - net.sf.cpsolver.ifs.heuristics.RoundRobinNeighbourSelection<V,T>
      - net.sf.cpsolver.studentsct.heuristics.StudentSctNeighbourSelection
        - net.sf.cpsolver.studentsct.heuristics.TwoPhaseStudentSctNeighbourSelection
  - net.sf.cpsolver.studentsct.heuristics.selection.StandardSelection (implements net.sf.cpsolver.ifs.heuristics.NeighbourSelection<V,T>)
  - net.sf.cpsolver.coursett.model.Student (implements java.lang.Comparable<T>)
  - net.sf.cpsolver.studentsct.model.Student (implements java.lang.Comparable<T>)
  - net.sf.cpsolver.studentsct.heuristics.studentord.StudentChoiceOrder (implements java.util.Comparator<T>, net.sf.cpsolver.studentsct.heuristics.studentord.StudentOrder)
    - net.sf.cpsolver.studentsct.heuristics.studentord.StudentChoiceRealFirstOrder
  - net.sf.cpsolver.studentsct.heuristics.studentord.StudentMajorOrder (implements java.util.Comparator<T>, net.sf.cpsolver.studentsct.heuristics.studentord.StudentOrder)
  - net.sf.cpsolver.studentsct.StudentPreferencePenalties
  - net.sf.cpsolver.studentsct.heuristics.studentord.StudentRandomOrder (implements net.sf.cpsolver.studentsct.heuristics.studentord.StudentOrder)
  - net.sf.cpsolver.studentsct.heuristics.studentord.StudentRandomRealFirstOrder (implements net.sf.cpsolver.studentsct.heuristics.studentord.StudentOrder)
  - net.sf.cpsolver.studentsct.StudentRequestXml
  - net.sf.cpsolver.studentsct.StudentSctBBTest.Message
  - net.sf.cpsolver.studentsct.StudentSectioningLoader (implements java.lang.Runnable)
    - net.sf.cpsolver.studentsct.StudentSectioningXMLLoader
  - net.sf.cpsolver.studentsct.StudentSectioningSaver (implements java.lang.Runnable)
    - net.sf.cpsolver.studentsct.StudentSectioningXMLSaver
  - net.sf.cpsolver.studentsct.model.Subpart (implements java.lang.Comparable<T>)
  - net.sf.cpsolver.studentsct.heuristics.selection.SwapStudentSelection (implements net.sf.cpsolver.ifs.heuristics.NeighbourSelection<V,T>, net.sf.cpsolver.studentsct.heuristics.selection.ProblemStudentsProvider)
  - net.sf.cpsolver.studentsct.heuristics.selection.SwapStudentSelection.Selection
  - net.sf.cpsolver.coursett.Test (implements net.sf.cpsolver.ifs.solution.SolutionListener<V,T>)
  - net.sf.cpsolver.exam.Test
  - net.sf.cpsolver.ifs.example.csp.Test
  - net.sf.cpsolver.ifs.example.jobshop.Test
  - net.sf.cpsolver.ifs.example.rpp.Test
  - net.sf.cpsolver.ifs.example.tt.Test
  - net.sf.cpsolver.studentsct.Test
  - net.sf.cpsolver.studentsct.Test.ExtraStudentFilter (implements net.sf.cpsolver.studentsct.filter.StudentFilter)
  - net.sf.cpsolver.studentsct.Test.TestSolutionListener (implements net.sf.cpsolver.ifs.solution.SolutionListener<V,T>)
  - java.lang.Thread (implements java.lang.Runnable)
    - net.sf.cpsolver.ifs.solver.Solver.SolverThread
    - net.sf.cpsolver.exam.Test.ShutdownHook
  - net.sf.cpsolver.coursett.model.TimeLocation
  - net.sf.cpsolver.studentsct.report.TimeOverlapConflictTable (implements net.sf.cpsolver.studentsct.report.StudentSectioningReport)
  - net.sf.cpsolver.studentsct.extension.TimeOverlapsCounter.Conflict
  - net.sf.cpsolver.coursett.TimetableLoader (implements java.lang.Runnable)
    - net.sf.cpsolver.coursett.TimetableXMLLoader
  - net.sf.cpsolver.coursett.TimetableSaver (implements java.lang.Runnable)
    - net.sf.cpsolver.coursett.TimetableXMLSaver
  - net.sf.cpsolver.coursett.TimetableXMLLoader.DatePattern
  - net.sf.cpsolver.ifs.util.ToolBox
  - net.sf.cpsolver.studentsct.heuristics.TwoPhaseStudentSctNeighbourSelection.RestoreDummyStudents (implements net.sf.cpsolver.ifs.heuristics.NeighbourSelection<V,T>)
  - net.sf.cpsolver.studentsct.report.UnbalancedSectionsTable (implements net.sf.cpsolver.studentsct.report.StudentSectioningReport)
  - net.sf.cpsolver.ifs.model.Value<V,T> (implements java.lang.Comparable<T>)
    - net.sf.cpsolver.ifs.example.csp.CSPValue
    - net.sf.cpsolver.studentsct.model.Enrollment
    - net.sf.cpsolver.exam.model.ExamPlacement
    - net.sf.cpsolver.ifs.example.jobshop.Location
    - net.sf.cpsolver.ifs.example.rpp.Location
    - net.sf.cpsolver.ifs.example.tt.Location
    - net.sf.cpsolver.coursett.model.Placement
  - net.sf.cpsolver.ifs.model.Variable<V,T> (implements java.lang.Comparable<T>)
    - net.sf.cpsolver.ifs.example.tt.Activity
    - net.sf.cpsolver.ifs.example.csp.CSPVariable
    - net.sf.cpsolver.exam.model.Exam
    - net.sf.cpsolver.coursett.model.Lecture (implements net.sf.cpsolver.ifs.constant.ConstantVariable)
    - net.sf.cpsolver.ifs.example.jobshop.Operation
    - net.sf.cpsolver.ifs.example.rpp.Rectangle
    - net.sf.cpsolver.studentsct.model.Request
      - net.sf.cpsolver.studentsct.model.CourseRequest
      - net.sf.cpsolver.studentsct.model.FreeTimeRequest (implements net.sf.cpsolver.studentsct.model.Assignment)

## Interface Hierarchy

- net.sf.cpsolver.studentsct.model.Assignment
- net.sf.cpsolver.ifs.util.Callback
- net.sf.cpsolver.ifs.constant.ConstantVariable
- net.sf.cpsolver.ifs.model.ConstraintListener<T>
- net.sf.cpsolver.ifs.util.CSVFile.CSVFilter
- java.util.Enumeration<E>
  - net.sf.cpsolver.coursett.model.TimeLocation.IntEnumeration
- net.sf.cpsolver.coursett.constraint.GroupConstraint.PairCheck
- net.sf.cpsolver.ifs.algorithms.neighbourhoods.HillClimberSelection
- net.sf.cpsolver.ifs.model.InfoProvider<V>
  - net.sf.cpsolver.ifs.criteria.Criterion<V,T> (also extends net.sf.cpsolver.ifs.model.ModelListener<V,T>)
- net.sf.cpsolver.ifs.model.LazyNeighbour.LazyNeighbourAcceptanceCriterion<V,T>
- net.sf.cpsolver.studentsct.constraint.LinkedSections.Assignment
- net.sf.cpsolver.studentsct.constraint.LinkedSections.ConflictHandler
- net.sf.cpsolver.ifs.model.ModelListener<V,T>
  - net.sf.cpsolver.ifs.criteria.Criterion<V,T> (also extends net.sf.cpsolver.ifs.model.InfoProvider<V>)
- net.sf.cpsolver.ifs.heuristics.NeighbourSelection<V,T>
- net.sf.cpsolver.ifs.perturbations.PerturbationsCounter<V,T>
- net.sf.cpsolver.studentsct.heuristics.selection.ProblemStudentsProvider
- net.sf.cpsolver.ifs.util.ProgressListener
- net.sf.cpsolver.ifs.solution.SolutionComparator<V,T>
  - net.sf.cpsolver.studentsct.weights.StudentWeights
- net.sf.cpsolver.ifs.solution.SolutionListener<V,T>
- net.sf.cpsolver.ifs.solver.SolverListener<V,T>
- net.sf.cpsolver.studentsct.filter.StudentFilter
- net.sf.cpsolver.studentsct.heuristics.studentord.StudentOrder
- net.sf.cpsolver.coursett.model.StudentSectioning
- net.sf.cpsolver.studentsct.report.StudentSectioningReport
- net.sf.cpsolver.ifs.termination.TerminationCondition<V,T>
- net.sf.cpsolver.ifs.heuristics.ValueSelection<V,T>
- net.sf.cpsolver.ifs.model.VariableListener<T>
- net.sf.cpsolver.ifs.heuristics.VariableSelection<V,T>
- net.sf.cpsolver.ifs.model.WeakeningConstraint<V,T>

## Enum Hierarchy

- java.lang.Object
  - java.lang.Enum<E> (implements java.lang.Comparable<T>, java.io.Serializable)
    - net.sf.cpsolver.coursett.constraint.FlexibleConstraint.FlexibleConstraintType
    - net.sf.cpsolver.coursett.constraint.GroupConstraint.Flag
    - net.sf.cpsolver.coursett.constraint.GroupConstraint.ConstraintType
    - net.sf.cpsolver.ifs.algorithms.StepCountingHillClimber.Mode
    - net.sf.cpsolver.ifs.criteria.AbstractCriterion.ValueUpdateType
    - net.sf.cpsolver.ifs.util.DistanceMetric.Ellipsoid
    - net.sf.cpsolver.studentsct.report.SectionConflictTable.Type
    - net.sf.cpsolver.studentsct.weights.StudentWeights.Implementation