anchor.diff:              <output args="-q hello"/>
           </sample>
   ++++
  -
  -The example above uses instances of api:org.gradle.api.provider.Provider[] and api:org.gradle.api.provider.Property[]. The main difference between these two interfaces is attributed to mutability. A api:org.gradle.api.provider.Provider[] is immutable and can be created with the method api:org.gradle.api.Project#provider(java.util.concurrent.Callable)[]. api:org.gradle.api.provider.Property[] extends the interface api:org.gradle.api.provider.Provider[], represents a mutable value and can be created with the method api:org.gradle.api.Project#property(java.lang.Class)[]. Please note that the provider types are not intended for implementation by build script or plugin authors.
  -
  -[NOTE]
  -====
  -
  -The api:org.gradle.api.Project[] does not provide a specific method signature for creating a provider by passing in a `groovy.lang.Closure` as parameter. When writing a plugin implementation with Groovy, you can use the method signature accepting a `java.util.concurrent.Callable` parameter. Groovy's http://docs.groovy-lang.org/next/html/documentation/core-semantics.html#_assigning_a_closure_to_a_sam_type[Closure to type coercion] will take of the rest.
  -
  -====
  -
   
   [[sec:custom_plugins_standalone_project]]
   === A standalone project
  
positive.code: * Cannot start or end with a '.' character.
  * Cannot contain consecutive '.' characters (i.e. '..').
  
  Although there are conventional similarities between plugin ids and package names, package names are generally more detailed than is necessary for a plugin id. For instance, it might seem reasonable to add “gradle” as a component of your plugin id, but since plugin ids are only used for Gradle plugins, this would be superfluous. Generally, a namespace that identifies ownership and a name are all that are needed for a good plugin id.
  
  [[sec:publishing_your_plugin]]
  ==== Publishing your plugin
  
negative.code:             </sample>
  ++++
  
  The api:org.gradle.api.Project#container(java.lang.Class)[] methods create instances of api:org.gradle.api.NamedDomainObjectContainer[], that have many useful methods for managing and configuring the objects. In order to use a type with any of the `project.container` methods, it MUST expose a property named "`name`" as the unique, and constant, name for the object. The `project.container(Class)` variant of the container method creates new instances by attempting to invoke the constructor of the class that takes a single string argument, which is the desired name of the object. See the above link for `project.container` method variants that allow custom instantiation strategies.
  