-------------------------------------------------- Specification of the Dependency ADT. The Dependency ADT shall be implemented in Java, and will be tested using Sun's Java 2 Runtime Environment, Standard Edition, version 1.6.0. The code for this implementation will be in the default package, and shall define a public class named Dependency. That class shall provide the following public static methods: Signature: Dependency.create : Refreshable * Refreshable -> Dependency Dependency.first : Dependency -> Refreshable Dependency.second : Dependency -> Refreshable Dependency.isOkay : Dependency -> boolean Dependency.first (Dependency.create (r1, r2)) = r1 Dependency.second (Dependency.create (r1, r2)) = r2 Dependency.isOkay (Dependency.create (r1, r2)) = Refreshable.era(r1) <= Refreshable.era(r2) Values of the Dependency ADT shall also implement the public dynamic methods equals(Object) and hashCode() such that If v1 and v2 are values of the Dependency ADT, then v1.equals(v2) if and only if Dependency.first(v1).equals(Dependency.first(v2)) and Dependency.second(v1).equals(Dependency.second(v2)) If v1 is a value of the Dependency ADT, but x is not, then v1.equals(x) returns false. If v1 and v2 are values of the Dependency ADT, and v1.equals(v2) then v1.hashCode() == v2.hashCode(). --------------------------------------------------