void buildEqualsMethod() throws SourceException {
JMethod equalsMethod = valueClass.method(JMod.PUBLIC | JMod.FINAL, types._boolean, "equals");
VariableNameSource nameSource = new VariableNameSource();
equalsMethod.annotate(Override.class);
JAnnotationUse annotationUse = equalsMethod.annotate(SuppressWarnings.class);
annotationUse.param("value", "unchecked");
JVar thatObject = equalsMethod.param(types._Object, nameSource.get("thatObject"));
JConditional _if = equalsMethod.body()._if(JExpr._this().eq(thatObject));
_if._then()._return(JExpr.TRUE);
JConditional elseif = _if._elseif(thatObject._instanceof(valueClass).not());
elseif._then()._return(JExpr.FALSE);