Application programming interfaces for managing synchronization state.

## Package Specification

This package specifies the API for managing the synchronization state between the local workspace resources and a corresponding variants of those resources. The classes in this package can be used by Subscribers (see the org.eclipse.team.core.subscribers package) or others. The classes are roughly divided into three categories:

- describing the synchronization state of a one or more resources,
- notifying interested parties of changes in the synchronization state.
- filtering a set of resource based on a sync state criteria

### Describing the synchronization state of resources

The following classes are provided to accumulate (and possibly filter) the synchronization state of one or more resources.

- SyncInfo: node which maps a local resource to a corresponding variant resource (and a base resource for three-way compare) and descibes the synchronization state of those resources (e.g. in-sync or incoming-change).
- SyncInfoSet: a set which contains the out-of-sync SyncInfo for multiple local resources.
- SyncInfoTree: a specialized set optimized for hierarchical resource based access (e.g. to obtain all out-of-sync children of a particular local resource).

### Notifying interested parties of sync info set changes

Interested parties can register with a SyncInfoSet in order to receive notification when a set changes.

- ISyncInfoSetChangeListener: implementors of this interface can be registered with a SyncInfoSet in order to recieve notification when the contents of the set change.
- ISyncInfoSetChangeEvent: the type of the events generated by a SyncInfoSet
- ISyncInfoTreeChangeEvent: specialized ISyncInfoSetChangeEvent generated by SyncInfoTree which includes notification of resource subtree aditions and removals.

### Sync info filtering

There are also some additional classes provided to help manage SyncInfoSets

- SyncInfoFilter: a filter that can be used to test SyncInfo. Long running tests are supported via an IProgressMonitor. SyncInfoSet has API for selecting and rejecting SyncInfo based on a provided filter.
- FastSyncInfoFilter: a specialized filter that does not support the ue of a progress monitor

Several common filters are provided as inner classes of the two filter classes for doing synchronization state tests and filter compounding (and, or, not).