001    package edu.rice.cs.cunit.threadCheck.subAnnot.predicates;
002    
003    import edu.rice.cs.cunit.threadCheck.subAnnot.PredicateLink;
004    import edu.rice.cs.cunit.threadCheck.subAnnot.Predicates;
005    import edu.rice.cs.cunit.threadCheck.subAnnot.InvariantAnnotation;
006    
007    import java.lang.annotation.ElementType;
008    import java.lang.annotation.Retention;
009    import java.lang.annotation.RetentionPolicy;
010    import java.lang.annotation.Target;
011    
012    /**
013     * An annotation used to designate methods that are only allowed to be run when the
014     * method argument indexed by value is null.
015     * @author Mathias Ricken
016     */
017    @Retention(RetentionPolicy.RUNTIME)
018    @Target({ElementType.CONSTRUCTOR,ElementType.METHOD,ElementType.TYPE})
019    
020    @PredicateLink(value = Predicates.class, method = "checkNullArgument", arguments = true)
021    public @interface NullArgument extends InvariantAnnotation {
022        int value();
023    }