import org.jetbrains.annotations.Nullable;
abstract class Node {
abstract @Nullable Node getParent();
abstract @Nullable String getName();
Node getRoot() {
Node node = this;
while(node.getName() == null) {
node = node.getParent();
}
return node;
}
}
class GetUnknownTest {
private void test(Message message, boolean isApplicable) {
if (message == null && field == null) {
return;
}
if (message != null) {
field = message.getHeader();
doSomething();
}
if (isApplicable) {
// Dubious warning: message.getHeader() is not annotated, but assigned to nullable field; should we consider the result as nullable?
System.out.println(field.hashCode());
}
}
interface Message {
Object getHeader();
}
@Nullable Object field;
native void doSomething();
}
class BooleanTest {
native private Object getSomething();
private @Nullable Boolean field;
private boolean test(Object x) {
if (field == null) {
field = x != null;
if (getSomething() != null) {
field = true;
}
}
return field.booleanValue();
}
}