@@ -0,0 +1,1729 @@
+package net.acomputerdog.core.hash;%0A%0Apublic class Hasher %7B%0A    private int currentHashValue;%0A%0A    public Hasher() %7B%0A        currentHashValue = Hash.SEED;%0A    %7D%0A%0A    public Hasher hash(Object val) %7B%0A        currentHashValue = Hash.hash(currentHashValue, val);%0A        return this;%0A    %7D%0A%0A    public Hasher hash(int val) %7B%0A        currentHashValue = Hash.hash(currentHashValue, val);%0A        return this;%0A    %7D%0A%0A    public Hasher hash(byte val) %7B%0A        currentHashValue = Hash.hash(currentHashValue, val);%0A        return this;%0A    %7D%0A%0A    public Hasher hash(short val) %7B%0A        currentHashValue = Hash.hash(currentHashValue, val);%0A        return this;%0A    %7D%0A%0A    public Hasher hash(long val) %7B%0A        currentHashValue = Hash.hash(currentHashValue, val);%0A        return this;%0A    %7D%0A%0A    public Hasher hash(boolean val) %7B%0A        currentHashValue = Hash.hash(currentHashValue, val);%0A        return this;%0A    %7D%0A%0A    public Hasher hash(float val) %7B%0A        currentHashValue = Hash.hash(currentHashValue, val);%0A        return this;%0A    %7D%0A%0A    public Hasher hash(double val) %7B%0A        currentHashValue = Hash.hash(currentHashValue, val);%0A        return this;%0A    %7D%0A%0A    public Hasher hash(char val) %7B%0A        currentHashValue = Hash.hash(currentHashValue, val);%0A        return this;%0A    %7D%0A%0A    @Override%0A    public int hashCode() %7B%0A        return currentHashValue;%0A    %7D%0A%0A    @Override%0A    public boolean equals(Object obj) %7B%0A        if (obj == null) return false;%0A        if (obj == this) return true;%0A        if (!(obj instanceof Hasher)) return false;%0A        return currentHashValue == ((Hasher) obj).currentHashValue;%0A    %7D%0A%0A    @Override%0A    public String toString() %7B%0A        return %22Hasher%7B%22 + currentHashValue + %22%7D%22;%0A    %7D%0A%7D%0A

Add Hasher to provide an easier way to hash a class