in activemq-protobuf/src/main/java/org/apache/activemq/protobuf/compiler/AltJavaGenerator.java [798:828]
private void generateBufferEquals(MessageDescriptor m, String className) {
p("public boolean equals(Object obj) {");
indent();
p("if( obj==this )");
p(" return true;");
p("");
p("if( obj==null || obj.getClass()!="+className+".class )");
p(" return false;");
p("");
p("return equals(("+className+")obj);");
unindent();
p("}");
p("");
p("public boolean equals("+className+" obj) {");
indent();
p("return toUnframedBuffer().equals(obj.toUnframedBuffer());");
unindent();
p("}");
p("");
p("public int hashCode() {");
indent();
int hc = className.hashCode();
p("if( hashCode==0 ) {");
p("hashCode="+hc+" ^ toUnframedBuffer().hashCode();");
p("}");
p("return hashCode;");
unindent();
p("}");
p("");
}