org.gradle.model

## Interface ModelSet<T>

- Type Parameters:
    `T` - the type of model object
  All Superinterfaces:
    Collection<T>, Iterable<T>, ManagedSet<T>, Set<T>

      @Incubating
      public interface ModelSet<T>
      extends ManagedSet<T>

  A set of managed model objects.

  `Managed` types may declare managed set properties. Managed sets can only contain managed types.

  Managed set objects cannot be mutated via the mutative methods of the `Set` interface (e.g. `Set.add(Object)`, `Set.clear()`). To add elements to the set, the `create(Action)` method can be used.

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `afterEach(Action<? super T> configAction)` Apply the given action to each set element just before it is considered to be realised.
    `void` | `beforeEach(Action<? super T> configAction)` Apply the given action to each set element just after it is created.
    `void` | `create(Action<? super T> action)` Declares a new set element, configured by the given action.

    - ### Methods inherited from interface java.util.Set

      `add, addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, remove, removeAll, retainAll, size, toArray, toArray`

- - ### Method Detail

    - #### create

          void create(Action<? super T> action)

      Declares a new set element, configured by the given action.
      Specified by:
        `create` in interface `ManagedSet<T>`
      Parameters:
        `action` - the object configuration

    - #### beforeEach

          void beforeEach(Action<? super T> configAction)

      Apply the given action to each set element just after it is created.

      The configuration action is equivalent in terms of lifecycle to `Defaults` rule methods.

      Specified by:
        `beforeEach` in interface `ManagedSet<T>`
      Parameters:
        `configAction` - the object configuration

    - #### afterEach

          void afterEach(Action<? super T> configAction)

      Apply the given action to each set element just before it is considered to be realised.

      The configuration action is equivalent in terms of lifecycle to `Finalize` rule methods.

      Specified by:
        `afterEach` in interface `ManagedSet<T>`
      Parameters:
        `configAction` - the object configuration