import org.checkerframework.checker.nullness.qual.*;
import org.checkerframework.dataflow.qual.*;

public class EnsuresNonNullIfTest4 {

    public void add_bottom_up(MyInvariant inv) {

        // The problem goes away if the below line is deleted or replaced with:
        //   Object x = new Object[100];
        Object x = new @Nullable Object[100];

        if (inv.is_ni_suppressed()) {
            Object ss = inv.get_ni_suppressions();
            ss.toString();
        }
    }
}

class MyInvariant {
    @Pure
    public @Nullable Object get_ni_suppressions() {
        return (null);
    }

    @SuppressWarnings("nullness")
    @EnsuresNonNullIf(result = true, expression = "get_ni_suppressions()")
    @Pure
    public boolean is_ni_suppressed() {
        return true;
    }
}
