diff --git a/assertj-core/src/main/java/module-info.java b/assertj-core/src/main/java/module-info.java
--- a/assertj-core/src/main/java/module-info.java
+++ b/assertj-core/src/main/java/module-info.java
@@ -18,6 +18,7 @@
   // AssertJ Core's package API
   exports org.assertj.core.annotations;
   exports org.assertj.core.api;
+  exports org.assertj.core.api.comparisonstrategy;
   exports org.assertj.core.api.exception;
   exports org.assertj.core.api.filter;
   exports org.assertj.core.api.iterable;
diff --git a/assertj-core/src/main/java/org/assertj/core/api/AbstractAssert.java b/assertj-core/src/main/java/org/assertj/core/api/AbstractAssert.java
--- a/assertj-core/src/main/java/org/assertj/core/api/AbstractAssert.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/AbstractAssert.java
@@ -36,6 +36,8 @@
 import java.util.function.Predicate;
 import java.util.function.Supplier;
 
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
 import org.assertj.core.api.recursive.assertion.RecursiveAssertionConfiguration;
 import org.assertj.core.api.recursive.comparison.RecursiveComparisonConfiguration;
 import org.assertj.core.configuration.ConfigurationProvider;
@@ -44,8 +46,6 @@
 import org.assertj.core.error.BasicErrorMessageFactory;
 import org.assertj.core.error.ErrorMessageFactory;
 import org.assertj.core.error.MessageFormatter;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
-import org.assertj.core.internal.ComparisonStrategy;
 import org.assertj.core.internal.Conditions;
 import org.assertj.core.internal.Failures;
 import org.assertj.core.internal.Objects;
@@ -117,6 +117,10 @@ public WritableAssertionInfo getWritableAssertionInfo() {
     return info;
   }
 
+  protected ComparisonStrategy getComparisonStrategy() {
+    return objects.getComparisonStrategy();
+  }
+
   /**
    * Throw an assertion error based on information in this assertion. Equivalent to:
    * <pre><code class='java'>throw failure(errorMessage, arguments);</code></pre>
@@ -1268,21 +1272,6 @@ protected RecursiveAssertionAssert usingRecursiveAssertion() {
     return (ASSERT) assertFactory.createAssert(extractedValue).withAssertionState(myself);
   }
 
-  /**
-   * Returns true if actual and other are equal according to the current comparison strategy.
-   *
-   * @param actual the object to compare to other
-   * @param other  the object to compare to actual
-   * @return true if actual and other are equal according to the underlying comparison strategy.
-   * @since 3.23.0
-   * @deprecated {@link ComparisonStrategy} will become part of the public API in the next major release and this method
-   * will be removed.
-   */
-  @Deprecated(since = "3", forRemoval = true)
-  protected boolean areEqual(Object actual, Object other) {
-    return objects.getComparisonStrategy().areEqual(actual, other);
-  }
-
   /**
    * Returns actual (the object currently under test).
    * <p>
diff --git a/assertj-core/src/main/java/org/assertj/core/api/AbstractBigDecimalAssert.java b/assertj-core/src/main/java/org/assertj/core/api/AbstractBigDecimalAssert.java
--- a/assertj-core/src/main/java/org/assertj/core/api/AbstractBigDecimalAssert.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/AbstractBigDecimalAssert.java
@@ -20,7 +20,7 @@
 import org.assertj.core.data.Offset;
 import org.assertj.core.data.Percentage;
 import org.assertj.core.internal.BigDecimals;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.util.CheckReturnValue;
 
 /**
diff --git a/assertj-core/src/main/java/org/assertj/core/api/AbstractBigIntegerAssert.java b/assertj-core/src/main/java/org/assertj/core/api/AbstractBigIntegerAssert.java
--- a/assertj-core/src/main/java/org/assertj/core/api/AbstractBigIntegerAssert.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/AbstractBigIntegerAssert.java
@@ -18,7 +18,7 @@
 import org.assertj.core.data.Offset;
 import org.assertj.core.data.Percentage;
 import org.assertj.core.internal.BigIntegers;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.util.CheckReturnValue;
 
 /**
diff --git a/assertj-core/src/main/java/org/assertj/core/api/AbstractByteArrayAssert.java b/assertj-core/src/main/java/org/assertj/core/api/AbstractByteArrayAssert.java
--- a/assertj-core/src/main/java/org/assertj/core/api/AbstractByteArrayAssert.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/AbstractByteArrayAssert.java
@@ -22,7 +22,7 @@
 
 import org.assertj.core.data.Index;
 import org.assertj.core.internal.ByteArrays;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.util.CheckReturnValue;
 
 public abstract class AbstractByteArrayAssert<SELF extends AbstractByteArrayAssert<SELF>>
diff --git a/assertj-core/src/main/java/org/assertj/core/api/AbstractByteAssert.java b/assertj-core/src/main/java/org/assertj/core/api/AbstractByteAssert.java
--- a/assertj-core/src/main/java/org/assertj/core/api/AbstractByteAssert.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/AbstractByteAssert.java
@@ -17,7 +17,7 @@
 import org.assertj.core.data.Offset;
 import org.assertj.core.data.Percentage;
 import org.assertj.core.internal.Bytes;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.util.CheckReturnValue;
 
 /**
diff --git a/assertj-core/src/main/java/org/assertj/core/api/AbstractCharArrayAssert.java b/assertj-core/src/main/java/org/assertj/core/api/AbstractCharArrayAssert.java
--- a/assertj-core/src/main/java/org/assertj/core/api/AbstractCharArrayAssert.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/AbstractCharArrayAssert.java
@@ -18,7 +18,7 @@
 
 import org.assertj.core.data.Index;
 import org.assertj.core.internal.CharArrays;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.util.CheckReturnValue;
 
 public abstract class AbstractCharArrayAssert<SELF extends AbstractCharArrayAssert<SELF>>
diff --git a/assertj-core/src/main/java/org/assertj/core/api/AbstractCharSequenceAssert.java b/assertj-core/src/main/java/org/assertj/core/api/AbstractCharSequenceAssert.java
--- a/assertj-core/src/main/java/org/assertj/core/api/AbstractCharSequenceAssert.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/AbstractCharSequenceAssert.java
@@ -44,7 +44,7 @@
 import java.util.regex.Pattern;
 import java.util.regex.PatternSyntaxException;
 
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.Strings;
 import org.assertj.core.util.CheckReturnValue;
 
diff --git a/assertj-core/src/main/java/org/assertj/core/api/AbstractCharacterAssert.java b/assertj-core/src/main/java/org/assertj/core/api/AbstractCharacterAssert.java
--- a/assertj-core/src/main/java/org/assertj/core/api/AbstractCharacterAssert.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/AbstractCharacterAssert.java
@@ -15,7 +15,7 @@
 import java.util.Comparator;
 
 import org.assertj.core.internal.Characters;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.util.CheckReturnValue;
 
 /**
diff --git a/assertj-core/src/main/java/org/assertj/core/api/AbstractComparableAssert.java b/assertj-core/src/main/java/org/assertj/core/api/AbstractComparableAssert.java
--- a/assertj-core/src/main/java/org/assertj/core/api/AbstractComparableAssert.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/AbstractComparableAssert.java
@@ -15,7 +15,7 @@
 import java.util.Comparator;
 
 import org.assertj.core.internal.Comparables;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.util.CheckReturnValue;
 
 /**
diff --git a/assertj-core/src/main/java/org/assertj/core/api/AbstractDateAssert.java b/assertj-core/src/main/java/org/assertj/core/api/AbstractDateAssert.java
--- a/assertj-core/src/main/java/org/assertj/core/api/AbstractDateAssert.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/AbstractDateAssert.java
@@ -40,7 +40,7 @@
 
 import org.assertj.core.configuration.Configuration;
 import org.assertj.core.configuration.ConfigurationProvider;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.Dates;
 import org.assertj.core.util.CheckReturnValue;
 
diff --git a/assertj-core/src/main/java/org/assertj/core/api/AbstractDoubleArrayAssert.java b/assertj-core/src/main/java/org/assertj/core/api/AbstractDoubleArrayAssert.java
--- a/assertj-core/src/main/java/org/assertj/core/api/AbstractDoubleArrayAssert.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/AbstractDoubleArrayAssert.java
@@ -17,7 +17,7 @@
 
 import org.assertj.core.data.Index;
 import org.assertj.core.data.Offset;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.DoubleArrays;
 import org.assertj.core.util.CheckReturnValue;
 
diff --git a/assertj-core/src/main/java/org/assertj/core/api/AbstractDoubleAssert.java b/assertj-core/src/main/java/org/assertj/core/api/AbstractDoubleAssert.java
--- a/assertj-core/src/main/java/org/assertj/core/api/AbstractDoubleAssert.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/AbstractDoubleAssert.java
@@ -21,7 +21,7 @@
 
 import org.assertj.core.data.Offset;
 import org.assertj.core.data.Percentage;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.Doubles;
 import org.assertj.core.internal.Failures;
 import org.assertj.core.util.CheckReturnValue;
diff --git a/assertj-core/src/main/java/org/assertj/core/api/AbstractFloatArrayAssert.java b/assertj-core/src/main/java/org/assertj/core/api/AbstractFloatArrayAssert.java
--- a/assertj-core/src/main/java/org/assertj/core/api/AbstractFloatArrayAssert.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/AbstractFloatArrayAssert.java
@@ -18,7 +18,7 @@
 
 import org.assertj.core.data.Index;
 import org.assertj.core.data.Offset;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.FloatArrays;
 import org.assertj.core.util.CheckReturnValue;
 
diff --git a/assertj-core/src/main/java/org/assertj/core/api/AbstractFloatAssert.java b/assertj-core/src/main/java/org/assertj/core/api/AbstractFloatAssert.java
--- a/assertj-core/src/main/java/org/assertj/core/api/AbstractFloatAssert.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/AbstractFloatAssert.java
@@ -21,7 +21,7 @@
 
 import org.assertj.core.data.Offset;
 import org.assertj.core.data.Percentage;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.Failures;
 import org.assertj.core.internal.Floats;
 import org.assertj.core.util.CheckReturnValue;
diff --git a/assertj-core/src/main/java/org/assertj/core/api/AbstractIntArrayAssert.java b/assertj-core/src/main/java/org/assertj/core/api/AbstractIntArrayAssert.java
--- a/assertj-core/src/main/java/org/assertj/core/api/AbstractIntArrayAssert.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/AbstractIntArrayAssert.java
@@ -16,7 +16,7 @@
 import java.util.Comparator;
 
 import org.assertj.core.data.Index;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.IntArrays;
 import org.assertj.core.util.CheckReturnValue;
 
diff --git a/assertj-core/src/main/java/org/assertj/core/api/AbstractIntegerAssert.java b/assertj-core/src/main/java/org/assertj/core/api/AbstractIntegerAssert.java
--- a/assertj-core/src/main/java/org/assertj/core/api/AbstractIntegerAssert.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/AbstractIntegerAssert.java
@@ -16,7 +16,7 @@
 
 import org.assertj.core.data.Offset;
 import org.assertj.core.data.Percentage;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.Integers;
 import org.assertj.core.util.CheckReturnValue;
 
diff --git a/assertj-core/src/main/java/org/assertj/core/api/AbstractIterableAssert.java b/assertj-core/src/main/java/org/assertj/core/api/AbstractIterableAssert.java
--- a/assertj-core/src/main/java/org/assertj/core/api/AbstractIterableAssert.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/AbstractIterableAssert.java
@@ -50,6 +50,9 @@
 import java.util.stream.Stream;
 
 import org.assertj.core.annotations.Beta;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.IterableElementComparisonStrategy;
 import org.assertj.core.api.filter.FilterOperator;
 import org.assertj.core.api.filter.Filters;
 import org.assertj.core.api.iterable.ThrowingExtractor;
@@ -60,11 +63,8 @@
 import org.assertj.core.groups.FieldsOrPropertiesExtractor;
 import org.assertj.core.groups.Tuple;
 import org.assertj.core.internal.CommonErrors;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
-import org.assertj.core.internal.ComparisonStrategy;
 import org.assertj.core.internal.ConfigurableRecursiveFieldByFieldComparator;
 import org.assertj.core.internal.ExtendedByTypesComparator;
-import org.assertj.core.internal.IterableElementComparisonStrategy;
 import org.assertj.core.internal.Iterables;
 import org.assertj.core.internal.ObjectArrays;
 import org.assertj.core.internal.Objects;
diff --git a/assertj-core/src/main/java/org/assertj/core/api/AbstractListAssert.java b/assertj-core/src/main/java/org/assertj/core/api/AbstractListAssert.java
--- a/assertj-core/src/main/java/org/assertj/core/api/AbstractListAssert.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/AbstractListAssert.java
@@ -18,8 +18,8 @@
 
 import org.assertj.core.data.Index;
 import org.assertj.core.description.Description;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
-import org.assertj.core.internal.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
 import org.assertj.core.internal.Lists;
 import org.assertj.core.util.CheckReturnValue;
 
diff --git a/assertj-core/src/main/java/org/assertj/core/api/AbstractLocalDateTimeAssert.java b/assertj-core/src/main/java/org/assertj/core/api/AbstractLocalDateTimeAssert.java
--- a/assertj-core/src/main/java/org/assertj/core/api/AbstractLocalDateTimeAssert.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/AbstractLocalDateTimeAssert.java
@@ -32,7 +32,7 @@
 import org.assertj.core.data.TemporalUnitOffset;
 import org.assertj.core.internal.ChronoLocalDateTimeComparator;
 import org.assertj.core.internal.Comparables;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.Failures;
 import org.assertj.core.internal.Objects;
 import org.assertj.core.util.CheckReturnValue;
diff --git a/assertj-core/src/main/java/org/assertj/core/api/AbstractLongAdderAssert.java b/assertj-core/src/main/java/org/assertj/core/api/AbstractLongAdderAssert.java
--- a/assertj-core/src/main/java/org/assertj/core/api/AbstractLongAdderAssert.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/AbstractLongAdderAssert.java
@@ -20,7 +20,7 @@
 
 import org.assertj.core.data.Offset;
 import org.assertj.core.data.Percentage;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.Longs;
 import org.assertj.core.util.CheckReturnValue;
 
diff --git a/assertj-core/src/main/java/org/assertj/core/api/AbstractLongArrayAssert.java b/assertj-core/src/main/java/org/assertj/core/api/AbstractLongArrayAssert.java
--- a/assertj-core/src/main/java/org/assertj/core/api/AbstractLongArrayAssert.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/AbstractLongArrayAssert.java
@@ -16,7 +16,7 @@
 import java.util.Comparator;
 
 import org.assertj.core.data.Index;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.LongArrays;
 import org.assertj.core.util.CheckReturnValue;
 
diff --git a/assertj-core/src/main/java/org/assertj/core/api/AbstractLongAssert.java b/assertj-core/src/main/java/org/assertj/core/api/AbstractLongAssert.java
--- a/assertj-core/src/main/java/org/assertj/core/api/AbstractLongAssert.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/AbstractLongAssert.java
@@ -16,7 +16,7 @@
 
 import org.assertj.core.data.Offset;
 import org.assertj.core.data.Percentage;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.Longs;
 import org.assertj.core.util.CheckReturnValue;
 
diff --git a/assertj-core/src/main/java/org/assertj/core/api/AbstractObjectArrayAssert.java b/assertj-core/src/main/java/org/assertj/core/api/AbstractObjectArrayAssert.java
--- a/assertj-core/src/main/java/org/assertj/core/api/AbstractObjectArrayAssert.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/AbstractObjectArrayAssert.java
@@ -46,6 +46,8 @@
 import java.util.stream.Stream;
 
 import org.assertj.core.annotations.Beta;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ObjectArrayElementComparisonStrategy;
 import org.assertj.core.api.filter.FilterOperator;
 import org.assertj.core.api.filter.Filters;
 import org.assertj.core.api.iterable.ThrowingExtractor;
@@ -57,11 +59,9 @@
 import org.assertj.core.groups.FieldsOrPropertiesExtractor;
 import org.assertj.core.groups.Tuple;
 import org.assertj.core.internal.CommonErrors;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.ConfigurableRecursiveFieldByFieldComparator;
 import org.assertj.core.internal.ExtendedByTypesComparator;
 import org.assertj.core.internal.Iterables;
-import org.assertj.core.internal.ObjectArrayElementComparisonStrategy;
 import org.assertj.core.internal.ObjectArrays;
 import org.assertj.core.internal.Objects;
 import org.assertj.core.internal.TypeComparators;
diff --git a/assertj-core/src/main/java/org/assertj/core/api/AbstractObjectAssert.java b/assertj-core/src/main/java/org/assertj/core/api/AbstractObjectAssert.java
--- a/assertj-core/src/main/java/org/assertj/core/api/AbstractObjectAssert.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/AbstractObjectAssert.java
@@ -32,7 +32,7 @@
 import org.assertj.core.api.recursive.comparison.RecursiveComparisonConfiguration;
 import org.assertj.core.description.Description;
 import org.assertj.core.groups.Tuple;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.Objects;
 import org.assertj.core.internal.TypeComparators;
 import org.assertj.core.util.CheckReturnValue;
diff --git a/assertj-core/src/main/java/org/assertj/core/api/AbstractOffsetDateTimeAssert.java b/assertj-core/src/main/java/org/assertj/core/api/AbstractOffsetDateTimeAssert.java
--- a/assertj-core/src/main/java/org/assertj/core/api/AbstractOffsetDateTimeAssert.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/AbstractOffsetDateTimeAssert.java
@@ -28,7 +28,7 @@
 import org.assertj.core.data.TemporalOffset;
 import org.assertj.core.data.TemporalUnitOffset;
 import org.assertj.core.internal.Comparables;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.Failures;
 import org.assertj.core.internal.Objects;
 import org.assertj.core.internal.OffsetDateTimeByInstantComparator;
diff --git a/assertj-core/src/main/java/org/assertj/core/api/AbstractOptionalAssert.java b/assertj-core/src/main/java/org/assertj/core/api/AbstractOptionalAssert.java
--- a/assertj-core/src/main/java/org/assertj/core/api/AbstractOptionalAssert.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/AbstractOptionalAssert.java
@@ -28,10 +28,10 @@
 import org.assertj.core.annotations.Beta;
 import org.assertj.core.api.recursive.assertion.RecursiveAssertionConfiguration;
 import org.assertj.core.api.recursive.comparison.RecursiveComparisonConfiguration;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
-import org.assertj.core.internal.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
 import org.assertj.core.internal.Failures;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.util.CheckReturnValue;
 
 /**
diff --git a/assertj-core/src/main/java/org/assertj/core/api/AbstractShortArrayAssert.java b/assertj-core/src/main/java/org/assertj/core/api/AbstractShortArrayAssert.java
--- a/assertj-core/src/main/java/org/assertj/core/api/AbstractShortArrayAssert.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/AbstractShortArrayAssert.java
@@ -17,7 +17,7 @@
 import java.util.Comparator;
 
 import org.assertj.core.data.Index;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.ShortArrays;
 import org.assertj.core.util.CheckReturnValue;
 
diff --git a/assertj-core/src/main/java/org/assertj/core/api/AbstractShortAssert.java b/assertj-core/src/main/java/org/assertj/core/api/AbstractShortAssert.java
--- a/assertj-core/src/main/java/org/assertj/core/api/AbstractShortAssert.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/AbstractShortAssert.java
@@ -16,7 +16,7 @@
 
 import org.assertj.core.data.Offset;
 import org.assertj.core.data.Percentage;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.Shorts;
 import org.assertj.core.util.CheckReturnValue;
 
diff --git a/assertj-core/src/main/java/org/assertj/core/api/AbstractStringAssert.java b/assertj-core/src/main/java/org/assertj/core/api/AbstractStringAssert.java
--- a/assertj-core/src/main/java/org/assertj/core/api/AbstractStringAssert.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/AbstractStringAssert.java
@@ -27,7 +27,7 @@
 import java.util.Comparator;
 
 import org.assertj.core.internal.Comparables;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.Failures;
 import org.assertj.core.util.CheckReturnValue;
 
diff --git a/assertj-core/src/main/java/org/assertj/core/api/AbstractTemporalAssert.java b/assertj-core/src/main/java/org/assertj/core/api/AbstractTemporalAssert.java
--- a/assertj-core/src/main/java/org/assertj/core/api/AbstractTemporalAssert.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/AbstractTemporalAssert.java
@@ -21,7 +21,7 @@
 
 import org.assertj.core.data.TemporalOffset;
 import org.assertj.core.internal.Comparables;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.Failures;
 import org.assertj.core.internal.Objects;
 import org.assertj.core.util.CheckReturnValue;
diff --git a/assertj-core/src/main/java/org/assertj/core/api/AbstractUniversalComparableAssert.java b/assertj-core/src/main/java/org/assertj/core/api/AbstractUniversalComparableAssert.java
--- a/assertj-core/src/main/java/org/assertj/core/api/AbstractUniversalComparableAssert.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/AbstractUniversalComparableAssert.java
@@ -16,7 +16,7 @@
 import java.util.Comparator;
 
 import org.assertj.core.internal.Comparables;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.util.CheckReturnValue;
 
 /**
diff --git a/assertj-core/src/main/java/org/assertj/core/api/AbstractZonedDateTimeAssert.java b/assertj-core/src/main/java/org/assertj/core/api/AbstractZonedDateTimeAssert.java
--- a/assertj-core/src/main/java/org/assertj/core/api/AbstractZonedDateTimeAssert.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/AbstractZonedDateTimeAssert.java
@@ -26,7 +26,7 @@
 import org.assertj.core.data.TemporalOffset;
 import org.assertj.core.internal.ChronoZonedDateTimeByInstantComparator;
 import org.assertj.core.internal.Comparables;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.Failures;
 import org.assertj.core.internal.Objects;
 import org.assertj.core.util.CheckReturnValue;
diff --git a/assertj-core/src/main/java/org/assertj/core/api/AtomicIntegerArrayAssert.java b/assertj-core/src/main/java/org/assertj/core/api/AtomicIntegerArrayAssert.java
--- a/assertj-core/src/main/java/org/assertj/core/api/AtomicIntegerArrayAssert.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/AtomicIntegerArrayAssert.java
@@ -18,7 +18,7 @@
 import java.util.concurrent.atomic.AtomicIntegerArray;
 
 import org.assertj.core.data.Index;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.IntArrays;
 import org.assertj.core.util.CheckReturnValue;
 
diff --git a/assertj-core/src/main/java/org/assertj/core/api/AtomicIntegerAssert.java b/assertj-core/src/main/java/org/assertj/core/api/AtomicIntegerAssert.java
--- a/assertj-core/src/main/java/org/assertj/core/api/AtomicIntegerAssert.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/AtomicIntegerAssert.java
@@ -21,7 +21,7 @@
 import org.assertj.core.data.Offset;
 import org.assertj.core.data.Percentage;
 import org.assertj.core.internal.Comparables;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.Integers;
 import org.assertj.core.util.CheckReturnValue;
 
diff --git a/assertj-core/src/main/java/org/assertj/core/api/AtomicLongArrayAssert.java b/assertj-core/src/main/java/org/assertj/core/api/AtomicLongArrayAssert.java
--- a/assertj-core/src/main/java/org/assertj/core/api/AtomicLongArrayAssert.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/AtomicLongArrayAssert.java
@@ -18,7 +18,7 @@
 import java.util.concurrent.atomic.AtomicLongArray;
 
 import org.assertj.core.data.Index;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.LongArrays;
 import org.assertj.core.util.CheckReturnValue;
 
diff --git a/assertj-core/src/main/java/org/assertj/core/api/AtomicLongAssert.java b/assertj-core/src/main/java/org/assertj/core/api/AtomicLongAssert.java
--- a/assertj-core/src/main/java/org/assertj/core/api/AtomicLongAssert.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/AtomicLongAssert.java
@@ -21,7 +21,7 @@
 import org.assertj.core.data.Offset;
 import org.assertj.core.data.Percentage;
 import org.assertj.core.internal.Comparables;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.Longs;
 import org.assertj.core.util.CheckReturnValue;
 
diff --git a/assertj-core/src/main/java/org/assertj/core/api/AtomicReferenceArrayAssert.java b/assertj-core/src/main/java/org/assertj/core/api/AtomicReferenceArrayAssert.java
--- a/assertj-core/src/main/java/org/assertj/core/api/AtomicReferenceArrayAssert.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/AtomicReferenceArrayAssert.java
@@ -41,6 +41,8 @@
 import java.util.function.Function;
 import java.util.function.Predicate;
 
+import org.assertj.core.api.comparisonstrategy.AtomicReferenceArrayElementComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.api.filter.FilterOperator;
 import org.assertj.core.api.filter.Filters;
 import org.assertj.core.api.iterable.ThrowingExtractor;
@@ -50,9 +52,7 @@
 import org.assertj.core.description.Description;
 import org.assertj.core.groups.FieldsOrPropertiesExtractor;
 import org.assertj.core.groups.Tuple;
-import org.assertj.core.internal.AtomicReferenceArrayElementComparisonStrategy;
 import org.assertj.core.internal.CommonErrors;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.ConfigurableRecursiveFieldByFieldComparator;
 import org.assertj.core.internal.ExtendedByTypesComparator;
 import org.assertj.core.internal.Iterables;
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/AbstractComparisonStrategy.java b/assertj-core/src/main/java/org/assertj/core/api/comparisonstrategy/AbstractComparisonStrategy.java
similarity index 98%
rename from assertj-core/src/main/java/org/assertj/core/internal/AbstractComparisonStrategy.java
rename to assertj-core/src/main/java/org/assertj/core/api/comparisonstrategy/AbstractComparisonStrategy.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/AbstractComparisonStrategy.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/comparisonstrategy/AbstractComparisonStrategy.java
@@ -10,7 +10,7 @@
  *
  * Copyright 2012-2025 the original author or authors.
  */
