Auto Common Utilities
========
## Overview
The Auto project has a set of common utilities to help ease use of the annotation processing
environment.
## Utility classes of note
* MoreTypes - utilities and Equivalence wrappers for TypeMirror and related subtypes
* MoreElements - utilities for Element and related subtypes
* SuperficialValidation - very simple scanner to ensure an Element is valid and free from
distortion from upstream compilation errors
* Visibility - utilities for working with Elements' visibility levels (public, protected, etc.)
* BasicAnnotationProcessor/ProcessingStep - simple types that
- implement a validating annotation processor
- defer invalid elements until later
- break processor actions into multiple steps (which may each handle different annotations)
## Usage/Setup
Auto common utilities have a standard [Maven](http://maven.apache.org) setup which can also be
used from Gradle, Ivy, Ant, or other systems which consume binary artifacts from the central Maven
binary artifact repositories.
```xml
com.google.auto
auto-common
1.0-SNAPSHOT
```
## Processor Resilience
Auto Common Utilities is used by a variety of annotation processors in Google and new versions
may have breaking changes. Users of auto-common are urged to use
[shade](https://maven.apache.org/plugins/maven-shade-plugin/) or
[jarjar](https://code.google.com/p/jarjar/) (or something similar) in packaging their processors
so that conflicting versions of this library do not adversely interact with each other.
For example, in a Maven build you can repackage `com.google.auto.common` into
`your.processor.shaded.auto.common` like this:
```xml
maven-shade-plugin
package
shade
com.google.auto.common
your.processor.shaded.auto.common
```