Create an interface for ConstraintSemantics.

This breaks the cycle between ConstraintSemantics and RuleContext.

PiperOrigin-RevId: 306664492
diff --git a/src/main/java/com/google/devtools/build/lib/packages/Attribute.java b/src/main/java/com/google/devtools/build/lib/packages/Attribute.java
index f234aeb..c8171c5 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/Attribute.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/Attribute.java
@@ -759,8 +759,8 @@
      *
      * <p>Most attributes are enforced by default, so in the common case this call is unnecessary.
      *
-     * <p>See {@link com.google.devtools.build.lib.analysis.constraints.ConstraintSemantics#getConstraintCheckedDependencies}
-     * for enforcement policy details.
+     * <p>See {@link com.google.devtools.build.lib.analysis.constraints.ConstraintSemantics} for
+     * enforcement policy details.
      */
     public Builder<TYPE> checkConstraints() {
       Verify.verify(!propertyFlags.contains(PropertyFlag.SKIP_CONSTRAINTS_OVERRIDE),
@@ -772,8 +772,8 @@
      * Skips constraint checking on this attribute even if default enforcement policy would check
      * it. If default policy skips the attribute, this is a no-op.
      *
-     * <p>See {@link com.google.devtools.build.lib.analysis.constraints.ConstraintSemantics#getConstraintCheckedDependencies}
-     * for enforcement policy details.
+     * <p>See {@link com.google.devtools.build.lib.analysis.constraints.ConstraintSemantics} for
+     * enforcement policy details.
      */
     public Builder<TYPE> dontCheckConstraints() {
       Verify.verify(!propertyFlags.contains(PropertyFlag.CHECK_CONSTRAINTS_OVERRIDE),