package Java;

import java.lang.annotation.*;

import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.SOURCE;


/** An attribution of thread safety.  The target element may safely be used by multiple processes
  * running in parallel threads.  Such use will not of itself give rise to concurrency faults. */

  @Documented @Retention(SOURCE)
  @Target({ CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PARAMETER, TYPE_USE }) // [OTT]
    // A target of `MODULE` or `PACKAGE` would be unclear, both in meaning and utility.
public @interface AsyncSafe {}


// NOTE
// ────
//   OTT  Other ‘TYPE’ targets would be redundant with `TYPE_USE`.
//        https://stackoverflow.com/questions/65443843



                                                        // Copyright © 2020  Michael Allan.  Licence MIT.