docs: public EqualsBuilder append(Object lhs, Object rhs) {
          if (!isEquals) {
              return this;
          }
          if (lhs == rhs) {
              return this;
          }
          if (lhs == null || rhs == null) {
              this.setEquals(false);
              return this;
          }
          Class<?> lhsClass = lhs.getClass();
          if (!lhsClass.isArray()) {
              if (lhs instanceof java.math.BigDecimal && rhs instanceof java.math.BigDecimal) {
                  isEquals = (((java.math.BigDecimal) lhs).compareTo((java.math.BigDecimal) rhs) == 0);
              } else {
                  // The simple case, not an array, just test the element
                  isEquals = lhs.equals(rhs);
              }
          } else if (lhs.getClass() != rhs.getClass()) {
              // Here when we compare different dimensions, for example: a boolean[][] to a boolean[]
              this.setEquals(false);
  
          // 'Switch' on type of array, to dispatch to the correct handler
          // This handles multi dimensional arrays of the same depth
          } else if (lhs instanceof long[]) {
              append((long[]) lhs, (long[]) rhs);
          }