@@ -0,0 +1,795 @@
+package org.jeecqrs.common;%0A%0A/**%0A * A layer supertype for Identifiable objects.%0A */%0Apublic abstract class AbstractIdentifiable%3CT%3E implements Identifiable, CompareById%3CT%3E %7B%0A%0A    @Override%0A    public final boolean sameIdentityAs(T other) %7B%0A        if (other == null %7C%7C !this.getClass().equals(other.getClass()))%0A            return false;%0A        AbstractIdentifiable%3CT%3E o = (AbstractIdentifiable%3CT%3E) other;%0A        return this.id().equals(o.id());%0A    %7D%0A %0A    @Override%0A    public final boolean equals(Object obj) %7B%0A        if (this == obj)%0A            return true;%0A%09if (obj == null %7C%7C getClass() != obj.getClass())%0A%09    return false;%0A%09final T other = (T) obj;%0A%09return sameIdentityAs(other);%0A    %7D%0A    %0A    @Override%0A    public final int hashCode() %7B%0A        return this.id().hashCode();%0A    %7D%0A%0A%7D%0A

Add AbstractIdentifiable