package com.airbnb.epoxy; import com.squareup.javapoet.TypeName; import javax.lang.model.element.Element; import static com.airbnb.epoxy.Utils.isFieldPackagePrivate; class ControllerModelField { String fieldName; TypeName typeName; boolean packagePrivate; ControllerModelField(Element element) { fieldName = element.getSimpleName().toString(); typeName = TypeName.get(element.asType()); this.packagePrivate = isFieldPackagePrivate(element); } @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } ControllerModelField that = (ControllerModelField) o; if (packagePrivate != that.packagePrivate) { return false; } if (fieldName != null ? !fieldName.equals(that.fieldName) : that.fieldName != null) { return false; } return typeName != null ? typeName.equals(that.typeName) : that.typeName == null; } @Override public int hashCode() { int result = fieldName != null ? fieldName.hashCode() : 0; result = 31 * result + (typeName != null ? typeName.hashCode() : 0); result = 31 * result + (packagePrivate ? 1 : 0); return result; } @Override public String toString() { return "ControllerModelField{" + "fieldName='" + fieldName + '\'' + ", typeName=" + typeName + ", packagePrivate=" + packagePrivate + '}'; } }