package org.smoothbuild.lang.value;
import static com.google.common.base.Preconditions.checkNotNull;
import java.util.Objects;
import org.smoothbuild.lang.type.Type;
import com.google.common.hash.HashCode;
public class Value {
private final Type type;
private final HashCode hash;
public Value(Type type, HashCode hash) {
this.type = checkNotNull(type);
this.hash = checkNotNull(hash);
}
public HashCode hash() {
return hash;
}
public Type type() {
return type;
}
public boolean equals(Object object) {
return object instanceof Value && equals((Value) object);
}
private boolean equals(Value value) {
return Objects.equals(hash, value.hash());
}
public int hashCode() {
return hash.hashCode();
}
}