@Documented @Retention(value=RUNTIME) @Target(value={PARAMETER,CONSTRUCTOR,METHOD,TYPE_USE}) public @interface MustCallAlias
This annotation is useful for wrapper objects. For example, consider the declaration of java.net.Socket#getOutputStream:
 
 @MustCall("close")
 class Socket {
   @MustCallAlias OutputStream getOutputStream(@MustCallAlias Socket this) { ... }
 }
 Calling close() on the returned OutputStream will close the underlying socket,
 but the Socket may also be closed directly, which has the same effect.
 @MustCallAlias annotations@MustCallAlias is written on the type of formal parameter p.
 For a constructor:
f of the new object.
   f must be annotated @Owning.
 @MustCallAlias
       return types, and this method's @MustCallAlias parameter must be passed in the
       MustCallAlias position to that method or constructor (i.e., the calls must pass
       @MustCallAlias parameter through a chain of @MustCallAlias-annotated
       parameters and returns).
 PolyMustCall.