YJ- fixed Tray.hashCode() and updated Solver to use HashSet instead of
CopyOnWriteArraySet