-package org.assertj.core.internal;
+package org.assertj.core.api.comparisonstrategy;
 
 import static java.lang.reflect.Array.getLength;
 import static java.util.Collections.EMPTY_SET;
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/AtomicReferenceArrayElementComparisonStrategy.java b/assertj-core/src/main/java/org/assertj/core/api/comparisonstrategy/AtomicReferenceArrayElementComparisonStrategy.java
similarity index 98%
rename from assertj-core/src/main/java/org/assertj/core/internal/AtomicReferenceArrayElementComparisonStrategy.java
rename to assertj-core/src/main/java/org/assertj/core/api/comparisonstrategy/AtomicReferenceArrayElementComparisonStrategy.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/AtomicReferenceArrayElementComparisonStrategy.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/comparisonstrategy/AtomicReferenceArrayElementComparisonStrategy.java
@@ -10,7 +10,7 @@
  *
  * Copyright 2012-2025 the original author or authors.
  */
-package org.assertj.core.internal;
+package org.assertj.core.api.comparisonstrategy;
 
 import static org.assertj.core.configuration.ConfigurationProvider.CONFIGURATION_PROVIDER;
 import static org.assertj.core.util.Arrays.isArray;
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy.java b/assertj-core/src/main/java/org/assertj/core/api/comparisonstrategy/ComparatorBasedComparisonStrategy.java
similarity index 98%
rename from assertj-core/src/main/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy.java
rename to assertj-core/src/main/java/org/assertj/core/api/comparisonstrategy/ComparatorBasedComparisonStrategy.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/comparisonstrategy/ComparatorBasedComparisonStrategy.java
@@ -10,7 +10,7 @@
  *
  * Copyright 2012-2025 the original author or authors.
  */
-package org.assertj.core.internal;
+package org.assertj.core.api.comparisonstrategy;
 
 import static org.assertj.core.configuration.ConfigurationProvider.CONFIGURATION_PROVIDER;
 import static org.assertj.core.util.IterableUtil.isNullOrEmpty;
@@ -21,6 +21,8 @@
 import java.util.Set;
 import java.util.TreeSet;
 
