import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.Nullable; import java.lang.*; import java.lang.AssertionError; import java.lang.IllegalArgumentException; public class AssertIsNotNull { void bar(String s) { if (s == null && trimIfNotNull(s) != null) { throw new AssertionError(); } final Object o = call(); assertIsNotNull(o); if(o == null) {} } @Contract("null -> fail") static void assertIsNotNull(Object o) { if (o == null) { throw new IllegalArgumentException(); } } @Contract("null -> null; !null -> !null") @Nullable static String trimIfNotNull(@Nullable String s) { if (s == null) { return null; } return s.trim(); } Object call() {return new Object();} @Contract("a") void malformedContract() {} @Contract("null -> _") void wrongParameterCount(Object a, boolean b) {} }