001package com.identityworksllc.iiq.common.annotation;
002
003import java.lang.annotation.*;
004
005/**
006 * Indicates that a class or method is considered a core part of the library,
007 * and will remain API-compatible. This is a promise that future versions
008 * of the library will not break compatibility with this class or method.
009 *
010 * If an annotated class or method must be removed or changed in a way that breaks
011 * compatibility, it will be deprecated for at least six months before being removed
012 * or changed.
013 *
014 * Smaller parts of a class (such as individual methods or nested classes) may
015 * be annotated with {@link Experimental} or {@link InProgress} to indicate that they
016 * are not yet stable, even if the class as a whole is stable.
017 */
018@Retention(RetentionPolicy.CLASS)
019@Target({ElementType.TYPE, ElementType.METHOD})
020@Inherited
021public @interface CoreStable {
022}