import org.jetbrains.annotations.*;
import java.util.*;
abstract class ObviousNullCheck {
abstract String getFoo();
abstract String getBar();
void test(String param) {
assertNotNull(5 + 6);
assertNull("Null!", param);
assertNull(param, "Null!");
Objects.requireNonNull(null);
Objects.requireNonNull("xyz", "xyz");
Objects.requireNonNull((getFoo() + getBar()));
Objects.requireNonNull(new ArrayList(), "new returned null");
String s = Objects.requireNonNull(" x ");
String s1 = trim(" x ");
}
@Contract(value="null -> fail", pure=true)
String trim(String s) {
return s.trim();
}
@Contract(value="null -> fail", pure=true)
static void assertNotNull(Object obj) {
if(obj == null) throw new NullPointerException();
}
@Contract(value="_,!null -> fail", pure=true)
static void assertNull(String msg, Object obj) {
if(obj != null) throw new NullPointerException(msg);
}
}