@Incubating

# Package org.gradle.model

Classes that operate upon the Gradle model.

- Interface Summary
  Interface | Description
  --- | ---
  ModelElement | Represents an element in a model.
  ModelMap<T> | Model backed map like structure allowing adding of items where instantiation is managed.
  ModelSet<T> | A set of managed model objects.

- Class Summary
  Class | Description
  --- | ---
  RuleSource | A marker type for a class that is a collection of rules.

- Exception Summary
  Exception | Description
  --- | ---
  ConfigurationCycleException | Thrown when a cycle is encountered while configuring a model element.
  InvalidModelRuleDeclarationException | Thrown when a model rule, or source of model rules, is declared in an invalid way.
  InvalidModelRuleException | Thrown when there is a problem with the usage of a model rule.
  ModelRuleBindingException | Thrown when there is a problem binding the model element references of a model rule.
  ModelViewClosedException | Thrown when at attempt is made to mutate a subject of a rule after the rule has completed.
  ReadOnlyModelViewException | Thrown when an attempt is made to change the value of a model element that is not writable at the time.
  WriteOnlyModelViewException | Thrown when an attempt is made to read the value of a model element that is not readable at the time.

- Annotation Types Summary
  Annotation Type | Description
  --- | ---
  Defaults | Denotes that the `RuleSource` method rule carrying this annotation initializes the rule subject with default values.
  Each | Signals that a `RuleSource` rule should be applied to all matching descendant elements of the scope instead of the scope itself.
  Finalize | Denotes that the `RuleSource` method rule carrying this annotation finalizes the rule subject.
  Managed | A managed type is transparent to the model space, and enforces immutability at the appropriate times in the object's lifecycle.
  Model | Denotes that the `RuleSource` method rule carrying this annotation creates a new top level element in the model space.
  Mutate | Denotes that the `RuleSource` method rule carrying this annotation mutates the rule subject.
  Path | Specifies a model path on a parameter
  RuleInput | Attached to the getter for a property on a `RuleSource` to denote that the property defines an implicit input for all rules defined by the rule source.
  Rules | Denotes that the `RuleSource` method rule carrying this annotation defines additional rules based on its inputs.
  RuleTarget | Attached to the getter for a property on a `RuleSource` to denote that the property defines the target for the rule source.
  Unmanaged | Indicates that a property of a managed model element is explicitly of an unmanaged type.
  Validate | Denotes that the `RuleSource` method rule carrying this annotation validates the rule subject.