Version and Lifecycle Annotations

Use of annotations for lifecycle are inspired by Guava: https://github.com/google/guava#important-warnings