anchor.diff:  == API and runtime separation
   
   A major difference between a Maven BOM and a Java platform is that Gradle makes the difference between dependencies required at compile time and those only needed at run time.
  -While the vast majority of users will only care about _compile time_ dependencies, it allows declaring dependencies or constraints which only apply to runtime.
  +While many users will only care about _compile time_ dependencies, it allows declaring dependencies or <<dependency_management_terminology.adoc#sub:terminology_dependency_constraint,constraints>> which only apply to runtime.
   
   For this purpose, the plugin exposes two <<managing_dependency_configurations.adoc#managing_dependency_configurations,configurations>> that can be used to declare dependencies: `api` and `runtime`.
  -The `api` configuration should be used to declare constrainsts and dependencies which should be used when compiling against the platform, whereas the `runtime` configuration should be used to declare constraints or dependencies which are visible at runtime.
  +The `api` configuration should be used to declare constraints and dependencies which should be used when compiling against the platform, whereas the `runtime` configuration should be used to declare constraints or dependencies which are visible at runtime.
   
   .Declaring API and runtime constraints
   ====
  
positive.code: include::sample[dir="java-platform/quickstart/kotlin",files="build.gradle.kts[tags=allow-dependencies]"]
  ====
  
  [NOTE]
  ====
  When published as a BOM file, dependencies do not make sense for Maven consumers.
  They would only be considered by a Gradle consumer if published with Gradle metadata.
  ====
  
  [[sec:java_platform_project_constraints]]
  == Local project constraints
  
  If what you want to build is a platform for a set of libraries built locally, you can declare constraints onto local components, as demonstrated in the following example:
  
  .Allowing declaration of dependencies
  ====
  include::sample[dir="java-platform/multiproject/groovy/platform",files="build.gradle[tags=project-constraints]"]
  
negative.code: include::sample[dir="java-platform/multiproject/kotlin/platform",files="build.gradle.kts[tags=publishing]"]
  ====
  
  This will generate a BOM file for the platform, with a `<dependencyManagement>` block where its `<dependencies>` correspond to the constraints defined in the platform module.
  
  [[sec:java_platform_consumption]]
  == Consuming platforms
  
  Because a Java Platform is a special kind of component, a dependency on a Java platform has to be declared using the `platform` or `enforcedPlatform` keyword, as explained in the <<managing_dependency_configurations.adoc#sec:bom_import,managing transitive dependencies>> section.
  For example, if you want to share dependency versions between subprojects, you can define a platform module which would declare all versions:
  
  .Recommend versions in a platform module
  