Introducing a generic PairingAlgorithm interface.
Implementing PairingAlgorithm in HeuristicPairingAlgorithm, which is the code that used to (probably not ideally) reside in the main class.
Moving tests from testing the main class to testing the new concrete algorithm class.
Moved ConcretePersonTest.
Gutted the main class so that it does only what it should do (instantiate a pairer and run it).
Adding setPersons to the PairingAlgorithm interface. The algorithms should not statically contain the persons they are acting upon!
Moved the Person interface.
Moved the ConcretePerson class.
Making the HeuristicPairingAlgorithm agnostic as to its persons.
Making the main class responsible for saying who is getting paired.
Adding a test for setting persons, refining the test for getting persons, and adding a test method to set the list of persons by default since implementations no longer come preloaded with all the same people.