+ // For type safety. Needed for odd cases like MessageContent using CONTENT_MODEL_WIKITEXT
+ if ( get_class( $that ) !== get_class( $this ) ) {
+ return false;
+ }
+
+ return $this->equalsInternal( $that );
+ }
+
+ /**
+ * Checks whether $that is logically equal to this Content object.
+ *
+ * This method can be overwritten by subclasses that need to implement custom
+ * equality checks.
+ *
+ * This default implementation checks whether the serializations
+ * of $this and $that are the same: $this->serialize() === $that->serialize()
+ *
+ * Implementors can assume that $that is an instance of the same class
+ * as the present Content object, as long as equalsInternal() is only called
+ * by the standard implementation of equals().
+ *
+ * @note Do not call this method directly, call equals() instead.
+ *
+ * @param Content $that
+ * @return bool
+ */
+ protected function equalsInternal( Content $that ) {
+ return $this->serialize() === $that->serialize();