+import org.assertj.core.internal.DescribableComparator;
+
 /**
  * Implements {@link ComparisonStrategy} contract with a comparison strategy based on a {@link Comparator}.
  *
@@ -28,7 +30,7 @@
  */
 public class ComparatorBasedComparisonStrategy extends AbstractComparisonStrategy {
 
-  static final int NOT_EQUAL = -1;
+  public static final int NOT_EQUAL = -1;
 
   // A raw type is necessary because we can't make assumptions on object to be compared.
   @SuppressWarnings("rawtypes")
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/ComparisonStrategy.java b/assertj-core/src/main/java/org/assertj/core/api/comparisonstrategy/ComparisonStrategy.java
similarity index 99%
rename from assertj-core/src/main/java/org/assertj/core/internal/ComparisonStrategy.java
rename to assertj-core/src/main/java/org/assertj/core/api/comparisonstrategy/ComparisonStrategy.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/ComparisonStrategy.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/comparisonstrategy/ComparisonStrategy.java
@@ -10,7 +10,7 @@
  *
  * Copyright 2012-2025 the original author or authors.
  */
-package org.assertj.core.internal;
+package org.assertj.core.api.comparisonstrategy;
 
 /**
  * Describes the contract to implement a <b>consistent</b> comparison strategy that covers :<br>
@@ -157,7 +157,7 @@ public interface ComparisonStrategy {
   /**
    * Used in error messages when a custom comparison strategy was used to compare values.
    * <p>
-   * For example {@link ComparatorBasedComparisonStrategy} returns: 
+   * For example {@link ComparatorBasedComparisonStrategy} returns:
    * <pre><code>"when comparing values using " + toString()</code></pre>
    *   
    * @return the comparison strategy description used in error messages.
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/IterableElementComparisonStrategy.java b/assertj-core/src/main/java/org/assertj/core/api/comparisonstrategy/IterableElementComparisonStrategy.java
similarity index 97%
rename from assertj-core/src/main/java/org/assertj/core/internal/IterableElementComparisonStrategy.java
rename to assertj-core/src/main/java/org/assertj/core/api/comparisonstrategy/IterableElementComparisonStrategy.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/IterableElementComparisonStrategy.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/comparisonstrategy/IterableElementComparisonStrategy.java
@@ -10,7 +10,7 @@
  *
  * Copyright 2012-2025 the original author or authors.
  */
-package org.assertj.core.internal;
+package org.assertj.core.api.comparisonstrategy;
 
 import static org.assertj.core.configuration.ConfigurationProvider.CONFIGURATION_PROVIDER;
 import static org.assertj.core.util.IterableUtil.sizeOf;
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/ObjectArrayElementComparisonStrategy.java b/assertj-core/src/main/java/org/assertj/core/api/comparisonstrategy/ObjectArrayElementComparisonStrategy.java
similarity index 97%
rename from assertj-core/src/main/java/org/assertj/core/internal/ObjectArrayElementComparisonStrategy.java
rename to assertj-core/src/main/java/org/assertj/core/api/comparisonstrategy/ObjectArrayElementComparisonStrategy.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/ObjectArrayElementComparisonStrategy.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/comparisonstrategy/ObjectArrayElementComparisonStrategy.java
@@ -10,7 +10,7 @@
  *
  * Copyright 2012-2025 the original author or authors.
  */
-package org.assertj.core.internal;
+package org.assertj.core.api.comparisonstrategy;
 
 import static org.assertj.core.configuration.ConfigurationProvider.CONFIGURATION_PROVIDER;
 import static org.assertj.core.util.Arrays.isArray;
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/StandardComparisonStrategy.java b/assertj-core/src/main/java/org/assertj/core/api/comparisonstrategy/StandardComparisonStrategy.java
similarity index 98%
rename from assertj-core/src/main/java/org/assertj/core/internal/StandardComparisonStrategy.java
rename to assertj-core/src/main/java/org/assertj/core/api/comparisonstrategy/StandardComparisonStrategy.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/StandardComparisonStrategy.java
+++ b/assertj-core/src/main/java/org/assertj/core/api/comparisonstrategy/StandardComparisonStrategy.java
@@ -10,14 +10,13 @@
  *
  * Copyright 2012-2025 the original author or authors.
  */
-package org.assertj.core.internal;
-
-import static org.assertj.core.util.Preconditions.checkArgument;
+package org.assertj.core.api.comparisonstrategy;
 
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.Set;
 import java.util.TreeSet;
+
 import org.assertj.core.util.Objects;
 import org.assertj.core.util.Streams;
 
diff --git a/assertj-core/src/main/java/org/assertj/core/error/MessageFormatter.java b/assertj-core/src/main/java/org/assertj/core/error/MessageFormatter.java
--- a/assertj-core/src/main/java/org/assertj/core/error/MessageFormatter.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/MessageFormatter.java
@@ -16,7 +16,7 @@
 import static org.assertj.core.util.Strings.formatIfArgs;
 
 import org.assertj.core.description.Description;
-import org.assertj.core.internal.AbstractComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.AbstractComparisonStrategy;
 import org.assertj.core.presentation.Representation;
 
 /**
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldBeAfter.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldBeAfter.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldBeAfter.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldBeAfter.java
@@ -16,8 +16,8 @@
 
 import java.util.Date;
 
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies that a {@link Date} is after another one failed.
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldBeAfterOrEqualTo.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldBeAfterOrEqualTo.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldBeAfterOrEqualTo.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldBeAfterOrEqualTo.java
@@ -12,8 +12,8 @@
  */
 package org.assertj.core.error;
 
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies that an {@link Object} is after or equal to another one
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldBeAfterYear.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldBeAfterYear.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldBeAfterYear.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldBeAfterYear.java
@@ -14,8 +14,8 @@
 
 import java.util.Date;
 
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies that a {@link Date} is after given year failed.
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldBeBefore.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldBeBefore.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldBeBefore.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldBeBefore.java
@@ -12,8 +12,8 @@
  */
 package org.assertj.core.error;
 
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies that a {@link Object} is before another one failed.
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldBeBeforeOrEqualTo.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldBeBeforeOrEqualTo.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldBeBeforeOrEqualTo.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldBeBeforeOrEqualTo.java
@@ -12,8 +12,8 @@
  */
 package org.assertj.core.error;
 
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies that an {@link Object} is before or equal to another one
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldBeBeforeYear.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldBeBeforeYear.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldBeBeforeYear.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldBeBeforeYear.java
@@ -14,8 +14,8 @@
 
 import java.util.Date;
 
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies that a {@link Date} is before given year failed.
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldBeBetween.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldBeBetween.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldBeBetween.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldBeBetween.java
@@ -14,8 +14,8 @@
 
 import java.util.Date;
 
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies that a value is between a start and an end
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldBeEqual.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldBeEqual.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldBeEqual.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldBeEqual.java
@@ -21,10 +21,10 @@
 import java.util.Objects;
 
 import org.assertj.core.description.Description;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
-import org.assertj.core.internal.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
 import org.assertj.core.internal.Failures;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.presentation.Representation;
 
 /**
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldBeGreater.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldBeGreater.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldBeGreater.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldBeGreater.java
@@ -12,8 +12,8 @@
  */
 package org.assertj.core.error;
 
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies that a value is greater than another one failed.
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldBeGreaterOrEqual.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldBeGreaterOrEqual.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldBeGreaterOrEqual.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldBeGreaterOrEqual.java
@@ -12,8 +12,8 @@
  */
 package org.assertj.core.error;
 
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies that a value is greater than or equal to another one
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldBeIn.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldBeIn.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldBeIn.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldBeIn.java
@@ -12,8 +12,8 @@
  */
 package org.assertj.core.error;
 
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies that a value is in a group of values (e.g. an array or
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldBeInTheFuture.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldBeInTheFuture.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldBeInTheFuture.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldBeInTheFuture.java
@@ -15,8 +15,8 @@
 import java.time.temporal.Temporal;
 import java.util.Date;
 
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies that a {@link Date} or a {@link Temporal} is in the future failed.
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldBeInThePast.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldBeInThePast.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldBeInThePast.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldBeInThePast.java
@@ -15,8 +15,8 @@
 import java.time.temporal.Temporal;
 import java.util.Date;
 
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies that a {@link Date} or a {@link Temporal} is in the past failed.
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldBeLess.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldBeLess.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldBeLess.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldBeLess.java
@@ -12,8 +12,8 @@
  */
 package org.assertj.core.error;
 
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies that a value is less than another one failed.
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldBeLessOrEqual.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldBeLessOrEqual.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldBeLessOrEqual.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldBeLessOrEqual.java
@@ -12,8 +12,8 @@
  */
 package org.assertj.core.error;
 
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies that a value is less than or equal to another one failed.
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldBeSubsetOf.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldBeSubsetOf.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldBeSubsetOf.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldBeSubsetOf.java
@@ -12,8 +12,8 @@
  */
 package org.assertj.core.error;
 
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies that an <code>Iterable</code> is a subset of an other set
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldBeSubstring.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldBeSubstring.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldBeSubstring.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldBeSubstring.java
@@ -12,7 +12,7 @@
  */
 package org.assertj.core.error;
 
-import org.assertj.core.internal.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
 
 public class ShouldBeSubstring extends BasicErrorMessageFactory {
 
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldBeToday.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldBeToday.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldBeToday.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldBeToday.java
@@ -15,8 +15,8 @@
 import java.time.LocalDate;
 import java.util.Date;
 
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies that a {@link Date} is today (matching only year, month and
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldContain.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldContain.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldContain.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldContain.java
@@ -20,8 +20,8 @@
 import java.nio.file.Path;
 import java.util.List;
 
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies a group of elements contains a given set of values failed.
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldContainAnyOf.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldContainAnyOf.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldContainAnyOf.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldContainAnyOf.java
@@ -12,7 +12,7 @@
  */
 package org.assertj.core.error;
 
-import org.assertj.core.internal.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
 
 public class ShouldContainAnyOf extends BasicErrorMessageFactory {
 
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldContainAtIndex.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldContainAtIndex.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldContainAtIndex.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldContainAtIndex.java
@@ -13,8 +13,8 @@
 package org.assertj.core.error;
 
 import org.assertj.core.data.Index;
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies a group of elements contains a value at a given index
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldContainCharSequence.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldContainCharSequence.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldContainCharSequence.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldContainCharSequence.java
@@ -17,8 +17,8 @@
 
 import java.util.Set;
 
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies that a {@code CharSequence} contains another
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldContainCharSequenceOnlyOnce.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldContainCharSequenceOnlyOnce.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldContainCharSequenceOnlyOnce.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldContainCharSequenceOnlyOnce.java
@@ -12,8 +12,8 @@
  */
 package org.assertj.core.error;
 
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies that a {@code CharSequence} contains another {@code CharSequence} only
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldContainExactly.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldContainExactly.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldContainExactly.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldContainExactly.java
@@ -17,9 +17,9 @@
 
 import java.util.List;
 import org.assertj.core.configuration.Configuration;
-import org.assertj.core.internal.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
 import org.assertj.core.internal.IndexedDiff;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies a group of elements contains exactly a given set
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldContainExactlyInAnyOrder.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldContainExactlyInAnyOrder.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldContainExactlyInAnyOrder.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldContainExactlyInAnyOrder.java
@@ -16,7 +16,7 @@
 import static org.assertj.core.error.ShouldContainExactlyInAnyOrder.ErrorType.NOT_FOUND_ONLY;
 import static org.assertj.core.util.IterableUtil.isNullOrEmpty;
 
-import org.assertj.core.internal.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies a group of elements contains exactly a given set
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldContainOnly.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldContainOnly.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldContainOnly.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldContainOnly.java
@@ -17,8 +17,8 @@
 import static org.assertj.core.error.ShouldContainOnly.ErrorType.NOT_FOUND_ONLY;
 import static org.assertj.core.util.IterableUtil.isNullOrEmpty;
 
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies a group of elements contains only a given set of
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldContainOnlyKeys.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldContainOnlyKeys.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldContainOnlyKeys.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldContainOnlyKeys.java
@@ -14,8 +14,8 @@
 
 import static org.assertj.core.util.IterableUtil.isNullOrEmpty;
 
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies map contains only a given set of keys and
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldContainSequence.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldContainSequence.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldContainSequence.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldContainSequence.java
@@ -12,8 +12,8 @@
  */
 package org.assertj.core.error;
 
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies that a group of elements contains a sequence of values
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldContainSequenceOfCharSequence.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldContainSequenceOfCharSequence.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldContainSequenceOfCharSequence.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldContainSequenceOfCharSequence.java
@@ -12,8 +12,8 @@
  */
 package org.assertj.core.error;
 
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies that a {@code CharSequence} contains a Sequence of
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldContainSubsequence.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldContainSubsequence.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldContainSubsequence.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldContainSubsequence.java
@@ -17,8 +17,8 @@
 
 import java.lang.reflect.Array;
 
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.util.Arrays;
 import org.assertj.core.util.IterableUtil;
 
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldContainSubsequenceOfCharSequence.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldContainSubsequenceOfCharSequence.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldContainSubsequenceOfCharSequence.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldContainSubsequenceOfCharSequence.java
@@ -15,8 +15,8 @@
 import static java.util.stream.Collectors.joining;
 
 import java.util.Map;
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies that a {@code CharSequence} contains a Subsequence of
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldContainsOnlyOnce.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldContainsOnlyOnce.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldContainsOnlyOnce.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldContainsOnlyOnce.java
@@ -16,8 +16,8 @@
 
 import java.util.Set;
 
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies a group of elements contains only a given set of
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldEndWith.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldEndWith.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldEndWith.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldEndWith.java
@@ -12,8 +12,8 @@
  */
 package org.assertj.core.error;
 
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies that a group of elements ends with a given value or
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldEndWithIgnoringCase.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldEndWithIgnoringCase.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldEndWithIgnoringCase.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldEndWithIgnoringCase.java
@@ -12,7 +12,7 @@
  */
 package org.assertj.core.error;
 
-import org.assertj.core.internal.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies that {@link CharSequence} ends with a given value
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldNotBeBetween.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldNotBeBetween.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldNotBeBetween.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldNotBeBetween.java
@@ -14,8 +14,8 @@
 
 import java.util.Date;
 
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies that a {@link Date} is not between start - end dates
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldNotBeEqual.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldNotBeEqual.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldNotBeEqual.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldNotBeEqual.java
@@ -12,8 +12,8 @@
  */
 package org.assertj.core.error;
 
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies that two objects are not equal failed.
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldNotBeIn.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldNotBeIn.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldNotBeIn.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldNotBeIn.java
@@ -12,8 +12,8 @@
  */
 package org.assertj.core.error;
 
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies that a value is not in a group of values (e.g. an array or
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldNotContain.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldNotContain.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldNotContain.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldNotContain.java
@@ -18,8 +18,8 @@
 import java.nio.file.Path;
 import java.util.List;
 
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies a group of elements does not contain a given set of values
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldNotContainAtIndex.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldNotContainAtIndex.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldNotContainAtIndex.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldNotContainAtIndex.java
@@ -13,8 +13,8 @@
 package org.assertj.core.error;
 
 import org.assertj.core.data.Index;
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies a group of elements does not contain a value at a given
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldNotContainCharSequence.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldNotContainCharSequence.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldNotContainCharSequence.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldNotContainCharSequence.java
@@ -17,8 +17,8 @@
 
 import java.util.Set;
 
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies that a {@code CharSequence} does not contain another
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldNotContainSequence.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldNotContainSequence.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldNotContainSequence.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldNotContainSequence.java
@@ -12,8 +12,8 @@
  */
 package org.assertj.core.error;
 
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies that a group of elements does not contain a
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldNotContainSubsequence.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldNotContainSubsequence.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldNotContainSubsequence.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldNotContainSubsequence.java
@@ -12,8 +12,8 @@
  */
 package org.assertj.core.error;
 
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies that a group of elements does not contains a
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldNotEndWith.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldNotEndWith.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldNotEndWith.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldNotEndWith.java
@@ -12,8 +12,8 @@
  */
 package org.assertj.core.error;
 
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies that a group of elements does not end with a
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldNotEndWithIgnoringCase.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldNotEndWithIgnoringCase.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldNotEndWithIgnoringCase.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldNotEndWithIgnoringCase.java
@@ -12,7 +12,7 @@
  */
 package org.assertj.core.error;
 
-import org.assertj.core.internal.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies that {@link CharSequence} does not end with a
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldNotHaveDuplicates.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldNotHaveDuplicates.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldNotHaveDuplicates.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldNotHaveDuplicates.java
@@ -12,8 +12,8 @@
  */
 package org.assertj.core.error;
 
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies a group of elements is does not have duplicates failed. A
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldNotStartWith.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldNotStartWith.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldNotStartWith.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldNotStartWith.java
@@ -12,8 +12,8 @@
  */
 package org.assertj.core.error;
 
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies that a group of elements does not start with a
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldNotStartWithIgnoringCase.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldNotStartWithIgnoringCase.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldNotStartWithIgnoringCase.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldNotStartWithIgnoringCase.java
@@ -12,7 +12,7 @@
  */
 package org.assertj.core.error;
 
-import org.assertj.core.internal.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies {@link CharSequence} does not start with a
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldStartWith.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldStartWith.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldStartWith.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldStartWith.java
@@ -12,8 +12,8 @@
  */
 package org.assertj.core.error;
 
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies that a group of elements starts with a given value or
diff --git a/assertj-core/src/main/java/org/assertj/core/error/ShouldStartWithIgnoringCase.java b/assertj-core/src/main/java/org/assertj/core/error/ShouldStartWithIgnoringCase.java
--- a/assertj-core/src/main/java/org/assertj/core/error/ShouldStartWithIgnoringCase.java
+++ b/assertj-core/src/main/java/org/assertj/core/error/ShouldStartWithIgnoringCase.java
@@ -12,7 +12,7 @@
  */
 package org.assertj.core.error;
 
-import org.assertj.core.internal.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
 
 /**
  * Creates an error message indicating that an assertion that verifies {@link CharSequence} starts with a given value
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/Arrays.java b/assertj-core/src/main/java/org/assertj/core/internal/Arrays.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/Arrays.java
+++ b/assertj-core/src/main/java/org/assertj/core/internal/Arrays.java
@@ -90,6 +90,9 @@
 
 import org.assertj.core.api.AssertionInfo;
 import org.assertj.core.api.Condition;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.data.Index;
 import org.assertj.core.util.ArrayWrapperList;
 
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/Arrays2D.java b/assertj-core/src/main/java/org/assertj/core/internal/Arrays2D.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/Arrays2D.java
+++ b/assertj-core/src/main/java/org/assertj/core/internal/Arrays2D.java
@@ -29,6 +29,7 @@
 import java.lang.reflect.Array;
 
 import org.assertj.core.api.AssertionInfo;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.data.Index;
 import org.assertj.core.error.ShouldHaveDimensions;
 
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/BigDecimals.java b/assertj-core/src/main/java/org/assertj/core/internal/BigDecimals.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/BigDecimals.java
+++ b/assertj-core/src/main/java/org/assertj/core/internal/BigDecimals.java
@@ -19,6 +19,8 @@
 import java.math.BigDecimal;
 
 import org.assertj.core.api.AssertionInfo;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * Reusable assertions for <code>{@link BigDecimal}</code>s.
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/BigIntegers.java b/assertj-core/src/main/java/org/assertj/core/internal/BigIntegers.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/BigIntegers.java
+++ b/assertj-core/src/main/java/org/assertj/core/internal/BigIntegers.java
@@ -12,6 +12,9 @@
  */
 package org.assertj.core.internal;
 
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
+
 import static java.math.BigInteger.ONE;
 import static java.math.BigInteger.ZERO;
 
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/ByteArrays.java b/assertj-core/src/main/java/org/assertj/core/internal/ByteArrays.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/ByteArrays.java
+++ b/assertj-core/src/main/java/org/assertj/core/internal/ByteArrays.java
@@ -16,6 +16,8 @@
 
 import org.assertj.core.api.ArraySortedAssert;
 import org.assertj.core.api.AssertionInfo;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.data.Index;
 
 /**
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/Bytes.java b/assertj-core/src/main/java/org/assertj/core/internal/Bytes.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/Bytes.java
+++ b/assertj-core/src/main/java/org/assertj/core/internal/Bytes.java
@@ -12,6 +12,8 @@
  */
 package org.assertj.core.internal;
 
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+
 /**
  * Reusable assertions for <code>{@link Byte}</code>s.
  *
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/CharArrays.java b/assertj-core/src/main/java/org/assertj/core/internal/CharArrays.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/CharArrays.java
+++ b/assertj-core/src/main/java/org/assertj/core/internal/CharArrays.java
@@ -16,6 +16,8 @@
 
 import org.assertj.core.api.ArraySortedAssert;
 import org.assertj.core.api.AssertionInfo;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.data.Index;
 
 /**
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/Characters.java b/assertj-core/src/main/java/org/assertj/core/internal/Characters.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/Characters.java
+++ b/assertj-core/src/main/java/org/assertj/core/internal/Characters.java
@@ -18,6 +18,7 @@
 import static org.assertj.core.error.ShouldBeUpperCase.shouldBeUpperCase;
 
 import org.assertj.core.api.AssertionInfo;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
 
 /**
  * Reusable assertions for <code>{@link Character}</code>s.
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/Classes.java b/assertj-core/src/main/java/org/assertj/core/internal/Classes.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/Classes.java
+++ b/assertj-core/src/main/java/org/assertj/core/internal/Classes.java
@@ -42,6 +42,8 @@
 import java.util.SortedSet;
 
 import org.assertj.core.api.AssertionInfo;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.util.Arrays;
 
 /**
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/Comparables.java b/assertj-core/src/main/java/org/assertj/core/internal/Comparables.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/Comparables.java
+++ b/assertj-core/src/main/java/org/assertj/core/internal/Comparables.java
@@ -22,6 +22,9 @@
 import java.util.Comparator;
 
 import org.assertj.core.api.AssertionInfo;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.error.ErrorMessageFactory;
 import org.assertj.core.error.ShouldBeAfter;
 import org.assertj.core.error.ShouldBeAfterOrEqualTo;
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/ConfigurableRecursiveFieldByFieldComparator.java b/assertj-core/src/main/java/org/assertj/core/internal/ConfigurableRecursiveFieldByFieldComparator.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/ConfigurableRecursiveFieldByFieldComparator.java
+++ b/assertj-core/src/main/java/org/assertj/core/internal/ConfigurableRecursiveFieldByFieldComparator.java
@@ -13,7 +13,7 @@
 package org.assertj.core.internal;
 
 import static java.util.Objects.requireNonNull;
-import static org.assertj.core.internal.ComparatorBasedComparisonStrategy.NOT_EQUAL;
+import static org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy.NOT_EQUAL;
 
 import java.util.Comparator;
 import java.util.Objects;
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/Dates.java b/assertj-core/src/main/java/org/assertj/core/internal/Dates.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/Dates.java
+++ b/assertj-core/src/main/java/org/assertj/core/internal/Dates.java
@@ -55,6 +55,9 @@
 import java.util.concurrent.TimeUnit;
 
 import org.assertj.core.api.AssertionInfo;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.error.ShouldBeEqualWithTimePrecision;
 
 /**
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/DoubleArrays.java b/assertj-core/src/main/java/org/assertj/core/internal/DoubleArrays.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/DoubleArrays.java
+++ b/assertj-core/src/main/java/org/assertj/core/internal/DoubleArrays.java
@@ -16,6 +16,8 @@
 
 import org.assertj.core.api.ArraySortedAssert;
 import org.assertj.core.api.AssertionInfo;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.data.Index;
 
 /**
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/Doubles.java b/assertj-core/src/main/java/org/assertj/core/internal/Doubles.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/Doubles.java
+++ b/assertj-core/src/main/java/org/assertj/core/internal/Doubles.java
@@ -12,6 +12,9 @@
  */
 package org.assertj.core.internal;
 
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
+
 import static java.lang.Math.abs;
 
 /**
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/ExtendedByTypesComparator.java b/assertj-core/src/main/java/org/assertj/core/internal/ExtendedByTypesComparator.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/ExtendedByTypesComparator.java
+++ b/assertj-core/src/main/java/org/assertj/core/internal/ExtendedByTypesComparator.java
@@ -12,7 +12,7 @@
  */
 package org.assertj.core.internal;
 
-import static org.assertj.core.internal.ComparatorBasedComparisonStrategy.NOT_EQUAL;
+import static org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy.NOT_EQUAL;
 
 import java.util.Comparator;
 import java.util.Objects;
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/FloatArrays.java b/assertj-core/src/main/java/org/assertj/core/internal/FloatArrays.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/FloatArrays.java
+++ b/assertj-core/src/main/java/org/assertj/core/internal/FloatArrays.java
@@ -16,6 +16,8 @@
 
 import org.assertj.core.api.ArraySortedAssert;
 import org.assertj.core.api.AssertionInfo;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.data.Index;
 
 /**
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/Floats.java b/assertj-core/src/main/java/org/assertj/core/internal/Floats.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/Floats.java
+++ b/assertj-core/src/main/java/org/assertj/core/internal/Floats.java
@@ -12,6 +12,9 @@
  */
 package org.assertj.core.internal;
 
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
+
 import static java.lang.Math.abs;
 
 /**
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/IntArrays.java b/assertj-core/src/main/java/org/assertj/core/internal/IntArrays.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/IntArrays.java
+++ b/assertj-core/src/main/java/org/assertj/core/internal/IntArrays.java
@@ -16,6 +16,8 @@
 
 import org.assertj.core.api.ArraySortedAssert;
 import org.assertj.core.api.AssertionInfo;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.data.Index;
 
 /**
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/Integers.java b/assertj-core/src/main/java/org/assertj/core/internal/Integers.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/Integers.java
+++ b/assertj-core/src/main/java/org/assertj/core/internal/Integers.java
@@ -12,6 +12,9 @@
  */
 package org.assertj.core.internal;
 
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
+
 /**
  * Reusable assertions for <code>{@link Integer}</code>s.
  * 
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/IterableDiff.java b/assertj-core/src/main/java/org/assertj/core/internal/IterableDiff.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/IterableDiff.java
+++ b/assertj-core/src/main/java/org/assertj/core/internal/IterableDiff.java
@@ -12,6 +12,9 @@
  */
 package org.assertj.core.internal;
 
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
+
 import static java.util.Collections.unmodifiableList;
 import static org.assertj.core.util.Lists.newArrayList;
 
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/Iterables.java b/assertj-core/src/main/java/org/assertj/core/internal/Iterables.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/Iterables.java
+++ b/assertj-core/src/main/java/org/assertj/core/internal/Iterables.java
@@ -105,6 +105,9 @@
 
 import org.assertj.core.api.AssertionInfo;
 import org.assertj.core.api.Condition;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.configuration.Configuration;
 import org.assertj.core.error.UnsatisfiedRequirement;
 import org.assertj.core.error.ZippedElementsShouldSatisfy.ZipSatisfyError;
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/Lists.java b/assertj-core/src/main/java/org/assertj/core/internal/Lists.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/Lists.java
+++ b/assertj-core/src/main/java/org/assertj/core/internal/Lists.java
@@ -30,6 +30,9 @@
 
 import org.assertj.core.api.AssertionInfo;
 import org.assertj.core.api.Condition;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.data.Index;
 
 /**
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/LongArrays.java b/assertj-core/src/main/java/org/assertj/core/internal/LongArrays.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/LongArrays.java
+++ b/assertj-core/src/main/java/org/assertj/core/internal/LongArrays.java
@@ -16,6 +16,8 @@
 
 import org.assertj.core.api.ArraySortedAssert;
 import org.assertj.core.api.AssertionInfo;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.data.Index;
 
 /**
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/Longs.java b/assertj-core/src/main/java/org/assertj/core/internal/Longs.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/Longs.java
+++ b/assertj-core/src/main/java/org/assertj/core/internal/Longs.java
@@ -12,6 +12,8 @@
  */
 package org.assertj.core.internal;
 
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+
 /**
  * Reusable assertions for <code>{@link Long}</code>s.
  * 
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/Numbers.java b/assertj-core/src/main/java/org/assertj/core/internal/Numbers.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/Numbers.java
+++ b/assertj-core/src/main/java/org/assertj/core/internal/Numbers.java
@@ -24,6 +24,7 @@
 import java.util.Objects;
 
 import org.assertj.core.api.AssertionInfo;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
 import org.assertj.core.data.Offset;
 import org.assertj.core.data.Percentage;
 
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/ObjectArrays.java b/assertj-core/src/main/java/org/assertj/core/internal/ObjectArrays.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/ObjectArrays.java
+++ b/assertj-core/src/main/java/org/assertj/core/internal/ObjectArrays.java
@@ -33,6 +33,8 @@
 import org.assertj.core.api.ArraySortedAssert;
 import org.assertj.core.api.AssertionInfo;
 import org.assertj.core.api.Condition;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.data.Index;
 
 /**
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/Objects.java b/assertj-core/src/main/java/org/assertj/core/internal/Objects.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/Objects.java
+++ b/assertj-core/src/main/java/org/assertj/core/internal/Objects.java
@@ -67,6 +67,9 @@
 import java.util.Set;
 
 import org.assertj.core.api.AssertionInfo;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.error.GroupTypeDescription;
 import org.assertj.core.internal.DeepDifference.Difference;
 import org.assertj.core.util.introspection.FieldSupport;
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/RealNumbers.java b/assertj-core/src/main/java/org/assertj/core/internal/RealNumbers.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/RealNumbers.java
+++ b/assertj-core/src/main/java/org/assertj/core/internal/RealNumbers.java
@@ -20,6 +20,7 @@
 import java.math.BigDecimal;
 
 import org.assertj.core.api.AssertionInfo;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
 
 /**
  * Base class of reusable assertions for real numbers (float and double).
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/ShortArrays.java b/assertj-core/src/main/java/org/assertj/core/internal/ShortArrays.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/ShortArrays.java
+++ b/assertj-core/src/main/java/org/assertj/core/internal/ShortArrays.java
@@ -16,6 +16,8 @@
 
 import org.assertj.core.api.ArraySortedAssert;
 import org.assertj.core.api.AssertionInfo;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.data.Index;
 
 /**
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/Shorts.java b/assertj-core/src/main/java/org/assertj/core/internal/Shorts.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/Shorts.java
+++ b/assertj-core/src/main/java/org/assertj/core/internal/Shorts.java
@@ -12,6 +12,9 @@
  */
 package org.assertj.core.internal;
 
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
+
 import static java.lang.Math.abs;
 
 /**
diff --git a/assertj-core/src/main/java/org/assertj/core/internal/Strings.java b/assertj-core/src/main/java/org/assertj/core/internal/Strings.java
--- a/assertj-core/src/main/java/org/assertj/core/internal/Strings.java
+++ b/assertj-core/src/main/java/org/assertj/core/internal/Strings.java
@@ -94,6 +94,8 @@
 import java.util.stream.Collectors;
 
 import org.assertj.core.api.AssertionInfo;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 
 /**
  * @author Alex Ruiz
diff --git a/assertj-core/src/main/java/org/assertj/core/presentation/StandardRepresentation.java b/assertj-core/src/main/java/org/assertj/core/presentation/StandardRepresentation.java
--- a/assertj-core/src/main/java/org/assertj/core/presentation/StandardRepresentation.java
+++ b/assertj-core/src/main/java/org/assertj/core/presentation/StandardRepresentation.java
@@ -67,7 +67,7 @@
 import org.assertj.core.configuration.ConfigurationProvider;
 import org.assertj.core.data.MapEntry;
 import org.assertj.core.groups.Tuple;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.util.Closeables;
 import org.assertj.core.util.diff.ChangeDelta;
 import org.assertj.core.util.diff.DeleteDelta;
diff --git a/assertj-guava/src/main/java/org/assertj/guava/api/OptionalAssert.java b/assertj-guava/src/main/java/org/assertj/guava/api/OptionalAssert.java
--- a/assertj-guava/src/main/java/org/assertj/guava/api/OptionalAssert.java
+++ b/assertj-guava/src/main/java/org/assertj/guava/api/OptionalAssert.java
@@ -60,13 +60,12 @@ protected Optional<T> getActual() {
    * @throws AssertionError if the actual {@link Optional} is {@code null}.
    * @throws AssertionError if the actual {@link Optional} contains nothing or does not have the given value.
    */
-  @SuppressWarnings("deprecation")
   public OptionalAssert<T> contains(final Object value) {
     isNotNull();
     if (!actual.isPresent()) {
       throw assertionError(shouldBePresentWithValue(value));
     }
-    if (!areEqual(actual.get(), value)) {
+    if (!getComparisonStrategy().areEqual(actual.get(), value)) {
       throw assertionError(shouldBePresentWithValue(actual, value));
     }
     return this;

diff --git a/assertj-core/src/test/java/org/assertj/core/api/AbstractAssert_areEqual_Test.java b/assertj-core/src/test/java/org/assertj/core/api/AbstractAssert_areEqual_Test.java
deleted file mode 100644
--- a/assertj-core/src/test/java/org/assertj/core/api/AbstractAssert_areEqual_Test.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- *
- * Copyright 2012-2025 the original author or authors.
- */
-package org.assertj.core.api;
-
-import static org.assertj.core.api.BDDAssertions.then;
-import static org.mockito.Answers.CALLS_REAL_METHODS;
-import static org.mockito.Mockito.verify;
-
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.Objects;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.mockito.Mock;
-import org.mockito.junit.jupiter.MockitoExtension;
-
-@ExtendWith(MockitoExtension.class)
-class AbstractAssert_areEqual_Test {
-
-  @Mock(answer = CALLS_REAL_METHODS)
-  private AbstractAssert<?, Object> underTest;
-
-  @Mock
-  private ComparisonStrategy comparisonStrategy;
-
-  @Test
-  @SuppressWarnings("deprecation")
-  void should_delegate_to_ComparableAssert() {
-    // GIVEN
-    underTest.objects = new Objects(comparisonStrategy);
-    // WHEN
-    underTest.areEqual(42, 43);
-    // THEN
-    verify(comparisonStrategy).areEqual(42, 43);
-  }
-
-  @Test
-  void should_be_protected() throws NoSuchMethodException {
-    // GIVEN
-    Method areEqual = AbstractAssert.class.getDeclaredMethod("areEqual", Object.class, Object.class);
-    // WHEN
-    boolean isProtected = Modifier.isProtected(areEqual.getModifiers());
-    // THEN
-    then(isProtected).isTrue();
-  }
-
-}
diff --git a/assertj-core/src/test/java/org/assertj/core/api/AbstractOffsetDateTimeAssertBaseTest.java b/assertj-core/src/test/java/org/assertj/core/api/AbstractOffsetDateTimeAssertBaseTest.java
--- a/assertj-core/src/test/java/org/assertj/core/api/AbstractOffsetDateTimeAssertBaseTest.java
+++ b/assertj-core/src/test/java/org/assertj/core/api/AbstractOffsetDateTimeAssertBaseTest.java
@@ -18,7 +18,7 @@
 import java.time.ZoneOffset;
 
 import org.assertj.core.internal.Comparables;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.OffsetDateTimeByInstantComparator;
 
 public abstract class AbstractOffsetDateTimeAssertBaseTest extends TemporalAssertBaseTest<OffsetDateTimeAssert, OffsetDateTime> {
diff --git a/assertj-core/src/test/java/org/assertj/core/api/AbstractZonedDateTimeAssertBaseTest.java b/assertj-core/src/test/java/org/assertj/core/api/AbstractZonedDateTimeAssertBaseTest.java
--- a/assertj-core/src/test/java/org/assertj/core/api/AbstractZonedDateTimeAssertBaseTest.java
+++ b/assertj-core/src/test/java/org/assertj/core/api/AbstractZonedDateTimeAssertBaseTest.java
@@ -19,7 +19,7 @@
 
 import org.assertj.core.internal.ChronoZonedDateTimeByInstantComparator;
 import org.assertj.core.internal.Comparables;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 
 public abstract class AbstractZonedDateTimeAssertBaseTest extends TemporalAssertBaseTest<ZonedDateTimeAssert, ZonedDateTime> {
 
diff --git a/assertj-core/src/test/java/org/assertj/core/api/BaseTestTemplate.java b/assertj-core/src/test/java/org/assertj/core/api/BaseTestTemplate.java
--- a/assertj-core/src/test/java/org/assertj/core/api/BaseTestTemplate.java
+++ b/assertj-core/src/test/java/org/assertj/core/api/BaseTestTemplate.java
@@ -21,7 +21,7 @@
 import java.util.Comparator;
 import org.assertj.core.api.abstract_.AbstractAssert_isNull_Test;
 import org.assertj.core.error.AssertionErrorCreator;
-import org.assertj.core.internal.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
 import org.assertj.core.internal.Conditions;
 import org.assertj.core.internal.Objects;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/assertj-core/src/test/java/org/assertj/core/api/atomic/referencearray/AtomicReferenceArrayAssert_usingComparatorForType_Test.java b/assertj-core/src/test/java/org/assertj/core/api/atomic/referencearray/AtomicReferenceArrayAssert_usingComparatorForType_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/api/atomic/referencearray/AtomicReferenceArrayAssert_usingComparatorForType_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/api/atomic/referencearray/AtomicReferenceArrayAssert_usingComparatorForType_Test.java
@@ -23,7 +23,7 @@
 
 import org.assertj.core.api.AtomicReferenceArrayAssert;
 import org.assertj.core.api.AtomicReferenceArrayAssertBaseTest;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.ExtendedByTypesComparator;
 import org.assertj.core.internal.ObjectArrays;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/assertj-core/src/test/java/org/assertj/core/api/atomic/referencearray/AtomicReferenceArrayAssert_usingRecursiveFieldByFieldElementComparatorIgnoringFields_Test.java b/assertj-core/src/test/java/org/assertj/core/api/atomic/referencearray/AtomicReferenceArrayAssert_usingRecursiveFieldByFieldElementComparatorIgnoringFields_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/api/atomic/referencearray/AtomicReferenceArrayAssert_usingRecursiveFieldByFieldElementComparatorIgnoringFields_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/api/atomic/referencearray/AtomicReferenceArrayAssert_usingRecursiveFieldByFieldElementComparatorIgnoringFields_Test.java
@@ -17,9 +17,9 @@
 
 import org.assertj.core.api.AtomicReferenceArrayAssert;
 import org.assertj.core.api.AtomicReferenceArrayAssertBaseTest;
+import org.assertj.core.api.comparisonstrategy.AtomicReferenceArrayElementComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.api.recursive.comparison.RecursiveComparisonConfiguration;
-import org.assertj.core.internal.AtomicReferenceArrayElementComparisonStrategy;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.ConfigurableRecursiveFieldByFieldComparator;
 import org.assertj.core.internal.ObjectArrays;
 import org.assertj.core.testkit.Name;
diff --git a/assertj-core/src/test/java/org/assertj/core/api/atomic/referencearray/AtomicReferenceArrayAssert_usingRecursiveFieldByFieldElementComparatorOnFields_Test.java b/assertj-core/src/test/java/org/assertj/core/api/atomic/referencearray/AtomicReferenceArrayAssert_usingRecursiveFieldByFieldElementComparatorOnFields_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/api/atomic/referencearray/AtomicReferenceArrayAssert_usingRecursiveFieldByFieldElementComparatorOnFields_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/api/atomic/referencearray/AtomicReferenceArrayAssert_usingRecursiveFieldByFieldElementComparatorOnFields_Test.java
@@ -17,9 +17,9 @@
 
 import org.assertj.core.api.AtomicReferenceArrayAssert;
 import org.assertj.core.api.AtomicReferenceArrayAssertBaseTest;
+import org.assertj.core.api.comparisonstrategy.AtomicReferenceArrayElementComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.api.recursive.comparison.RecursiveComparisonConfiguration;
-import org.assertj.core.internal.AtomicReferenceArrayElementComparisonStrategy;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.ConfigurableRecursiveFieldByFieldComparator;
 import org.assertj.core.internal.ObjectArrays;
 import org.assertj.core.testkit.Name;
diff --git a/assertj-core/src/test/java/org/assertj/core/api/atomic/referencearray/AtomicReferenceArrayAssert_usingRecursiveFieldByFieldElementComparator_Test.java b/assertj-core/src/test/java/org/assertj/core/api/atomic/referencearray/AtomicReferenceArrayAssert_usingRecursiveFieldByFieldElementComparator_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/api/atomic/referencearray/AtomicReferenceArrayAssert_usingRecursiveFieldByFieldElementComparator_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/api/atomic/referencearray/AtomicReferenceArrayAssert_usingRecursiveFieldByFieldElementComparator_Test.java
@@ -23,9 +23,9 @@
 
 import org.assertj.core.api.AtomicReferenceArrayAssert;
 import org.assertj.core.api.AtomicReferenceArrayAssertBaseTest;
+import org.assertj.core.api.comparisonstrategy.AtomicReferenceArrayElementComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.api.recursive.comparison.RecursiveComparisonConfiguration;
-import org.assertj.core.internal.AtomicReferenceArrayElementComparisonStrategy;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.ConfigurableRecursiveFieldByFieldComparator;
 import org.assertj.core.internal.ObjectArrays;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/assertj-core/src/test/java/org/assertj/core/api/atomic/referencearray/AtomicReferenceArrayAssert_usingRecursiveFieldByFieldElementComparator_with_RecursiveComparisonConfiguration_Test.java b/assertj-core/src/test/java/org/assertj/core/api/atomic/referencearray/AtomicReferenceArrayAssert_usingRecursiveFieldByFieldElementComparator_with_RecursiveComparisonConfiguration_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/api/atomic/referencearray/AtomicReferenceArrayAssert_usingRecursiveFieldByFieldElementComparator_with_RecursiveComparisonConfiguration_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/api/atomic/referencearray/AtomicReferenceArrayAssert_usingRecursiveFieldByFieldElementComparator_with_RecursiveComparisonConfiguration_Test.java
@@ -16,9 +16,9 @@
 
 import org.assertj.core.api.AtomicReferenceArrayAssert;
 import org.assertj.core.api.AtomicReferenceArrayAssertBaseTest;
+import org.assertj.core.api.comparisonstrategy.AtomicReferenceArrayElementComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.api.recursive.comparison.RecursiveComparisonConfiguration;
-import org.assertj.core.internal.AtomicReferenceArrayElementComparisonStrategy;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.ConfigurableRecursiveFieldByFieldComparator;
 import org.assertj.core.internal.ObjectArrays;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/assertj-core/src/test/java/org/assertj/core/api/charsequence/CharSequenceAssert_containsIgnoringWhitespaces_Test.java b/assertj-core/src/test/java/org/assertj/core/api/charsequence/CharSequenceAssert_containsIgnoringWhitespaces_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/api/charsequence/CharSequenceAssert_containsIgnoringWhitespaces_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/api/charsequence/CharSequenceAssert_containsIgnoringWhitespaces_Test.java
@@ -25,8 +25,8 @@
 
 import java.util.Comparator;
 
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.testkit.CaseInsensitiveStringComparator;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
diff --git a/assertj-core/src/test/java/org/assertj/core/api/charsequence/CharSequenceAssert_containsPatternSatisfying_Pattern_Test.java b/assertj-core/src/test/java/org/assertj/core/api/charsequence/CharSequenceAssert_containsPatternSatisfying_Pattern_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/api/charsequence/CharSequenceAssert_containsPatternSatisfying_Pattern_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/api/charsequence/CharSequenceAssert_containsPatternSatisfying_Pattern_Test.java
@@ -22,7 +22,7 @@
 import java.util.regex.Pattern;
 
 import org.assertj.core.api.CharSequenceAssert;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/assertj-core/src/test/java/org/assertj/core/api/charsequence/CharSequenceAssert_containsPatternSatisfying_String_Test.java b/assertj-core/src/test/java/org/assertj/core/api/charsequence/CharSequenceAssert_containsPatternSatisfying_String_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/api/charsequence/CharSequenceAssert_containsPatternSatisfying_String_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/api/charsequence/CharSequenceAssert_containsPatternSatisfying_String_Test.java
@@ -21,7 +21,7 @@
 import java.util.function.Consumer;
 
 import org.assertj.core.api.CharSequenceAssert;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/assertj-core/src/test/java/org/assertj/core/api/charsequence/CharSequenceAssert_matchesSatisfying_Pattern_Test.java b/assertj-core/src/test/java/org/assertj/core/api/charsequence/CharSequenceAssert_matchesSatisfying_Pattern_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/api/charsequence/CharSequenceAssert_matchesSatisfying_Pattern_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/api/charsequence/CharSequenceAssert_matchesSatisfying_Pattern_Test.java
@@ -22,7 +22,7 @@
 import java.util.regex.Pattern;
 
 import org.assertj.core.api.CharSequenceAssert;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/assertj-core/src/test/java/org/assertj/core/api/charsequence/CharSequenceAssert_matchesSatisfying_String_Test.java b/assertj-core/src/test/java/org/assertj/core/api/charsequence/CharSequenceAssert_matchesSatisfying_String_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/api/charsequence/CharSequenceAssert_matchesSatisfying_String_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/api/charsequence/CharSequenceAssert_matchesSatisfying_String_Test.java
@@ -21,7 +21,7 @@
 import java.util.function.Consumer;
 
 import org.assertj.core.api.CharSequenceAssert;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/assertj-core/src/test/java/org/assertj/core/api/iterable/IterableAssert_usingComparatorForType_Test.java b/assertj-core/src/test/java/org/assertj/core/api/iterable/IterableAssert_usingComparatorForType_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/api/iterable/IterableAssert_usingComparatorForType_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/api/iterable/IterableAssert_usingComparatorForType_Test.java
@@ -24,7 +24,7 @@
 
 import org.assertj.core.api.ConcreteIterableAssert;
 import org.assertj.core.api.IterableAssertBaseTest;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.ExtendedByTypesComparator;
 import org.assertj.core.internal.Iterables;
 import org.assertj.core.testkit.Jedi;
diff --git a/assertj-core/src/test/java/org/assertj/core/api/iterable/IterableAssert_usingRecursiveFieldByFieldElementComparatorIgnoringFields_Test.java b/assertj-core/src/test/java/org/assertj/core/api/iterable/IterableAssert_usingRecursiveFieldByFieldElementComparatorIgnoringFields_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/api/iterable/IterableAssert_usingRecursiveFieldByFieldElementComparatorIgnoringFields_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/api/iterable/IterableAssert_usingRecursiveFieldByFieldElementComparatorIgnoringFields_Test.java
@@ -17,10 +17,10 @@
 
 import org.assertj.core.api.ConcreteIterableAssert;
 import org.assertj.core.api.IterableAssertBaseTest;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.IterableElementComparisonStrategy;
 import org.assertj.core.api.recursive.comparison.RecursiveComparisonConfiguration;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.ConfigurableRecursiveFieldByFieldComparator;
-import org.assertj.core.internal.IterableElementComparisonStrategy;
 import org.assertj.core.internal.Iterables;
 import org.assertj.core.testkit.Name;
 import org.assertj.core.testkit.Player;
diff --git a/assertj-core/src/test/java/org/assertj/core/api/iterable/IterableAssert_usingRecursiveFieldByFieldElementComparatorOnFields_Test.java b/assertj-core/src/test/java/org/assertj/core/api/iterable/IterableAssert_usingRecursiveFieldByFieldElementComparatorOnFields_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/api/iterable/IterableAssert_usingRecursiveFieldByFieldElementComparatorOnFields_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/api/iterable/IterableAssert_usingRecursiveFieldByFieldElementComparatorOnFields_Test.java
@@ -17,10 +17,10 @@
 
 import org.assertj.core.api.ConcreteIterableAssert;
 import org.assertj.core.api.IterableAssertBaseTest;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.IterableElementComparisonStrategy;
 import org.assertj.core.api.recursive.comparison.RecursiveComparisonConfiguration;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.ConfigurableRecursiveFieldByFieldComparator;
-import org.assertj.core.internal.IterableElementComparisonStrategy;
 import org.assertj.core.internal.Iterables;
 import org.assertj.core.testkit.Name;
 import org.assertj.core.testkit.Player;
diff --git a/assertj-core/src/test/java/org/assertj/core/api/iterable/IterableAssert_usingRecursiveFieldByFieldElementComparator_Test.java b/assertj-core/src/test/java/org/assertj/core/api/iterable/IterableAssert_usingRecursiveFieldByFieldElementComparator_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/api/iterable/IterableAssert_usingRecursiveFieldByFieldElementComparator_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/api/iterable/IterableAssert_usingRecursiveFieldByFieldElementComparator_Test.java
@@ -25,10 +25,10 @@
 
 import org.assertj.core.api.ConcreteIterableAssert;
 import org.assertj.core.api.IterableAssertBaseTest;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.IterableElementComparisonStrategy;
 import org.assertj.core.api.recursive.comparison.RecursiveComparisonConfiguration;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.ConfigurableRecursiveFieldByFieldComparator;
-import org.assertj.core.internal.IterableElementComparisonStrategy;
 import org.assertj.core.internal.Iterables;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/assertj-core/src/test/java/org/assertj/core/api/iterable/IterableAssert_usingRecursiveFieldByFieldElementComparator_with_RecursiveComparisonConfiguration_Test.java b/assertj-core/src/test/java/org/assertj/core/api/iterable/IterableAssert_usingRecursiveFieldByFieldElementComparator_with_RecursiveComparisonConfiguration_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/api/iterable/IterableAssert_usingRecursiveFieldByFieldElementComparator_with_RecursiveComparisonConfiguration_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/api/iterable/IterableAssert_usingRecursiveFieldByFieldElementComparator_with_RecursiveComparisonConfiguration_Test.java
@@ -17,10 +17,10 @@
 
 import org.assertj.core.api.ConcreteIterableAssert;
 import org.assertj.core.api.IterableAssertBaseTest;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.IterableElementComparisonStrategy;
 import org.assertj.core.api.recursive.comparison.RecursiveComparisonConfiguration;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.ConfigurableRecursiveFieldByFieldComparator;
-import org.assertj.core.internal.IterableElementComparisonStrategy;
 import org.assertj.core.internal.Iterables;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/assertj-core/src/test/java/org/assertj/core/api/objectarray/ObjectArrayAssert_usingComparatorForType_Test.java b/assertj-core/src/test/java/org/assertj/core/api/objectarray/ObjectArrayAssert_usingComparatorForType_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/api/objectarray/ObjectArrayAssert_usingComparatorForType_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/api/objectarray/ObjectArrayAssert_usingComparatorForType_Test.java
@@ -22,7 +22,7 @@
 
 import org.assertj.core.api.ObjectArrayAssert;
 import org.assertj.core.api.ObjectArrayAssertBaseTest;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.ExtendedByTypesComparator;
 import org.assertj.core.internal.ObjectArrays;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/assertj-core/src/test/java/org/assertj/core/api/objectarray/ObjectArrayAssert_usingRecursiveFieldByFieldElementComparatorIgnoringFields_Test.java b/assertj-core/src/test/java/org/assertj/core/api/objectarray/ObjectArrayAssert_usingRecursiveFieldByFieldElementComparatorIgnoringFields_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/api/objectarray/ObjectArrayAssert_usingRecursiveFieldByFieldElementComparatorIgnoringFields_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/api/objectarray/ObjectArrayAssert_usingRecursiveFieldByFieldElementComparatorIgnoringFields_Test.java
@@ -17,10 +17,10 @@
 
 import org.assertj.core.api.ObjectArrayAssert;
 import org.assertj.core.api.ObjectArrayAssertBaseTest;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ObjectArrayElementComparisonStrategy;
 import org.assertj.core.api.recursive.comparison.RecursiveComparisonConfiguration;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.ConfigurableRecursiveFieldByFieldComparator;
-import org.assertj.core.internal.ObjectArrayElementComparisonStrategy;
 import org.assertj.core.internal.ObjectArrays;
 import org.assertj.core.testkit.Name;
 import org.assertj.core.testkit.Player;
diff --git a/assertj-core/src/test/java/org/assertj/core/api/objectarray/ObjectArrayAssert_usingRecursiveFieldByFieldElementComparatorOnFields_Test.java b/assertj-core/src/test/java/org/assertj/core/api/objectarray/ObjectArrayAssert_usingRecursiveFieldByFieldElementComparatorOnFields_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/api/objectarray/ObjectArrayAssert_usingRecursiveFieldByFieldElementComparatorOnFields_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/api/objectarray/ObjectArrayAssert_usingRecursiveFieldByFieldElementComparatorOnFields_Test.java
@@ -17,10 +17,10 @@
 
 import org.assertj.core.api.ObjectArrayAssert;
 import org.assertj.core.api.ObjectArrayAssertBaseTest;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ObjectArrayElementComparisonStrategy;
 import org.assertj.core.api.recursive.comparison.RecursiveComparisonConfiguration;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.ConfigurableRecursiveFieldByFieldComparator;
-import org.assertj.core.internal.ObjectArrayElementComparisonStrategy;
 import org.assertj.core.internal.ObjectArrays;
 import org.assertj.core.testkit.Name;
 import org.assertj.core.testkit.Player;
diff --git a/assertj-core/src/test/java/org/assertj/core/api/objectarray/ObjectArrayAssert_usingRecursiveFieldByFieldElementComparator_Test.java b/assertj-core/src/test/java/org/assertj/core/api/objectarray/ObjectArrayAssert_usingRecursiveFieldByFieldElementComparator_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/api/objectarray/ObjectArrayAssert_usingRecursiveFieldByFieldElementComparator_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/api/objectarray/ObjectArrayAssert_usingRecursiveFieldByFieldElementComparator_Test.java
@@ -22,10 +22,10 @@
 
 import org.assertj.core.api.ObjectArrayAssert;
 import org.assertj.core.api.ObjectArrayAssertBaseTest;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ObjectArrayElementComparisonStrategy;
 import org.assertj.core.api.recursive.comparison.RecursiveComparisonConfiguration;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.ConfigurableRecursiveFieldByFieldComparator;
-import org.assertj.core.internal.ObjectArrayElementComparisonStrategy;
 import org.assertj.core.internal.ObjectArrays;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/assertj-core/src/test/java/org/assertj/core/api/objectarray/ObjectArrayAssert_usingRecursiveFieldByFieldElementComparator_with_RecursiveComparisonConfiguration_Test.java b/assertj-core/src/test/java/org/assertj/core/api/objectarray/ObjectArrayAssert_usingRecursiveFieldByFieldElementComparator_with_RecursiveComparisonConfiguration_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/api/objectarray/ObjectArrayAssert_usingRecursiveFieldByFieldElementComparator_with_RecursiveComparisonConfiguration_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/api/objectarray/ObjectArrayAssert_usingRecursiveFieldByFieldElementComparator_with_RecursiveComparisonConfiguration_Test.java
@@ -17,10 +17,10 @@
 
 import org.assertj.core.api.ObjectArrayAssert;
 import org.assertj.core.api.ObjectArrayAssertBaseTest;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ObjectArrayElementComparisonStrategy;
 import org.assertj.core.api.recursive.comparison.RecursiveComparisonConfiguration;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.ConfigurableRecursiveFieldByFieldComparator;
-import org.assertj.core.internal.ObjectArrayElementComparisonStrategy;
 import org.assertj.core.internal.ObjectArrays;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldBeAfterOrEqualTo_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldBeAfterOrEqualTo_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldBeAfterOrEqualTo_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldBeAfterOrEqualTo_create_Test.java
@@ -21,7 +21,7 @@
 
 import org.assertj.core.description.Description;
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.presentation.StandardRepresentation;
 import org.junit.jupiter.api.Test;
 
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldBeAfterYear_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldBeAfterYear_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldBeAfterYear_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldBeAfterYear_create_Test.java
@@ -20,7 +20,7 @@
 import static org.assertj.core.util.DateUtil.parse;
 
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.presentation.StandardRepresentation;
 import org.junit.jupiter.api.Test;
 
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldBeAfter_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldBeAfter_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldBeAfter_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldBeAfter_create_Test.java
@@ -21,7 +21,7 @@
 
 import org.assertj.core.description.Description;
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.presentation.StandardRepresentation;
 import org.junit.jupiter.api.Test;
 
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldBeBeforeOrEqualTo_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldBeBeforeOrEqualTo_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldBeBeforeOrEqualTo_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldBeBeforeOrEqualTo_create_Test.java
@@ -20,7 +20,7 @@
 import static org.assertj.core.util.DateUtil.parse;
 
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.junit.jupiter.api.Test;
 
 class ShouldBeBeforeOrEqualTo_create_Test {
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldBeBeforeYear_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldBeBeforeYear_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldBeBeforeYear_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldBeBeforeYear_create_Test.java
@@ -20,7 +20,7 @@
 import static org.assertj.core.util.DateUtil.parse;
 
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.presentation.StandardRepresentation;
 import org.junit.jupiter.api.Test;
 
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldBeBefore_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldBeBefore_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldBeBefore_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldBeBefore_create_Test.java
@@ -21,7 +21,7 @@
 
 import org.assertj.core.description.Description;
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldBeBetween_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldBeBetween_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldBeBetween_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldBeBetween_create_Test.java
@@ -20,7 +20,7 @@
 
 import org.assertj.core.description.Description;
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldBeEqual_newAssertionError_differentiating_expected_and_actual_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldBeEqual_newAssertionError_differentiating_expected_and_actual_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldBeEqual_newAssertionError_differentiating_expected_and_actual_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldBeEqual_newAssertionError_differentiating_expected_and_actual_Test.java
@@ -25,8 +25,8 @@
 import java.util.Comparator;
 
 import org.assertj.core.description.Description;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
-import org.assertj.core.internal.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
 import org.assertj.core.internal.TestDescription;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldBeGreaterOrEqual_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldBeGreaterOrEqual_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldBeGreaterOrEqual_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldBeGreaterOrEqual_create_Test.java
@@ -17,7 +17,7 @@
 
 import org.assertj.core.description.Description;
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.presentation.StandardRepresentation;
 import org.assertj.core.testkit.AbsValueComparator;
 import org.junit.jupiter.api.Test;
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldBeGreater_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldBeGreater_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldBeGreater_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldBeGreater_create_Test.java
@@ -18,7 +18,7 @@
 
 import org.assertj.core.description.Description;
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.presentation.StandardRepresentation;
 import org.assertj.core.testkit.AbsValueComparator;
 import org.junit.jupiter.api.Test;
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldBeIn_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldBeIn_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldBeIn_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldBeIn_create_Test.java
@@ -19,7 +19,7 @@
 
 import org.assertj.core.description.Description;
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.presentation.StandardRepresentation;
 import org.assertj.core.testkit.CaseInsensitiveStringComparator;
 import org.junit.jupiter.api.Test;
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldBeLessOrEqual_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldBeLessOrEqual_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldBeLessOrEqual_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldBeLessOrEqual_create_Test.java
@@ -17,7 +17,7 @@
 import static org.assertj.core.error.ShouldBeLessOrEqual.shouldBeLessOrEqual;
 
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.presentation.StandardRepresentation;
 import org.assertj.core.testkit.AbsValueComparator;
 import org.junit.jupiter.api.Test;
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldBeLess_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldBeLess_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldBeLess_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldBeLess_create_Test.java
@@ -17,7 +17,7 @@
 import static org.assertj.core.error.ShouldBeLess.shouldBeLess;
 
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.presentation.StandardRepresentation;
 import org.assertj.core.testkit.AbsValueComparator;
 import org.junit.jupiter.api.Test;
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldBeSubsetOf_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldBeSubsetOf_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldBeSubsetOf_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldBeSubsetOf_create_Test.java
@@ -17,7 +17,7 @@
 import static org.assertj.core.util.Lists.list;
 
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.presentation.StandardRepresentation;
 import org.assertj.core.testkit.CaseInsensitiveStringComparator;
 import org.junit.jupiter.api.Test;
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldBeSubstringOf_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldBeSubstringOf_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldBeSubstringOf_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldBeSubstringOf_create_Test.java
@@ -17,8 +17,8 @@
 import static org.assertj.core.error.ShouldBeSubstring.shouldBeSubstring;
 
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.presentation.StandardRepresentation;
 import org.assertj.core.testkit.CaseInsensitiveStringComparator;
 import org.junit.jupiter.api.Test;
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldContainAnyOf_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldContainAnyOf_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldContainAnyOf_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldContainAnyOf_create_Test.java
@@ -19,7 +19,7 @@
 import static org.assertj.core.util.Lists.list;
 
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.testkit.CaseInsensitiveStringComparator;
 import org.junit.jupiter.api.Test;
 
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldContainAtIndex_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldContainAtIndex_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldContainAtIndex_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldContainAtIndex_create_Test.java
@@ -19,7 +19,7 @@
 import static org.assertj.core.util.Lists.list;
 
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.presentation.StandardRepresentation;
 import org.assertj.core.testkit.CaseInsensitiveStringComparator;
 import org.junit.jupiter.api.Test;
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldContainCharSequenceOnlyOnce_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldContainCharSequenceOnlyOnce_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldContainCharSequenceOnlyOnce_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldContainCharSequenceOnlyOnce_create_Test.java
@@ -16,7 +16,7 @@
 import static org.assertj.core.error.ShouldContainCharSequenceOnlyOnce.shouldContainOnlyOnce;
 
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.TestDescription;
 import org.assertj.core.presentation.StandardRepresentation;
 import org.assertj.core.testkit.CaseInsensitiveStringComparator;
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldContainCharSequence_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldContainCharSequence_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldContainCharSequence_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldContainCharSequence_create_Test.java
@@ -23,13 +23,11 @@
 import static org.assertj.core.util.Sets.set;
 
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.testkit.CaseInsensitiveStringComparator;
 import org.junit.jupiter.api.Test;
 
-import java.util.Set;
-
 /**
  * @author Alex Ruiz
  * @author Yvonne Wang
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldContainExactlyInAnyOrder_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldContainExactlyInAnyOrder_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldContainExactlyInAnyOrder_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldContainExactlyInAnyOrder_create_Test.java
@@ -21,7 +21,7 @@
 import java.util.Collections;
 
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.presentation.StandardRepresentation;
 import org.assertj.core.testkit.CaseInsensitiveStringComparator;
 import org.junit.jupiter.api.Test;
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldContainExactly_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldContainExactly_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldContainExactly_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldContainExactly_create_Test.java
@@ -28,9 +28,9 @@
 import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.IndexedDiff;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.testkit.CaseInsensitiveStringComparator;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.condition.DisabledOnOs;
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldContainOnly_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldContainOnly_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldContainOnly_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldContainOnly_create_Test.java
@@ -28,7 +28,7 @@
 
 import org.assertj.core.data.MapEntry;
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.presentation.StandardRepresentation;
 import org.assertj.core.testkit.CaseInsensitiveStringComparator;
 import org.assertj.core.testkit.Jedi;
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldContainSequenceOfCharSequence_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldContainSequenceOfCharSequence_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldContainSequenceOfCharSequence_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldContainSequenceOfCharSequence_create_Test.java
@@ -18,7 +18,7 @@
 import static org.assertj.core.presentation.StandardRepresentation.STANDARD_REPRESENTATION;
 
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.testkit.CaseInsensitiveStringComparator;
 import org.junit.jupiter.api.Test;
 
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldContainSequence_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldContainSequence_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldContainSequence_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldContainSequence_create_Test.java
@@ -18,7 +18,7 @@
 import static org.assertj.core.util.Lists.list;
 
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.presentation.StandardRepresentation;
 import org.assertj.core.testkit.CaseInsensitiveStringComparator;
 import org.junit.jupiter.api.Test;
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldContainSubsequenceOfCharSequence_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldContainSubsequenceOfCharSequence_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldContainSubsequenceOfCharSequence_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldContainSubsequenceOfCharSequence_create_Test.java
@@ -22,7 +22,7 @@
 import java.util.stream.Stream;
 
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.presentation.StandardRepresentation;
 import org.assertj.core.testkit.CaseInsensitiveStringComparator;
 import org.junit.jupiter.api.Test;
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldContainSubsequence_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldContainSubsequence_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldContainSubsequence_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldContainSubsequence_create_Test.java
@@ -21,8 +21,8 @@
 import static org.assertj.core.util.Lists.list;
 
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.testkit.CaseInsensitiveStringComparator;
 import org.junit.jupiter.api.Test;
 
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldContain_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldContain_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldContain_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldContain_create_Test.java
@@ -29,7 +29,7 @@
 import java.util.Map;
 import org.assertj.core.data.MapEntry;
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.testkit.CaseInsensitiveStringComparator;
 import org.assertj.core.testkit.Jedi;
 import org.junit.jupiter.api.Test;
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldContainsOnlyOnce_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldContainsOnlyOnce_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldContainsOnlyOnce_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldContainsOnlyOnce_create_Test.java
@@ -20,7 +20,7 @@
 import static org.assertj.core.util.Sets.newLinkedHashSet;
 
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.testkit.CaseInsensitiveStringComparator;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldEndWithIgnoringCase_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldEndWithIgnoringCase_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldEndWithIgnoringCase_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldEndWithIgnoringCase_create_Test.java
@@ -18,8 +18,8 @@
 import static org.assertj.core.presentation.StandardRepresentation.STANDARD_REPRESENTATION;
 
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.util.OtherStringTestComparator;
 import org.junit.jupiter.api.Test;
 
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldEndWith_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldEndWith_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldEndWith_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldEndWith_create_Test.java
@@ -19,7 +19,7 @@
 import static org.assertj.core.util.Lists.list;
 
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.testkit.CaseInsensitiveStringComparator;
 import org.junit.jupiter.api.Test;
 
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldNotBeEqual_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldNotBeEqual_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldNotBeEqual_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldNotBeEqual_create_Test.java
@@ -15,7 +15,7 @@
 import static org.assertj.core.api.BDDAssertions.then;
 import static org.assertj.core.error.ShouldNotBeEqual.shouldNotBeEqual;
 
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.TestDescription;
 import org.assertj.core.presentation.StandardRepresentation;
 import org.assertj.core.testkit.CaseInsensitiveStringComparator;
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldNotBeIn_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldNotBeIn_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldNotBeIn_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldNotBeIn_create_Test.java
@@ -18,7 +18,7 @@
 import static org.assertj.core.util.Arrays.array;
 
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.presentation.StandardRepresentation;
 import org.assertj.core.testkit.CaseInsensitiveStringComparator;
 import org.junit.jupiter.api.Test;
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldNotContainAtIndex_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldNotContainAtIndex_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldNotContainAtIndex_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldNotContainAtIndex_create_Test.java
@@ -19,7 +19,7 @@
 import static org.assertj.core.util.Lists.list;
 
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.presentation.StandardRepresentation;
 import org.assertj.core.testkit.CaseInsensitiveStringComparator;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldNotContainCharSequence_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldNotContainCharSequence_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldNotContainCharSequence_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldNotContainCharSequence_create_Test.java
@@ -21,14 +21,12 @@
 import static org.assertj.core.util.Sets.set;
 
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.presentation.StandardRepresentation;
 import org.assertj.core.testkit.CaseInsensitiveStringComparator;
 import org.junit.jupiter.api.Test;
 
-import java.util.Set;
-
 /**
  * @author Alex Ruiz
  * @author Yvonne Wang
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldNotContainSequence_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldNotContainSequence_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldNotContainSequence_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldNotContainSequence_create_Test.java
@@ -18,7 +18,7 @@
 import static org.assertj.core.util.Lists.list;
 
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.presentation.StandardRepresentation;
 import org.assertj.core.testkit.CaseInsensitiveStringComparator;
 import org.junit.jupiter.api.Test;
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldNotContainSubsequence_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldNotContainSubsequence_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldNotContainSubsequence_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldNotContainSubsequence_create_Test.java
@@ -18,7 +18,7 @@
 import static org.assertj.core.util.Lists.list;
 
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.presentation.StandardRepresentation;
 import org.assertj.core.testkit.CaseInsensitiveStringComparator;
 import org.junit.jupiter.api.Test;
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldNotContain_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldNotContain_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldNotContain_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldNotContain_create_Test.java
@@ -25,7 +25,7 @@
 import java.nio.file.Path;
 import java.util.List;
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.presentation.StandardRepresentation;
 import org.assertj.core.testkit.CaseInsensitiveStringComparator;
 import org.junit.jupiter.api.Test;
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldNotEndWithIgnoringCase_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldNotEndWithIgnoringCase_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldNotEndWithIgnoringCase_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldNotEndWithIgnoringCase_create_Test.java
@@ -17,8 +17,8 @@
 import static org.assertj.core.error.ShouldNotEndWithIgnoringCase.shouldNotEndWithIgnoringCase;
 
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.presentation.StandardRepresentation;
 import org.assertj.core.testkit.CaseInsensitiveStringComparator;
 import org.junit.jupiter.api.Test;
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldNotEndWith_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldNotEndWith_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldNotEndWith_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldNotEndWith_create_Test.java
@@ -18,7 +18,7 @@
 import static org.assertj.core.util.Lists.list;
 
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.presentation.StandardRepresentation;
 import org.assertj.core.testkit.CaseInsensitiveStringComparator;
 import org.junit.jupiter.api.Test;
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldNotHaveDuplicates_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldNotHaveDuplicates_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldNotHaveDuplicates_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldNotHaveDuplicates_create_Test.java
@@ -18,7 +18,7 @@
 import static org.assertj.core.util.Lists.list;
 
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.presentation.StandardRepresentation;
 import org.assertj.core.testkit.CaseInsensitiveStringComparator;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldNotStartWithIgnoringCase_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldNotStartWithIgnoringCase_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldNotStartWithIgnoringCase_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldNotStartWithIgnoringCase_create_Test.java
@@ -17,8 +17,8 @@
 import static org.assertj.core.error.ShouldNotStartWithIgnoringCase.shouldNotStartWithIgnoringCase;
 
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.presentation.StandardRepresentation;
 import org.assertj.core.util.OtherStringTestComparator;
 import org.junit.jupiter.api.Test;
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldNotStartWith_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldNotStartWith_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldNotStartWith_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldNotStartWith_create_Test.java
@@ -18,7 +18,7 @@
 import static org.assertj.core.util.Lists.list;
 
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.presentation.StandardRepresentation;
 import org.assertj.core.testkit.CaseInsensitiveStringComparator;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldStartWithIgnoringCase_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldStartWithIgnoringCase_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldStartWithIgnoringCase_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldStartWithIgnoringCase_create_Test.java
@@ -18,8 +18,8 @@
 import static org.assertj.core.presentation.StandardRepresentation.STANDARD_REPRESENTATION;
 
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.util.OtherStringTestComparator;
 import org.junit.jupiter.api.Test;
 
diff --git a/assertj-core/src/test/java/org/assertj/core/error/ShouldStartWith_create_Test.java b/assertj-core/src/test/java/org/assertj/core/error/ShouldStartWith_create_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/error/ShouldStartWith_create_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/error/ShouldStartWith_create_Test.java
@@ -19,7 +19,7 @@
 import static org.assertj.core.util.Lists.list;
 
 import org.assertj.core.description.TextDescription;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.testkit.CaseInsensitiveStringComparator;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/AbstractTest_ComparatorBasedComparisonStrategy.java b/assertj-core/src/test/java/org/assertj/core/internal/AbstractTest_ComparatorBasedComparisonStrategy.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/AbstractTest_ComparatorBasedComparisonStrategy.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/AbstractTest_ComparatorBasedComparisonStrategy.java
@@ -14,6 +14,7 @@
 
 import java.util.Comparator;
 
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.testkit.CaseInsensitiveStringComparator;
 
 public class AbstractTest_ComparatorBasedComparisonStrategy {
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/AbstractTest_StandardComparisonStrategy.java b/assertj-core/src/test/java/org/assertj/core/internal/AbstractTest_StandardComparisonStrategy.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/AbstractTest_StandardComparisonStrategy.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/AbstractTest_StandardComparisonStrategy.java
@@ -12,8 +12,10 @@
  */
 package org.assertj.core.internal;
 
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
+
 public class AbstractTest_StandardComparisonStrategy {
 
   protected static StandardComparisonStrategy standardComparisonStrategy = StandardComparisonStrategy.instance();
 
-}
\ No newline at end of file
+}
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/Arrays_containsAnyOf_Test.java b/assertj-core/src/test/java/org/assertj/core/internal/Arrays_containsAnyOf_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/Arrays_containsAnyOf_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/Arrays_containsAnyOf_Test.java
@@ -25,6 +25,7 @@
 import static org.mockito.Mockito.verify;
 
 import org.assertj.core.api.AssertionInfo;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.junit.jupiter.api.Test;
 
 class Arrays_containsAnyOf_Test extends BaseArraysTest {
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/BaseArraysTest.java b/assertj-core/src/test/java/org/assertj/core/internal/BaseArraysTest.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/BaseArraysTest.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/BaseArraysTest.java
@@ -15,6 +15,7 @@
 import static org.assertj.core.util.Arrays.array;
 import static org.mockito.Mockito.spy;
 
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.testkit.CaseInsensitiveStringComparator;
 import org.junit.jupiter.api.BeforeEach;
 
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/BigDecimalsBaseTest.java b/assertj-core/src/test/java/org/assertj/core/internal/BigDecimalsBaseTest.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/BigDecimalsBaseTest.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/BigDecimalsBaseTest.java
@@ -12,6 +12,8 @@
  */
 package org.assertj.core.internal;
 
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+
 import static org.assertj.core.util.BigDecimalComparator.BIG_DECIMAL_COMPARATOR;
 
 import java.math.BigDecimal;
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/BigIntegersBaseTest.java b/assertj-core/src/test/java/org/assertj/core/internal/BigIntegersBaseTest.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/BigIntegersBaseTest.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/BigIntegersBaseTest.java
@@ -12,6 +12,8 @@
  */
 package org.assertj.core.internal;
 
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+
 import static org.assertj.core.util.BigIntegerComparator.BIG_INTEGER_COMPARATOR;
 
 import java.math.BigInteger;
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/BooleanArraysBaseTest.java b/assertj-core/src/test/java/org/assertj/core/internal/BooleanArraysBaseTest.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/BooleanArraysBaseTest.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/BooleanArraysBaseTest.java
@@ -17,6 +17,8 @@
 import static org.mockito.Mockito.spy;
 
 import org.assertj.core.api.WritableAssertionInfo;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.junit.jupiter.api.BeforeEach;
 
 /**
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/ByteArraysBaseTest.java b/assertj-core/src/test/java/org/assertj/core/internal/ByteArraysBaseTest.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/ByteArraysBaseTest.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/ByteArraysBaseTest.java
@@ -17,6 +17,8 @@
 
 import java.util.Comparator;
 
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.testkit.AbsValueComparator;
 import org.junit.jupiter.api.BeforeEach;
 
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/BytesBaseTest.java b/assertj-core/src/test/java/org/assertj/core/internal/BytesBaseTest.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/BytesBaseTest.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/BytesBaseTest.java
@@ -14,6 +14,7 @@
 
 import static org.mockito.Mockito.spy;
 
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.testkit.AbsValueComparator;
 import org.junit.jupiter.api.BeforeEach;
 
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/CharArraysBaseTest.java b/assertj-core/src/test/java/org/assertj/core/internal/CharArraysBaseTest.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/CharArraysBaseTest.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/CharArraysBaseTest.java
@@ -17,6 +17,8 @@
 
 import java.util.Comparator;
 
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.testkit.CaseInsensitiveCharacterComparator;
 import org.junit.jupiter.api.BeforeEach;
 
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/CharactersBaseTest.java b/assertj-core/src/test/java/org/assertj/core/internal/CharactersBaseTest.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/CharactersBaseTest.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/CharactersBaseTest.java
@@ -14,6 +14,7 @@
 
 import static org.mockito.Mockito.spy;
 
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.testkit.CaseInsensitiveCharacterComparator;
 import org.junit.jupiter.api.BeforeEach;
 
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/ComparablesBaseTest.java b/assertj-core/src/test/java/org/assertj/core/internal/ComparablesBaseTest.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/ComparablesBaseTest.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/ComparablesBaseTest.java
@@ -16,6 +16,8 @@
 
 import java.util.Comparator;
 
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.testkit.AbsValueComparator;
 import org.junit.jupiter.api.BeforeEach;
 
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_areEqual_Test.java b/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_areEqual_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_areEqual_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_areEqual_Test.java
@@ -15,6 +15,7 @@
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
 
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_arrayContains_Test.java b/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_arrayContains_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_arrayContains_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_arrayContains_Test.java
@@ -16,6 +16,7 @@
 import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
 import static org.assertj.core.util.Arrays.array;
 
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_duplicatesFrom_Test.java b/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_duplicatesFrom_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_duplicatesFrom_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_duplicatesFrom_Test.java
@@ -19,6 +19,7 @@
 
 import java.util.ArrayList;
 
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_isGreaterThan_Test.java b/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_isGreaterThan_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_isGreaterThan_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_isGreaterThan_Test.java
@@ -18,6 +18,8 @@
 import static org.mockito.Mockito.verify;
 
 import java.util.Locale;
+
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.testkit.CaseInsensitiveStringComparator;
 import org.junit.jupiter.api.Test;
 
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_iterableContains_Test.java b/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_iterableContains_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_iterableContains_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_iterableContains_Test.java
@@ -17,6 +17,7 @@
 
 import java.util.List;
 
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_iterableRemove_Test.java b/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_iterableRemove_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_iterableRemove_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_iterableRemove_Test.java
@@ -17,6 +17,7 @@
 
 import java.util.List;
 
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_stringContains_Test.java b/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_stringContains_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_stringContains_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_stringContains_Test.java
@@ -14,6 +14,7 @@
 
 import static org.assertj.core.api.Assertions.assertThat;
 
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_stringEndsWith_Test.java b/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_stringEndsWith_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_stringEndsWith_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_stringEndsWith_Test.java
@@ -14,6 +14,7 @@
 
 import static org.assertj.core.api.Assertions.assertThat;
 
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_stringStartsWith_Test.java b/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_stringStartsWith_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_stringStartsWith_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_stringStartsWith_Test.java
@@ -14,6 +14,7 @@
 
 import static org.assertj.core.api.Assertions.assertThat;
 
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_toString_Test.java b/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_toString_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_toString_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/ComparatorBasedComparisonStrategy_toString_Test.java
@@ -16,6 +16,7 @@
 
 import java.util.Comparator;
 
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/DatesBaseTest.java b/assertj-core/src/test/java/org/assertj/core/internal/DatesBaseTest.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/DatesBaseTest.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/DatesBaseTest.java
@@ -19,6 +19,7 @@
 import java.util.Date;
 
 import org.assertj.core.api.WritableAssertionInfo;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.util.DateUtil;
 import org.assertj.core.util.YearAndMonthComparator;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/DoubleArraysBaseTest.java b/assertj-core/src/test/java/org/assertj/core/internal/DoubleArraysBaseTest.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/DoubleArraysBaseTest.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/DoubleArraysBaseTest.java
@@ -17,6 +17,8 @@
 
 import java.util.Comparator;
 
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.testkit.AbsValueComparator;
 import org.junit.jupiter.api.BeforeEach;
 
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/DoublesBaseTest.java b/assertj-core/src/test/java/org/assertj/core/internal/DoublesBaseTest.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/DoublesBaseTest.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/DoublesBaseTest.java
@@ -16,6 +16,7 @@
 import static org.mockito.Mockito.spy;
 
 import org.assertj.core.api.WritableAssertionInfo;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.testkit.AbsValueComparator;
 import org.junit.jupiter.api.BeforeEach;
 
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/FloatArraysBaseTest.java b/assertj-core/src/test/java/org/assertj/core/internal/FloatArraysBaseTest.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/FloatArraysBaseTest.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/FloatArraysBaseTest.java
@@ -17,6 +17,8 @@
 
 import java.util.Comparator;
 
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.testkit.AbsValueComparator;
 import org.junit.jupiter.api.BeforeEach;
 
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/FloatsBaseTest.java b/assertj-core/src/test/java/org/assertj/core/internal/FloatsBaseTest.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/FloatsBaseTest.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/FloatsBaseTest.java
@@ -16,6 +16,8 @@
 import static org.mockito.Mockito.spy;
 
 import org.assertj.core.api.WritableAssertionInfo;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.testkit.AbsValueComparator;
 import org.junit.jupiter.api.BeforeEach;
 
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/IntArraysBaseTest.java b/assertj-core/src/test/java/org/assertj/core/internal/IntArraysBaseTest.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/IntArraysBaseTest.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/IntArraysBaseTest.java
@@ -17,6 +17,8 @@
 
 import java.util.Comparator;
 
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.testkit.AbsValueComparator;
 import org.junit.jupiter.api.BeforeEach;
 
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/IntegersBaseTest.java b/assertj-core/src/test/java/org/assertj/core/internal/IntegersBaseTest.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/IntegersBaseTest.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/IntegersBaseTest.java
@@ -14,6 +14,8 @@
 
 import static org.mockito.Mockito.spy;
 
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.testkit.AbsValueComparator;
 import org.junit.jupiter.api.BeforeEach;
 
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/IterableDiff_Test.java b/assertj-core/src/test/java/org/assertj/core/internal/IterableDiff_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/IterableDiff_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/IterableDiff_Test.java
@@ -19,6 +19,9 @@
 
 import java.util.List;
 
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.testkit.CaseInsensitiveStringComparator;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/IterablesBaseTest.java b/assertj-core/src/test/java/org/assertj/core/internal/IterablesBaseTest.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/IterablesBaseTest.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/IterablesBaseTest.java
@@ -20,6 +20,8 @@
 import java.util.List;
 
 import org.assertj.core.api.AssertionInfo;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.junit.jupiter.api.BeforeEach;
 
 /**
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/ListsBaseTest.java b/assertj-core/src/test/java/org/assertj/core/internal/ListsBaseTest.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/ListsBaseTest.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/ListsBaseTest.java
@@ -14,6 +14,8 @@
 
 import static org.mockito.Mockito.spy;
 
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.testkit.CaseInsensitiveStringComparator;
 import org.junit.jupiter.api.BeforeEach;
 
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/LongArraysBaseTest.java b/assertj-core/src/test/java/org/assertj/core/internal/LongArraysBaseTest.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/LongArraysBaseTest.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/LongArraysBaseTest.java
@@ -17,6 +17,8 @@
 
 import java.util.Comparator;
 
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.testkit.AbsValueComparator;
 import org.junit.jupiter.api.BeforeEach;
 
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/LongsBaseTest.java b/assertj-core/src/test/java/org/assertj/core/internal/LongsBaseTest.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/LongsBaseTest.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/LongsBaseTest.java
@@ -16,6 +16,8 @@
 import static org.mockito.Mockito.spy;
 
 import org.assertj.core.api.WritableAssertionInfo;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.testkit.AbsValueComparator;
 import org.junit.jupiter.api.BeforeEach;
 
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/NumbersBaseTest.java b/assertj-core/src/test/java/org/assertj/core/internal/NumbersBaseTest.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/NumbersBaseTest.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/NumbersBaseTest.java
@@ -18,6 +18,8 @@
 import java.util.Comparator;
 
 import org.assertj.core.api.AssertionInfo;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
 import org.assertj.core.testkit.AbsValueComparator;
 import org.junit.jupiter.api.BeforeEach;
 
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/ObjectsBaseTest.java b/assertj-core/src/test/java/org/assertj/core/internal/ObjectsBaseTest.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/ObjectsBaseTest.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/ObjectsBaseTest.java
@@ -21,6 +21,8 @@
 
 import org.assertj.core.api.AssertionInfo;
 import org.assertj.core.api.Assertions;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.testkit.CaseInsensitiveStringComparator;
 import org.junit.jupiter.api.BeforeEach;
 
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/StandardComparisonStrategy_areEqual_Test.java b/assertj-core/src/test/java/org/assertj/core/internal/StandardComparisonStrategy_areEqual_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/StandardComparisonStrategy_areEqual_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/StandardComparisonStrategy_areEqual_Test.java
@@ -18,6 +18,7 @@
 
 import java.util.stream.Stream;
 
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.Arguments;
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/StandardComparisonStrategy_arrayContains_Test.java b/assertj-core/src/test/java/org/assertj/core/internal/StandardComparisonStrategy_arrayContains_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/StandardComparisonStrategy_arrayContains_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/StandardComparisonStrategy_arrayContains_Test.java
@@ -16,6 +16,7 @@
 import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
 import static org.assertj.core.util.Arrays.array;
 
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/StandardComparisonStrategy_duplicatesFrom_Test.java b/assertj-core/src/test/java/org/assertj/core/internal/StandardComparisonStrategy_duplicatesFrom_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/StandardComparisonStrategy_duplicatesFrom_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/StandardComparisonStrategy_duplicatesFrom_Test.java
@@ -18,6 +18,7 @@
 
 import java.util.List;
 
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/StandardComparisonStrategy_iterableContains_Test.java b/assertj-core/src/test/java/org/assertj/core/internal/StandardComparisonStrategy_iterableContains_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/StandardComparisonStrategy_iterableContains_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/StandardComparisonStrategy_iterableContains_Test.java
@@ -17,6 +17,7 @@
 
 import java.util.List;
 
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/StandardComparisonStrategy_iterableRemove_Test.java b/assertj-core/src/test/java/org/assertj/core/internal/StandardComparisonStrategy_iterableRemove_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/StandardComparisonStrategy_iterableRemove_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/StandardComparisonStrategy_iterableRemove_Test.java
@@ -17,6 +17,7 @@
 
 import java.util.List;
 
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/StandardComparisonStrategy_stringContains_Test.java b/assertj-core/src/test/java/org/assertj/core/internal/StandardComparisonStrategy_stringContains_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/StandardComparisonStrategy_stringContains_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/StandardComparisonStrategy_stringContains_Test.java
@@ -14,6 +14,7 @@
 
 import static org.assertj.core.api.Assertions.assertThat;
 
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/StandardComparisonStrategy_stringEndsWith_Test.java b/assertj-core/src/test/java/org/assertj/core/internal/StandardComparisonStrategy_stringEndsWith_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/StandardComparisonStrategy_stringEndsWith_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/StandardComparisonStrategy_stringEndsWith_Test.java
@@ -14,6 +14,7 @@
 
 import static org.assertj.core.api.Assertions.assertThat;
 
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/StandardComparisonStrategy_stringStartsWith_Test.java b/assertj-core/src/test/java/org/assertj/core/internal/StandardComparisonStrategy_stringStartsWith_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/StandardComparisonStrategy_stringStartsWith_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/StandardComparisonStrategy_stringStartsWith_Test.java
@@ -14,6 +14,7 @@
 
 import static org.assertj.core.api.Assertions.assertThat;
 
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/booleanarrays/BooleanArrays_assertContainsExactlyInAnyOrder_Test.java b/assertj-core/src/test/java/org/assertj/core/internal/booleanarrays/BooleanArrays_assertContainsExactlyInAnyOrder_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/booleanarrays/BooleanArrays_assertContainsExactlyInAnyOrder_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/booleanarrays/BooleanArrays_assertContainsExactlyInAnyOrder_Test.java
@@ -28,7 +28,7 @@
 
 import org.assertj.core.api.AssertionInfo;
 import org.assertj.core.internal.BooleanArraysBaseTest;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.junit.jupiter.api.Test;
 
 class BooleanArrays_assertContainsExactlyInAnyOrder_Test extends BooleanArraysBaseTest {
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/booleanarrays/BooleanArrays_assertContainsSubsequence_Test.java b/assertj-core/src/test/java/org/assertj/core/internal/booleanarrays/BooleanArrays_assertContainsSubsequence_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/booleanarrays/BooleanArrays_assertContainsSubsequence_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/booleanarrays/BooleanArrays_assertContainsSubsequence_Test.java
@@ -25,7 +25,7 @@
 import org.assertj.core.api.AssertionInfo;
 import org.assertj.core.internal.BooleanArrays;
 import org.assertj.core.internal.BooleanArraysBaseTest;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/bytearrays/ByteArrays_assertContainsExactlyInAnyOrder_Test.java b/assertj-core/src/test/java/org/assertj/core/internal/bytearrays/ByteArrays_assertContainsExactlyInAnyOrder_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/bytearrays/ByteArrays_assertContainsExactlyInAnyOrder_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/bytearrays/ByteArrays_assertContainsExactlyInAnyOrder_Test.java
@@ -29,7 +29,7 @@
 import org.assertj.core.api.AssertionInfo;
 import org.assertj.core.internal.ByteArrays;
 import org.assertj.core.internal.ByteArraysBaseTest;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/bytearrays/ByteArrays_assertContainsExactlyInAnyOrder_with_Integer_Arguments_Test.java b/assertj-core/src/test/java/org/assertj/core/internal/bytearrays/ByteArrays_assertContainsExactlyInAnyOrder_with_Integer_Arguments_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/bytearrays/ByteArrays_assertContainsExactlyInAnyOrder_with_Integer_Arguments_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/bytearrays/ByteArrays_assertContainsExactlyInAnyOrder_with_Integer_Arguments_Test.java
@@ -29,7 +29,7 @@
 import org.assertj.core.api.AssertionInfo;
 import org.assertj.core.internal.ByteArrays;
 import org.assertj.core.internal.ByteArraysBaseTest;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.testkit.IntArrays;
 import org.junit.jupiter.api.Test;
 
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/chararrays/CharArrays_assertContainsExactlyInAnyOrder_Test.java b/assertj-core/src/test/java/org/assertj/core/internal/chararrays/CharArrays_assertContainsExactlyInAnyOrder_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/chararrays/CharArrays_assertContainsExactlyInAnyOrder_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/chararrays/CharArrays_assertContainsExactlyInAnyOrder_Test.java
@@ -29,7 +29,7 @@
 import org.assertj.core.api.AssertionInfo;
 import org.assertj.core.internal.CharArrays;
 import org.assertj.core.internal.CharArraysBaseTest;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/doublearrays/DoubleArrays_assertContainsExactlyInAnyOrder_Test.java b/assertj-core/src/test/java/org/assertj/core/internal/doublearrays/DoubleArrays_assertContainsExactlyInAnyOrder_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/doublearrays/DoubleArrays_assertContainsExactlyInAnyOrder_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/doublearrays/DoubleArrays_assertContainsExactlyInAnyOrder_Test.java
@@ -26,7 +26,7 @@
 import org.assertj.core.api.AssertionInfo;
 import org.assertj.core.internal.DoubleArrays;
 import org.assertj.core.internal.DoubleArraysBaseTest;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/floatarrays/FloatArrays_assertContainsExactlyInAnyOrder_Test.java b/assertj-core/src/test/java/org/assertj/core/internal/floatarrays/FloatArrays_assertContainsExactlyInAnyOrder_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/floatarrays/FloatArrays_assertContainsExactlyInAnyOrder_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/floatarrays/FloatArrays_assertContainsExactlyInAnyOrder_Test.java
@@ -29,7 +29,7 @@
 import org.assertj.core.api.AssertionInfo;
 import org.assertj.core.internal.FloatArrays;
 import org.assertj.core.internal.FloatArraysBaseTest;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/intarrays/IntArrays_assertContainsExactlyInAnyOrder_Test.java b/assertj-core/src/test/java/org/assertj/core/internal/intarrays/IntArrays_assertContainsExactlyInAnyOrder_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/intarrays/IntArrays_assertContainsExactlyInAnyOrder_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/intarrays/IntArrays_assertContainsExactlyInAnyOrder_Test.java
@@ -29,7 +29,7 @@
 import org.assertj.core.api.AssertionInfo;
 import org.assertj.core.internal.IntArrays;
 import org.assertj.core.internal.IntArraysBaseTest;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/integers/Integers_assertGreaterThan_Test.java b/assertj-core/src/test/java/org/assertj/core/internal/integers/Integers_assertGreaterThan_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/integers/Integers_assertGreaterThan_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/integers/Integers_assertGreaterThan_Test.java
@@ -23,7 +23,7 @@
 import org.assertj.core.api.AssertionInfo;
 import org.assertj.core.internal.Integers;
 import org.assertj.core.internal.IntegersBaseTest;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/iterables/Iterables_assertContainsAnyOf_Test.java b/assertj-core/src/test/java/org/assertj/core/internal/iterables/Iterables_assertContainsAnyOf_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/iterables/Iterables_assertContainsAnyOf_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/iterables/Iterables_assertContainsAnyOf_Test.java
@@ -30,7 +30,7 @@
 import org.assertj.core.api.AssertionInfo;
 import org.assertj.core.internal.Iterables;
 import org.assertj.core.internal.IterablesBaseTest;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.testkit.Name;
 import org.junit.jupiter.api.Test;
 
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/iterables/Iterables_assertContainsExactlyInAnyOrder_Test.java b/assertj-core/src/test/java/org/assertj/core/internal/iterables/Iterables_assertContainsExactlyInAnyOrder_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/iterables/Iterables_assertContainsExactlyInAnyOrder_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/iterables/Iterables_assertContainsExactlyInAnyOrder_Test.java
@@ -29,7 +29,7 @@
 import org.assertj.core.api.AssertionInfo;
 import org.assertj.core.internal.Iterables;
 import org.assertj.core.internal.IterablesBaseTest;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/iterables/Iterables_assertContainsSubsequence_Test.java b/assertj-core/src/test/java/org/assertj/core/internal/iterables/Iterables_assertContainsSubsequence_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/iterables/Iterables_assertContainsSubsequence_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/iterables/Iterables_assertContainsSubsequence_Test.java
@@ -28,7 +28,7 @@
 import org.assertj.core.api.AssertionInfo;
 import org.assertj.core.internal.Iterables;
 import org.assertj.core.internal.IterablesBaseTest;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/longarrays/LongArrays_assertContainsExactlyInAnyOrder_Test.java b/assertj-core/src/test/java/org/assertj/core/internal/longarrays/LongArrays_assertContainsExactlyInAnyOrder_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/longarrays/LongArrays_assertContainsExactlyInAnyOrder_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/longarrays/LongArrays_assertContainsExactlyInAnyOrder_Test.java
@@ -29,7 +29,7 @@
 import org.assertj.core.api.AssertionInfo;
 import org.assertj.core.internal.LongArrays;
 import org.assertj.core.internal.LongArraysBaseTest;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/assertj-core/src/test/java/org/assertj/core/internal/objects/Objects_assertEqual_Test.java b/assertj-core/src/test/java/org/assertj/core/internal/objects/Objects_assertEqual_Test.java
--- a/assertj-core/src/test/java/org/assertj/core/internal/objects/Objects_assertEqual_Test.java
+++ b/assertj-core/src/test/java/org/assertj/core/internal/objects/Objects_assertEqual_Test.java
@@ -21,7 +21,7 @@
 import static org.mockito.Mockito.verify;
 
 import org.assertj.core.api.AssertionInfo;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.Objects;
 import org.assertj.core.internal.ObjectsBaseTest;
 import org.junit.jupiter.api.Test;
diff --git a/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/api/object/ObjectAssert_doesNotReturn_Test.java b/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/api/object/ObjectAssert_doesNotReturn_Test.java
--- a/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/api/object/ObjectAssert_doesNotReturn_Test.java
+++ b/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/api/object/ObjectAssert_doesNotReturn_Test.java
@@ -21,7 +21,7 @@
 import static org.assertj.core.util.FailureMessages.actualIsNull;
 import static org.assertj.tests.core.util.AssertionsUtil.expectAssertionError;
 
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.tests.core.testkit.Jedi;
 import org.junit.jupiter.api.Test;
 
diff --git a/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/api/recursive/comparison/RecursiveComparisonAssert_isEqualTo_Test.java b/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/api/recursive/comparison/RecursiveComparisonAssert_isEqualTo_Test.java
--- a/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/api/recursive/comparison/RecursiveComparisonAssert_isEqualTo_Test.java
+++ b/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/api/recursive/comparison/RecursiveComparisonAssert_isEqualTo_Test.java
@@ -42,7 +42,7 @@
 import org.assertj.core.api.recursive.comparison.ComparisonDifference;
 import org.assertj.core.api.recursive.comparison.RecursiveComparisonConfiguration;
 import org.assertj.core.api.recursive.comparison.RecursiveComparisonDifferenceCalculator;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.util.DoubleComparator;
 import org.assertj.tests.core.api.recursive.data.AlwaysEqualPerson;
 import org.assertj.tests.core.api.recursive.data.FriendlyPerson;
diff --git a/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/StringsBaseTest.java b/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/StringsBaseTest.java
--- a/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/StringsBaseTest.java
+++ b/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/StringsBaseTest.java
@@ -19,7 +19,7 @@
 import java.util.Set;
 
 import org.assertj.core.api.AssertionInfo;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.Failures;
 import org.assertj.core.internal.Strings;
 import org.assertj.tests.core.testkit.CaseInsensitiveStringComparator;
diff --git a/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/objectarrays/ObjectArraysBaseTest.java b/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/objectarrays/ObjectArraysBaseTest.java
--- a/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/objectarrays/ObjectArraysBaseTest.java
+++ b/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/objectarrays/ObjectArraysBaseTest.java
@@ -20,11 +20,11 @@
 
 import org.assertj.core.api.AssertionInfo;
 import org.assertj.core.internal.Arrays;
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.Conditions;
 import org.assertj.core.internal.Failures;
 import org.assertj.core.internal.ObjectArrays;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.tests.core.testkit.CaseInsensitiveStringComparator;
 import org.assertj.tests.core.testkit.TestData;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/objectarrays/ObjectArrays_assertContainsExactlyInAnyOrder_Test.java b/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/objectarrays/ObjectArrays_assertContainsExactlyInAnyOrder_Test.java
--- a/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/objectarrays/ObjectArrays_assertContainsExactlyInAnyOrder_Test.java
+++ b/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/objectarrays/ObjectArrays_assertContainsExactlyInAnyOrder_Test.java
@@ -24,7 +24,7 @@
 import static org.assertj.tests.core.util.AssertionsUtil.expectAssertionError;
 import static org.mockito.Mockito.verify;
 
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/objectarrays/ObjectArrays_assertContainsSubsequence_Test.java b/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/objectarrays/ObjectArrays_assertContainsSubsequence_Test.java
--- a/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/objectarrays/ObjectArrays_assertContainsSubsequence_Test.java
+++ b/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/objectarrays/ObjectArrays_assertContainsSubsequence_Test.java
@@ -26,7 +26,7 @@
 
 import org.assertj.core.api.AssertionInfo;
 import org.assertj.core.internal.ObjectArrays;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/shortarrays/ShortArraysBaseTest.java b/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/shortarrays/ShortArraysBaseTest.java
--- a/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/shortarrays/ShortArraysBaseTest.java
+++ b/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/shortarrays/ShortArraysBaseTest.java
@@ -18,10 +18,10 @@
 
 import java.util.Comparator;
 
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.Failures;
 import org.assertj.core.internal.ShortArrays;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.tests.core.testkit.AbsValueComparator;
 import org.junit.jupiter.api.BeforeEach;
 
diff --git a/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/shortarrays/ShortArrays_assertContainsExactlyInAnyOrder_Test.java b/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/shortarrays/ShortArrays_assertContainsExactlyInAnyOrder_Test.java
--- a/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/shortarrays/ShortArrays_assertContainsExactlyInAnyOrder_Test.java
+++ b/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/shortarrays/ShortArrays_assertContainsExactlyInAnyOrder_Test.java
@@ -28,7 +28,7 @@
 
 import org.assertj.core.api.AssertionInfo;
 import org.assertj.core.internal.ShortArrays;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.junit.jupiter.api.Test;
 
 /**
diff --git a/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/shorts/ShortsBaseTest.java b/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/shorts/ShortsBaseTest.java
--- a/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/shorts/ShortsBaseTest.java
+++ b/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/shorts/ShortsBaseTest.java
@@ -15,10 +15,10 @@
 import static org.assertj.tests.core.testkit.FieldTestUtils.writeField;
 import static org.mockito.Mockito.spy;
 
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
 import org.assertj.core.internal.Failures;
 import org.assertj.core.internal.Shorts;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.tests.core.testkit.AbsValueComparator;
 import org.junit.jupiter.api.BeforeEach;
 
diff --git a/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/strings/Strings_assertContainsAnyOf_Test.java b/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/strings/Strings_assertContainsAnyOf_Test.java
--- a/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/strings/Strings_assertContainsAnyOf_Test.java
+++ b/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/strings/Strings_assertContainsAnyOf_Test.java
@@ -20,7 +20,7 @@
 import static org.assertj.core.util.Arrays.array;
 import static org.assertj.tests.core.util.AssertionsUtil.expectAssertionError;
 
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.tests.core.internal.StringsBaseTest;
 import org.junit.jupiter.api.Test;
 
diff --git a/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/strings/Strings_assertContainsIgnoringNewLines_Test.java b/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/strings/Strings_assertContainsIgnoringNewLines_Test.java
--- a/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/strings/Strings_assertContainsIgnoringNewLines_Test.java
+++ b/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/strings/Strings_assertContainsIgnoringNewLines_Test.java
@@ -24,7 +24,7 @@
 
 import org.assertj.core.api.AssertionInfo;
 import org.assertj.core.api.WritableAssertionInfo;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.internal.Strings;
 import org.assertj.tests.core.internal.StringsBaseTest;
 import org.junit.jupiter.api.Test;
diff --git a/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/strings/Strings_assertDoesNotContain_Test.java b/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/strings/Strings_assertDoesNotContain_Test.java
--- a/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/strings/Strings_assertDoesNotContain_Test.java
+++ b/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/strings/Strings_assertDoesNotContain_Test.java
@@ -19,7 +19,7 @@
 import static org.assertj.tests.core.testkit.TestData.someInfo;
 import static org.assertj.core.util.FailureMessages.actualIsNull;
 
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.tests.core.internal.StringsBaseTest;
 import org.junit.jupiter.api.Test;
 
diff --git a/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/strings/Strings_assertDoesNotEndWithIgnoringCase_Test.java b/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/strings/Strings_assertDoesNotEndWithIgnoringCase_Test.java
--- a/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/strings/Strings_assertDoesNotEndWithIgnoringCase_Test.java
+++ b/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/strings/Strings_assertDoesNotEndWithIgnoringCase_Test.java
@@ -18,9 +18,9 @@
 import static org.assertj.core.util.FailureMessages.actualIsNull;
 import static org.assertj.tests.core.util.AssertionsUtil.expectAssertionError;
 
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.internal.Strings;
 import org.assertj.tests.core.internal.StringsBaseTest;
 import org.assertj.tests.core.testkit.StringHashCodeTestComparator;
diff --git a/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/strings/Strings_assertDoesNotStartWithIgnoringCase_Test.java b/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/strings/Strings_assertDoesNotStartWithIgnoringCase_Test.java
--- a/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/strings/Strings_assertDoesNotStartWithIgnoringCase_Test.java
+++ b/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/strings/Strings_assertDoesNotStartWithIgnoringCase_Test.java
@@ -18,9 +18,9 @@
 import static org.assertj.core.util.FailureMessages.actualIsNull;
 import static org.assertj.tests.core.util.AssertionsUtil.expectAssertionError;
 
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.internal.Strings;
 import org.assertj.tests.core.internal.StringsBaseTest;
 import org.assertj.tests.core.testkit.StringHashCodeTestComparator;
diff --git a/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/strings/Strings_assertEndsWithIgnoringCase_Test.java b/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/strings/Strings_assertEndsWithIgnoringCase_Test.java
--- a/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/strings/Strings_assertEndsWithIgnoringCase_Test.java
+++ b/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/strings/Strings_assertEndsWithIgnoringCase_Test.java
@@ -19,9 +19,9 @@
 import static org.assertj.tests.core.util.AssertionsUtil.expectAssertionError;
 import static org.assertj.core.util.FailureMessages.actualIsNull;
 
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.internal.Strings;
 import org.assertj.tests.core.internal.StringsBaseTest;
 import org.assertj.tests.core.testkit.StringHashCodeTestComparator;
diff --git a/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/strings/Strings_assertIsSubstringOf_Test.java b/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/strings/Strings_assertIsSubstringOf_Test.java
--- a/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/strings/Strings_assertIsSubstringOf_Test.java
+++ b/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/strings/Strings_assertIsSubstringOf_Test.java
@@ -18,7 +18,7 @@
 import static org.assertj.tests.core.testkit.TestData.someInfo;
 import static org.assertj.core.util.FailureMessages.actualIsNull;
 
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.tests.core.internal.StringsBaseTest;
 import org.junit.jupiter.api.Test;
 
diff --git a/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/strings/Strings_assertStartsWithIgnoringCase_Test.java b/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/strings/Strings_assertStartsWithIgnoringCase_Test.java
--- a/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/strings/Strings_assertStartsWithIgnoringCase_Test.java
+++ b/assertj-tests/assertj-integration-tests/assertj-core-tests/src/test/java/org/assertj/tests/core/internal/strings/Strings_assertStartsWithIgnoringCase_Test.java
@@ -18,9 +18,9 @@
 import static org.assertj.tests.core.util.AssertionsUtil.expectAssertionError;
 import static org.assertj.core.util.FailureMessages.actualIsNull;
 
-import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
-import org.assertj.core.internal.ComparisonStrategy;
-import org.assertj.core.internal.StandardComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparatorBasedComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.ComparisonStrategy;
+import org.assertj.core.api.comparisonstrategy.StandardComparisonStrategy;
 import org.assertj.core.internal.Strings;
 import org.assertj.tests.core.internal.StringsBaseTest;
 import org.assertj.tests.core.testkit.StringHashCodeTestComparator;
diff --git a/assertj-tests/assertj-integration-tests/assertj-guava-tests/src/test/java/org/assertj/tests/guava/api/OptionalAssert_contains_Test.java b/assertj-tests/assertj-integration-tests/assertj-guava-tests/src/test/java/org/assertj/tests/guava/api/OptionalAssert_contains_Test.java
--- a/assertj-tests/assertj-integration-tests/assertj-guava-tests/src/test/java/org/assertj/tests/guava/api/OptionalAssert_contains_Test.java
+++ b/assertj-tests/assertj-integration-tests/assertj-guava-tests/src/test/java/org/assertj/tests/guava/api/OptionalAssert_contains_Test.java
@@ -18,9 +18,10 @@
 import static org.assertj.core.util.FailureMessages.actualIsNull;
 import static org.assertj.guava.api.Assertions.assertThat;
 
-import com.google.common.base.Optional;
 import org.junit.jupiter.api.Test;
 
+import com.google.common.base.Optional;
+
 /**
  * @author Kornel
  * @author Joel Costigliola

Expose `ComparisonStrategy` for third-party usage
Currently, `ComparisonStrategy` is part of the internal package and there is no easy way to access it. This limits extension capabilities in JPMS and OSGi applications.

Exposing `ComparisonStrategy` in `AbstractAssert` would be handy for the implementation of custom assertions that want to stay in sync with the comparison strategy currently configured.

Originally triggered by https://github.com/assertj/assertj-guava/issues/70#issuecomment-1057532277.

Targeting 4.x being a breaking change.