Improve branch to match requirements and change test.
Replace clone with copy-constructor.
Change tests to match requirements.
Replace clone with copy-constructor.
Organize imports.