import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.Nullable; class Foo { @Contract("_ -> !null; null -> null") public native String nonTrivialAfterTrivial(String x); @Contract("!null -> !null; !null -> null") public native String repeating(String x); @Contract("true, false, _ ->\40!null; true, true,\040_\u0020-> null; true, _, _ -> fail") public native String booleanProblem(boolean x, boolean y, String z); @Contract("true, false, _ -> !null; true, true, _ -> null; false, _, _ -> fail") public native String booleanOk(boolean x, boolean y, String z); @Contract("true, false, _ -> !null; false, _, _ -> fail; true, true, _ -> null") public native String booleanOk2(boolean x, boolean y, String z); static final String MY_LOVELY_CONTRACT = "null, null, !null, null, _ -> null; "; @Contract("null, null, null, null, null -> null; "+ MY_LOVELY_CONTRACT+ "null, null, null, null, !null -> !null; "+ ("null, null, _, null, !null -> fail")) public native String test(String a, String b, String c, String d, String e); }