+ @Override
+ public int hashCode() {
+ return value.hashCode();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ return (obj instanceof TestValue) && Objects.equal(value.get(),
+ ((TestValue) obj).value.get());
+ }
+
+ @Override
+ public String toString() {
+ return String.valueOf(value.get());
+ }
+
+ public static <T> Value<T> from(T value) {
+ return new TestValue<T>(value);
+ }
+