From 02ec98727dfb263625534247ee9357885b0623f9 Mon Sep 17 00:00:00 2001 From: Yeahn Kim Date: Sat, 14 Feb 2026 20:24:37 -0800 Subject: [PATCH 01/14] make new option for jdk infer --- nullaway/src/main/java/com/uber/nullaway/Config.java | 7 +++++++ .../java/com/uber/nullaway/DummyOptionsConfig.java | 5 +++++ .../com/uber/nullaway/ErrorProneCLIFlagsConfig.java | 10 ++++++++++ 3 files changed, 22 insertions(+) diff --git a/nullaway/src/main/java/com/uber/nullaway/Config.java b/nullaway/src/main/java/com/uber/nullaway/Config.java index 5745666bc7..e03d685fc1 100644 --- a/nullaway/src/main/java/com/uber/nullaway/Config.java +++ b/nullaway/src/main/java/com/uber/nullaway/Config.java @@ -285,6 +285,13 @@ public interface Config { */ boolean isJarInferEnabled(); + /** + * Checks if JDK inference should be enabled. + * + * @return true if JDK inference should be enabled + */ + boolean isJDKInferEnabled(); + /** * Gets the URL to show with NullAway error messages. * diff --git a/nullaway/src/main/java/com/uber/nullaway/DummyOptionsConfig.java b/nullaway/src/main/java/com/uber/nullaway/DummyOptionsConfig.java index c6908e355a..c7f78642e8 100644 --- a/nullaway/src/main/java/com/uber/nullaway/DummyOptionsConfig.java +++ b/nullaway/src/main/java/com/uber/nullaway/DummyOptionsConfig.java @@ -204,6 +204,11 @@ public boolean isJarInferEnabled() { throw new IllegalStateException(ERROR_MESSAGE); } + @Override + public boolean isJDKInferEnabled() { + throw new IllegalStateException(ERROR_MESSAGE); + } + @Override public String getErrorURL() { throw new IllegalStateException(ERROR_MESSAGE); diff --git a/nullaway/src/main/java/com/uber/nullaway/ErrorProneCLIFlagsConfig.java b/nullaway/src/main/java/com/uber/nullaway/ErrorProneCLIFlagsConfig.java index da465bb634..b8267f6ab7 100644 --- a/nullaway/src/main/java/com/uber/nullaway/ErrorProneCLIFlagsConfig.java +++ b/nullaway/src/main/java/com/uber/nullaway/ErrorProneCLIFlagsConfig.java @@ -87,6 +87,8 @@ final class ErrorProneCLIFlagsConfig implements Config { /** --- JarInfer configs --- */ static final String FL_JI_ENABLED = EP_FL_NAMESPACE + ":JarInferEnabled"; + static final String FL_JDK_ENABLED = EP_FL_NAMESPACE + ":JDKInferEnabled"; + static final String FL_ERROR_URL = EP_FL_NAMESPACE + ":ErrorURL"; /** --- Serialization configs --- */ @@ -245,6 +247,8 @@ final class ErrorProneCLIFlagsConfig implements Config { /** --- JarInfer configs --- */ private final boolean jarInferEnabled; + private final boolean jdkInferEnabled; + private final String errorURL; /** --- Fully qualified names of custom nonnull/nullable annotation --- */ @@ -331,6 +335,7 @@ final class ErrorProneCLIFlagsConfig implements Config { /* --- JarInfer configs --- */ jarInferEnabled = flags.getBoolean(FL_JI_ENABLED).orElse(false); + jdkInferEnabled = flags.getBoolean(FL_JDK_ENABLED).orElse(false); errorURL = flags.get(FL_ERROR_URL).orElse(DEFAULT_URL); if (acknowledgeAndroidRecent && !isAcknowledgeRestrictive) { throw new IllegalStateException( @@ -587,6 +592,11 @@ public boolean isJarInferEnabled() { return jarInferEnabled; } + @Override + public boolean isJDKInferEnabled() { + return jdkInferEnabled; + } + @Override public String getErrorURL() { return errorURL; From 4bccdd04bc7616a99e12671fbbe2e9ef43e66a9d Mon Sep 17 00:00:00 2001 From: Yeahn Kim Date: Sat, 14 Feb 2026 20:25:09 -0800 Subject: [PATCH 02/14] make library model load jdk nullness data when option is true --- .../handlers/LibraryModelsHandler.java | 51 ++++++++++++------- 1 file changed, 34 insertions(+), 17 deletions(-) diff --git a/nullaway/src/main/java/com/uber/nullaway/handlers/LibraryModelsHandler.java b/nullaway/src/main/java/com/uber/nullaway/handlers/LibraryModelsHandler.java index cbae28ed61..3256f082ac 100644 --- a/nullaway/src/main/java/com/uber/nullaway/handlers/LibraryModelsHandler.java +++ b/nullaway/src/main/java/com/uber/nullaway/handlers/LibraryModelsHandler.java @@ -477,8 +477,9 @@ private static LibraryModels loadLibraryModels(Config config) { ServiceLoader.load(LibraryModels.class, LibraryModels.class.getClassLoader()); ImmutableSet.Builder libModelsBuilder = new ImmutableSet.Builder<>(); libModelsBuilder.add(new DefaultLibraryModels(config)).addAll(externalLibraryModels); - if (config.isJarInferEnabled()) { - libModelsBuilder.add(new ExternalStubxLibraryModels()); + if (config.isJarInferEnabled() || config.isJDKInferEnabled()) { + libModelsBuilder.add( + new ExternalStubxLibraryModels(config.isJarInferEnabled(), config.isJDKInferEnabled())); } return new CombinedLibraryModels(libModelsBuilder.build(), config); } @@ -1558,26 +1559,42 @@ private static class ExternalStubxLibraryModels implements LibraryModels { private final Map upperBoundsCache; private final Multimap methodTypeParamNullableUpperBoundCache; - ExternalStubxLibraryModels() { + ExternalStubxLibraryModels(boolean isJarInferEnabled, boolean isJDKInferEnabled) { String libraryModelLogName = "LM"; StubxCacheUtil cacheUtil = new StubxCacheUtil(libraryModelLogName); // hardcoded loading of stubx files from android-jarinfer-models-sdkXX artifacts - try { - InputStream androidStubxIS = - Class.forName(ANDROID_MODEL_CLASS) - .getClassLoader() - .getResourceAsStream(ANDROID_ASTUBX_LOCATION); - if (androidStubxIS != null) { - cacheUtil.parseStubStream(androidStubxIS, "android.jar: " + ANDROID_ASTUBX_LOCATION); - astubxLoadLog("Loaded Android RT models."); + if (isJarInferEnabled) { + try { + InputStream androidStubxIS = + Class.forName(ANDROID_MODEL_CLASS) + .getClassLoader() + .getResourceAsStream(ANDROID_ASTUBX_LOCATION); + if (androidStubxIS != null) { + cacheUtil.parseStubStream(androidStubxIS, "android.jar: " + ANDROID_ASTUBX_LOCATION); + astubxLoadLog("Loaded Android RT models."); + } + } catch (ClassNotFoundException e) { + astubxLoadLog( + "Cannot find Android RT models locator class." + + " This is expected if not in an Android project, or the Android SDK JarInfer models Jar has not been set up for this build."); + + } catch (Exception e) { + astubxLoadLog("Cannot load Android RT models."); } - } catch (ClassNotFoundException e) { - astubxLoadLog( - "Cannot find Android RT models locator class." - + " This is expected if not in an Android project, or the Android SDK JarInfer models Jar has not been set up for this build."); + } - } catch (Exception e) { - astubxLoadLog("Cannot load Android RT models."); + // hardcoded loading of stubx files from jdk nullness infered output.astubx + if (isJDKInferEnabled) { + try (InputStream in = getClass().getClassLoader().getResourceAsStream("output.astubx")) { + if (in == null) { + astubxLoadLog("JDK astubx model not found on classpath: output.astubx"); + } else { + cacheUtil.parseStubStream(in, "output.astubx"); + astubxLoadLog("Loaded JDK astubx model."); + } + } catch (Exception e) { + astubxLoadLog("Failed to load JDK astubx: " + e); + } } argAnnotCache = cacheUtil.getArgAnnotCache(); From 53b9ffc8d8ebe401cf4e18935443d98c7f560139 Mon Sep 17 00:00:00 2001 From: Yeahn Kim Date: Sat, 14 Feb 2026 20:25:33 -0800 Subject: [PATCH 03/14] test for new option --- .../nullaway/LibraryModelsHandlerTest.java | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 nullaway/src/test/java/com/uber/nullaway/LibraryModelsHandlerTest.java diff --git a/nullaway/src/test/java/com/uber/nullaway/LibraryModelsHandlerTest.java b/nullaway/src/test/java/com/uber/nullaway/LibraryModelsHandlerTest.java new file mode 100644 index 0000000000..990176a81d --- /dev/null +++ b/nullaway/src/test/java/com/uber/nullaway/LibraryModelsHandlerTest.java @@ -0,0 +1,51 @@ +package com.uber.nullaway; + +import com.google.errorprone.CompilationTestHelper; +import java.util.List; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +@RunWith(JUnit4.class) +public class LibraryModelsHandlerTest extends NullAwayTestsBase { + + @Test + public void jdkInferEnabledLoadsAstubxModel() { + CompilationTestHelper compilationTestHelper = + makeTestHelperWithArgs( + List.of( + "-XepOpt:NullAway:AnnotatedPackages=foo", + "-XepOpt:NullAway:JDKInferEnabled=true")) + .addSourceLines( + "Test.java", + "package foo;", + "import javax.naming.directory.Attributes;", + "import org.jspecify.annotations.NullMarked;", + "@NullMarked", + "class Test {", + " void use(Attributes attrs) {", + " // BUG: Diagnostic contains: @Nullable", + " attrs.get(\"key\").toString();", + " }", + "}"); + compilationTestHelper.doTest(); + } + + @Test + public void jdkInferDisabledDoesNotLoadAstubxModel() { + CompilationTestHelper compilationTestHelper = + makeTestHelperWithArgs(List.of("-XepOpt:NullAway:AnnotatedPackages=foo")) + .addSourceLines( + "Test.java", + "package foo;", + "import javax.naming.directory.Attributes;", + "import org.jspecify.annotations.NullMarked;", + "@NullMarked", + "class Test {", + " void use(Attributes attrs) {", + " attrs.get(\"key\").toString();", + " }", + "}"); + compilationTestHelper.doTest(); + } +} From c34a8661ab3c20c0e0f20bfc37969e921aea14e7 Mon Sep 17 00:00:00 2001 From: Yeahn Kim Date: Sat, 14 Feb 2026 20:26:08 -0800 Subject: [PATCH 04/14] jdk nullness data astubx file --- nullaway/src/main/resources/output.astubx | Bin 0 -> 228205 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 nullaway/src/main/resources/output.astubx diff --git a/nullaway/src/main/resources/output.astubx b/nullaway/src/main/resources/output.astubx new file mode 100644 index 0000000000000000000000000000000000000000..2034e0ac7881962f5c71dd5955d423ac2db4bc02 GIT binary patch literal 228205 zcmdSC%af!@avzpF%XH^q2_!%enB+DRyNksF+vx2<^=rDes~_7{-7`D;0J1Z`s>52#63xLZk!;l1U&1ql_jK4=~DPG80WYhzFU`q=R(PAE1NIGLvNb zxqCc3Uf&mARn07PnCZ&+!XM$`5#izC;qkdY`#1k)F!;B=G8nGbC*w~x=go9}d@-IZ zm#gh$J6|m~<0q@-ligx5_>poAe4e~oG=r~yGI=u@Z@#w}AAaND{<~>&PAF~;^{@B1 z&SJ7W86R%f^X18nq+q_>js_2|1=ncsGnc_L8vI;8u%pxU>MhA&G}!M4nFv9l`uK{d z+HimOdT^t!R0k^FznsUaR_Z|-Wv^Ww?M^uMW9cbcUz}ufd7(%f8K0% zi|t{vy_qG+s`nminx`4ToK3c;<2&<{dl(dFlLgW9zXZ5YU$n-%LgSaX@BXyP7(Q8&I^xgrHI0gPf_Li z!LfgUa5)~t!--P6f> zGTk<7t*(AO>jRpyP}IN9*=jT>_I^8T%EXD#MB#w! z(CO4~YJHKy(cq^#=-WB>hKy%z1$gNzVs_FMQg$SFg4xN}gHg$7kkd0oEtr2pSe~P` z@snj&4^1baaNx<(lu3Z-UZUuBes@VJ1=F4&fRF&LdOUM}yoVs-$v6KRl8#>vT7&5T;TP*0|)DQ z8HXtSfy0^AS+Df%h|CB$Y{#ZYKptOCi;voo2E(Bq>+^Q3@z^LL)&u2HJ5HnMc~r@$ z=}^>KWO<9pG0Gfdo=ibiHz7x$3)_Jb1arXt0{hWv3kYpIR2IDx%I}8+gq=x=jc7&!h>7KwV%LB>MjG^QvU%@-4J4V;%}socZY0(e`WIZ)OnU=M+^vzU zQgaBQVazcsu=SAn2dznglxIunb#X!k*q#! zlT`s%6_dqryKJ`O7tarfJ^Ul%s;J{p<(Tql@Y5Oo)go(V2I*HbU`B&nk48W-r3iy} zKlv_D7G za=Y9FuuR=xX`Qa0uioy@NU8V_QLEO8C<2J7j|LsBb##1dxu~B`ho4Yw@{4#}h*p!JJA|?JDbrGN=bYrnvo{R<^yO0D?%t{_> z2YY(M8^a!Is~ShR+N=;WSeey!F7u>U(n7TXgfBp zaifcv&2CWoq{9vgt%z)|=1g7H7cB-w7G1}h6VCPV0O-)L77HWBlv}q|tK4j#*Q=Zl zJAtn2pbmR28Pj^;NKbbEx>K;2RB|_28=5#DK*o?HGFw zxzV6Qx!XqDXwaeD)dOub_)15!0{h*KjLvSa8D4#@IYqt0f|ns#>{mM$a<xgu}fs+sZ9tm@tYF>{>90V3w__gdO-d}C;X-lbj^kGA0}acB={ zCy0uL@TVu8P}={;eWcL5biL9aO&i{iuZ}m=E5);S*eISe^mx~RU=FJW`mplZx;dY$ zo0)Se-(+3fB;gp0H#w*Ar*UOOe!n7vH`v+w1L`sYIiw*m*mD_wR#k>7ojcaRhK@v< zZKy{DaD>PzAd#FTjwac)fbx*KVq79D} z)^(X%P#!ni3G{zLBj5gw)1n$($qySDxsltt23>w6Wzl&rc-lleDY;Qp7+hJzex58N zHePUnHx6&@UMWMi`v4DI=d@s`P(InK`aM}2w!nBL6=K7%t~H_ldF2=Sez7gn54As< zvINaul~96a#GH7SOqr98nMDS4O$XIX#?rEyAyGAb3c8w=qFQ-sL{`yKy$vhNzNV4d zVl89pZeN`}lkD-+DPC_+TNuhKX5IK|8y(tjUM631ylCfV8MN2PvLs7 z>U9w3yByu_txx7bS%|cPc>_{wOaV4BQ3+m!A5ovPQQ?m?Qaoa1GNcW5)8T3GN zGF}Nrs~VBBi>0=CTBy0j(89V?=2{txHW0Yi3%&m<5bu=nXmI9aQoy0iypXTXHSXI5(s|7IDJS9ay znV5_!OtCU%G5NTx7M{xbnZ?=Jhfy2?3&&d|DI?ZsB-<{YSA+v+==o!iG8#3FQUDypqZodNY#8wE1axye(f%cq7T+O zm9E7&8u%?=nZMZn%QxTe54fki+pUbaLeaDHR1NM5-Ou8lRcM$~^_t<3rP4MH#Nwqz ztT0Dudo>kvY(>S0E9?wA-w+Sk-m1hw5+fYhUTN29*B?&m7LgcRX{+jlD`SLk6-J9b z9ZZGGWTW+lkhQE)qrvxGV+sh>9MZy>QmJ|a&7ZOtXh#NGDp!9D+=3yn)-H)7Fx^rd z{t&K(kI0TovG@py7A&Om)DcH`H^Sd79Ad8w%C&j>Ij@8ca(^48R=j5+i^q%tb&bc`7h;Ra@7jnR_$M)G+5A}j8x znnt%BN|Qnv-(*drc`sGRS=;`^b_eh1isJJfOGrkQ>c^? zZjY0z2aMaPPoYvQRzz?FA=t9T&X5YDfsZLjkvW#6GVx^a^7!*H1${u%_V~z>0v)C`bD463NIEBXpVfy)6u4=}kuue`b>!Ls!r0>GZfev1ZWJj?ZDx{H zzm^e7Do&s4wxTVgk{2~bR5MZb-Z#qBQL|;}zi|}YKAt317AwfON8|30Wy2{!5=>jh z+*cr@L7RzU`Ry%>(ZI)smYMA-2JKNVBkj9(>hqH_))tL*-J}n6%a~dQ5iqG`PN!EX zqib8w6=!WTP82bQ=|!0>K1i%>#)(km^_eGpk8i@Yc)Taa4p#9Bn=!?o)Q|$gg{91& zm3-&ZB%$wFVMj1|HQ6-waQ|j30a{$h?>QPQ9Zz{6YJ>|MAh2ia)wG%I)<~@qV^wmH z)iWs=4gS`p>D^r|c4y1WP|dLMt9{uxq7*~dLi}6b84Z4=FZpY2eD6LG>d)5mH}gev zay?=g4K{s+z%`G z)*EE=y1WjI2CKf!hM3Qg_UBP^aT%o_4bJ-#+&?>Ct+&nWv!i(b-4!YRXMNjvcfHzd zaKPBCo8`2*j3O~bwN*)`wxnP*=snl%FK5lW{pIoMG8`H;zv0xq_X_jk-qB@rjs_Xc zt-a|T?#`PvtN&>rY0Z{C=f!0y~_ZHfNIx z>N+x@68D4Ma?0rvFVVKq;5Yip(vrLUWSkM`-|Wl9vrV&`t*(^^zbe6Iy}OuWxuYq- zrTF8k0-16VJI8*O{r$3ywm2!CXSczHk>7Of{;X&!;j2*jU%wI`$#i@&PyZZpm6zYY|LJk+HpiD!xqtTOl(W1Xy$xHKEx0w8kp%5)A55^fnPGPe zV_-YSQaKv@k`vFJ$##1Bf-~%?2{Bh%u?kVA8C%6)Ov~ZAIn0&TQ6Njm#|P)|)M7WR ziVuM%@*c(iHuyiWO}%O3c+HF_H3X66a_eb7}1^r5)Dny?F=8{WdU zw9`jRX4}b->~-Qnba%B|ZfS_^K0Rj1|NX7+550t26(Q|=5VK-t+tJyM||fxMJLjCC%X+LW|o0RfR88Z z%_*Fd%}kJX6P1h11iNY0V08?@{d?VTUt*pJZgw&qzkFN+BVtjsUerLz9WVuT$c)0l zy{s1z&oA%BjAa9->t^x%@xIuqhpXvpn%t+`)%v2l;aN<=Qcp~K)79B{vs;e0@cV4W zpUmdt`)^=We`D9|8aO)^-OPw=ctKmNPEL@Nb^LI$oGqHQT*Exyy;{sSr?Maf)ecrC z&ztFLJ+sHb!B>lfJ309BV6{fr5c22pifDg83FT^0P}gFy&hh(8B$=kfv0k5LF0m=y zv(Ry6BJ42P0In>grTbvM0K*v}$OoI*Jc}bE0mjD77rgeECkxL!;EpUjSNGTJRjY5% z4S1SL?P*FDtDQ^c8}#D|ISMkZQ(Y`^oB=BL_2$t1nM2aNX%=dVv>le|Zigm&n1HV* z&HBj%DbejsmjXYw+Z05s1NIE8fWdbf4klK+^|ZOOqftSf7M6gQ17CY##*lA`1SeFdtC?X%Vm%5tLRJ)9jNFEs6!65=iI>OCW-~b<)%_ZOE`VAVZ1osbcB;wg zhb-UnO2IQ^EI(^7gONGZDn(0PL3j=QpVD+!A$AWKU^j3U0KajKU6%PIDwb#ZXVCogm1F8-vzv z>T``?4zQp|PlYu|p)(3`nvyhHRfmj;92*b(7zZ2Ya2&72dQjqot5-Z7Ayd+Yb(9n~ z)ef2UMuW0qUmZJnQp8Pg-Q2q=*aie#k$}S|5~}YUIWlXbeqOCqs&@*mgwf!4I@RvV z^y(Wg$7!Ecj5;b)qd#Wo>~1|PRK zqaKy&L#xjncHI?l(?EXM!TG!SHs^6ve2OBB1`@ts7H2Ich1!bXJMBzv>4C~BE){O2 zgyO?5a=yXxvQA^k?14iO?ybD-CU%|DADd~h2sqCLhS{8{MX2d&c|6bghUM6x2#4Kt zu5ohQ)C!gEh&!1iVw-J7ByxSANKW?wSE||)9kuIC&_VTBC1pa9Ro{E{C_7rOyS5%_ z2cN#*>ru+JzGBk}r9LO9>ZFdgYmKRAH1B027XWWpkzP|d%fj}MF~IUrG+v0_SX>5EF2DVkH6ZU!bRu-~RM; zJj3bQ6Fh2~J&m9bFDHu~d33*=Kv)_3T5-FPpf-Vu3p`td2ZZWC9?aJpJX1Me%(AV? zQ8}1+h_A#IZpH=7*SdK#hePdfjsrrR$l-O~xLOvD-t_e_Uu}nh*Lp@xN7NtDR6(Zj zbGCxsTTOTNxw5BkF(_>T82v^oB+(nrmpIJc-f50kSoh-UH{t?Z0gQ{Bw{^ZDmlcPd zCzHNfjI9mv(+Q$jaYzs}U^eHIY4hUwJ{t6sRX|9dc07NF>Zul4bv0FDlC@)ko!e$G zkE?jPgBwKBhE#iEE~w#0(4M<1*rhyDQ%$uE(e+|HI6Um;ZLwOt-klfa@wEhlKTy5b z98d5#wdbK}dh?V071_y;s zCmbn^LOvKO7R*i5?{`xJ`xY#rW^UfT8^1eSjJNB_a)aS|Ha@a{HEVYsuBLEj_L699 z01V<7P8iK*@@{+|w{W%>wC`TP?&VpGD9|UltjGtP!?je9+6i+?6n1Pk)PXU#=vYT7 z_g#)fEwLIhKdakvxc5=D5K1j|7Q-_N2AS^95-wo%YNAR?O7J2ElDfl#$fFXR9m$6m zn{9J;b(#(j4j{W|Qo3(&i)YcLrSUD*pD!Wc5gOK}_9}c8Eq0+P>3HuYWrwGt#o2qw z>N0I-i{)tt9#T<0fzg1Snxgj`mg*QO9Rj5vvq5NPte)d48E8qtXz)kWVb-KWq}0J7 zk*BZ@$3{|vmDr9uTRqYIgxDntj7|jnF?AU{t{d{wy`AUW4ce}*4XiYlO-Ne?GxuAf z%U!gU;%9~i{09ZzW6dYRGJWu}gUv|+(9IhBzIb+xLi)@CaF(i_eh~6e0CO~L)fi7d zifVG~qUfro6oV~E+^f;{%Nt>VO|7786K&0uULTpNiK(lFu4+n=otN>fBD1z%@rIab zqOxQNn*gq>p>kHmXu!U@t6>veS5t{X&))rOLmwa_`wN5VIIt$5lwmn(mgRp9YGi&U1RhzO~ATrzTT&rw)hj;5C|~~Yc*+#eIKsQ z$aG!D*vGozS>!zK1#_=qFdDFD!fp++xUXR%2$E& zwmRR^U%|Q{gKSoZ0%sYt4CHVmOKehrO9+|@Ia7mHQvr6y=L>kCKRiXs87jz3oZqqc zlL*@c{_4|a{BDBX#~9aBn)PzB7{A*rw$m}{o#Sfkddvq=e9h(Y=0y390z1z-?S6{{ zEY=-fkb_ThGq&Qtv%~2}v$l7#YAX(x&D$r3`%7e2?ns`(*BcI26A&>8r>>om-fZw4 zot|vGK{Wb|jsCG@(4dhie_@R9@o^PKyUZISdz-Lz06mJdB|S!cEp4URt$<*-|Gr}0qf8Yg_mufQn7%D48` zcB_JGZ0JAdIn4Uc!%yb9;E=Uw2z#t_`OTjG(uCr0st@MQTRTQC=k_K)&rM$qoQ4}U ze=X6OPH$;=lOx4D&e&LENr> z*H=95N_{PtR>sFU0c3>w4dS@FvEQvgH^)ub@oYOIxAVQDd-s~nbUi;OM@KjQZ}r4) z4kr)Kn`t-lUd*3iEr(0)?qf=A(;PP2Zv4l!%)dLIY){8)jyy8Gm$WOv!uAwBmm9$GuSZ>)UGazuSmma(Ie!eDeC#-L2-sR69$-LW&L+ zzr;3`{Vr~HIawql`<)m_hr3tUcO|w}#$@|DdQR*^4c$x!owetf3F)N3MBvC2B&vng zeS2CzN%|RDfxn!r=X6oo9ohIPEIc`~6Ev%XOksvwUTFZ z{P+%1Pabk=1!GmHkJ3ZdUK`3*m?84I{cfB9(}FM>{JTF8x~$_xo;boh`1)DMLXA6- zZjgyY^oatT|Lo75#A-QzcO}lToMEbN*0Gj}u-bdnj69`-x<`4lvsN8!s7W3QbJKi6kWJ3s@1O!EYx- zv@q#oCqE=b!wda+X;%JrH!C_6VZMB`dMzh1ZSB@}bggdxm#v(zhD~O0SyMt_Ih7;B zqp{(|ZR`Z!av0Li(zWCoaMF&^;GcX(EPGwPB%_@1DUgCzIF_w(KwnwBp4ZXfPrK!F z{bVmGBEFIO*@#H%met|W;9q=p!pbplNwG~@xz2y2++Adeu@2IY_SyRv^H_{wWl!hk z8*58FJ#NFNhOt-#qrpil0s0t(W6jwcx}9Uw$%K;0F3=)99=>>#>JQ0O?TSp!$-oD+q#cCNf|I2xFk5M>YO36Hz9icW3c-mru@DMBEm zgfOqC%3V%FLH%rN-)Qh3Cj!)i`OX>+_$jU~*jp{tE2hR`=cG$c2_+MX?38ZT2`8Zm z1ZcHE&LFxmaGt>cgF9jD2If>c0r39W*$yvzEE?-3Tdlj%q&&FEt{XTNU?0-=>_+~R zGqmFswxAd~l!lPxU!BB|pWqARzzuMcq-ndmC7fC*#bV;`>u?k}d5V;=?D4O|!kLLu zPT-w{i(^NL3hVIj8(AqHJ$&jA6`F-ZA9NGOZylDjSxBY33B4FNQB&|6oT5VIO%rNBf5*T(bWbHseq>`F2PK&G~+3YWK}k|v4d_a;p4R- ziU+mB55C_F?s+mLx8W`@@f6)g?YZ^-ZCVfL&kQN!uTsleiIg{sUh)(_CdsVumfKFv_KP!aMo{SslwUQ9AF*q;xoW$u8MXq80IuyDPTqf zy;u8hwM^|!uo2d3mfL1chn#e>yY*F_1)O~>rmD^ga8|dx3Uy!!RijP~BENo+$6!uZ zgb%tUY69hzK6yNNui(ubaZc_eNv$Q>qoF-YNv%*FOum2NteCoWkrR@<8*lJF*mgQu z&#-&lJ9^&Tj@zQa8V;1f%WUu2y%*i^oHZe&i{r*~n9WTc0#4o-BDf3w`%G_NVDZg2 zQ<$_Th>`2&`sY5Gy&k_g8&Btmq?126n^B#5Q$f*o(;1 zJ9^;!O~X_31eZ*#Ib1YhW69GsmkLF@8&TeSh3zEr-hUlVLrfFLh~ey}eXoGTAed1U zem9mo5tbJ?j^j9n88H*=m5Ne`n-k)AFmD#KZbrW98DVuoc+T|o;bK+M3o$6|^5_MI z*Zrw7D7~564SG9bm_cdbJzpUZq8mQu`d;&DcT%@-t4<3hs>8{f=3sKM+EtK`*=Kn} ze_vP59uIQOwiYi zz3uqnYI}%(c_E@465Y*GquV0E+a620kGq*qA9F7DZY`tE@-um$R~sQQ3edMzApF(h%uiWTNIQk+D_h%i*o-tZuL z%J!E$F4H}Deu2Q9`n+Dh`WfhuakteS+&oM%xG=&;&H7b?cX*HHHTI~9*LK`Yc8JA& zZBUFYuDk1IW+DT-n|C{4?)>$1^TjVBb^7wzqq~P+{9-r!&8c}?E4=0;bKE}ND{tdHSI8ic2LbF~i$QS)9 zRrJzI6r+u2tY_9kFa%p%;M_#aP)OGUA+m0RN19A%pi#_HYg6h<7Rgnpkfds=xgyp< z%tS~{SIZ^FU#1ZXBOg74^wN$AwIP&0jaT3!N(L=C$BoadhEc@FKgSji!gTPdw62@u znBr)_50hL~5LT63OH3Zl5HEFo-7qwMG%d#Gvx*xXry@Z)oS=&*5}`@kYC8j~Z;f1* z9@|U8la2YysE(?-1%@%9c|50UTPEN9J9CK9Nr}Nf#NAGE3KAO99{szMBG1w^FoG!Bky0CtFw;sA=i~9%O(*gq;1S*hya}^pxZatgTsTry zpph(I6dJVKV#UE)iJWIGh1`*{qB1e#(-&f2$I?v`JzwONKiFVBnrvRXTYT(jGS(zd z)KW0|3qLDDPf?kjI}Sd?msUYR049H#6sE*!JKU2f;%0*oUgZdDD^S^MpkAU)KIgfbumREfGoalGv=$7E4H6zOWaOhZtAA( zFH)b14vC_5Q~N0oa(}t2aG*Cgx<;H0Ss8 z&)q6SmYXlI3|Q+dBAWb=$>#JfmKK>90{%s6S%{=I&v@!(Ela`+UK%vquH=sdgSpWa zHnkpHwb+U-BY$e~t)tseK3qR*-aEQ+ByikFnj3I1jy;u`+m7&Vmhc$};fPSIVO3!V z_GGmrSKE6>!K;V1_1T&kPQR4)jXkB9Zy3K9gzZn2Mck6JFnG_c05nbsWq7>5z{AIo z%}DIFuuBT{KfuOP3o}jbZYOM#D%*pdcsme!nMjWVubLaAtb1?ERk0cKT*SinQ+jGhq&`jU3M4tmc2lDB!ya?-pA>}BZRQM5CM0^=QgSX>j z#>Jvif|s6D1u~eJfC@q~+T>*?1%_d`7F8E345@M@7~W7!p1G$Wjj<#ACw*OHCm(;< zOkO*8{LNwTlja|JDS^AMySi#HRd#rBF>QyyLpJSbp#E^kgR6J*h^!;*ML%DvU?(G> z$93VO6|txU8c-Dr820t_bn9w!1ZmEExoNP)VbbZpSWYLqlT&}6-KK(x0mr49_K8i+Xf-f3zKauN z6^QYv=~|jq?DK^#@k?oaXhlBBiofL<=pHqoUiAEuFOxV6EiAHsG8+dpP z!FG#MD-B#yE2SA>^_*seHHw+=F;k)5kB6!1ovLk^%f3V;6EI4lKCMH#N(_cmIoOP{`n7@1tp-M zF(rooY&-83HH(8Uwg#8wN>+Z zyqIjUB=_buArJM#X~`|$mL84y!vtIXG$@TBksr?&ICLlo9YHoT${gaix}q6vvOeOT z4BpA^DQmFh_@h6kX7O8|>@9KksWE<{JQG4*v6*Vnb3$qj?JSnMsh8K#1B5y8ls-jp z0>AP)8vN!JdWJz6^FFpocyN%BBQ~63U{I7B8%HaAh+ItMmH1oN!iQ_2VS;|=xu7o@ zHh$+?*toaC%TY++gB8dyA|-iNOU-~QAX>D@t`@!}HeD^1_r z3f5QEK~5%@>LT&!UT$C>v4UXQ+D&Or%eva{%$Jk(g#_5(5Q9d_e{zM+ctIp@yueY1 zA^M_q_AySw{QBi4tBA)J;PH>Hz@rDnvW1PO|81>OZp5S8C*vKr7!p^uvF1g|>K5Y%dWQjTG=WWp{s8D~|`sP0y`r^uKx@;!dkumRXHj z*e~eTrCF}mvj6!CO|x2tJ`S|(I@rFNzWtLcw912$YVj{#OYR`(2pI>IX!SgG8|Tk> zUK64E#hEI#Tt|a{<*8jkv+|4@rNSI=Ddto|W7eXX>N;oH7j~9?0fz+I)pM*Wrkw^A zhc>NX|HHL)z$2`;X4)m*waef$XvhElX|>~1=RMbD8B^o`__P}MnRZlVWB<=9G}g|_ zFEA&621BT-MY&4KkQfa<^%XW4n|^`%)U|sw_Rc*^v3bgtUuF!N33P;Kzd@a}?BBXT-AN_o~p@oKh4oDvV{r(&Mf9$dM z?h_A6oBB@9dhh)I*b}${Z?enpiE4W=ms}N^Hr;G&6nHJ;LF^9ECq+E zyD=)H1tXl?s@*WZ;3-*{q=bSS%tuiyX6%p;mGA;uQeU;xfVE+eWMR**iY0-^JG8!x z=8SG(s9+)n2;r#_e(nimpf+`V08Nw>=Oz**>;)aNXSIes1NM-bHk5p?1sT?wciG6o zpJOz6s0C8S?iV3NTq&eI4lfRJ75ur6Bma}hVsCxI*Wvw5hGFSTMg?DaNtB>)3$j2d z!6%C__b)<`R&OPI@Eg}eL!ngRWQfk&;tsTGeq55UIU1-j6W6{uj7t*ud^07_0XIIz z(27$vOZ7%C6f&XY*s|e%_Fo&p!E7p-xj&P}2Gf+Qc5~?dOdxW6;9Xj;1r9WiMG1s+ z(8>7j0J@|I94!uj6^%_A6o{Y-qEiGNSlnmxKB9=gm9{aPBW-)%{u|gA9;@#mktR*s z{-q$bHnoFra5(Zg*jxe#15xX14%U?sMf>!on%mv?91p`e@=^$pZ-9d^iE53Zf?3(@ zb9ex7cqrwEMZi4Wno4@!3QP$#2q}H+DRQ~uuLXCK>%$rZ_v_HPWL#OE?P}&*=$3Dv z(OFp;4cJtE*QH zwA>U16WqXhI8W8|sG8icXIte@;|LilXk`l=$-vx3{_b2;f^@OeF%U zxkdn%kowX?5aIQ25-2hb@S}r!8*~-onG`bVyV4}G#2sGb7S%X1us0ueL#m>Gn7!&`f| z!Q$R>xgtMOkOf^x>;X=hxx$Bqvpv)Sua;ebkD0^LN0&JDWY;n!3uEu!7V&bv(Jk(5 z*`^~SRIrt|Bg`<_%uJF2TzZ0{wYQ#vF4VrE6IF#k2&F_5^S+DscXq!uHP;C;y6}0H znFsMAbaTIrcODIXG^(5nh?dpFBeXmeL!i}Wk(riT8F(gCxMfVqrQ7>xZHZEGcPVqI zXKjvqJ>~7MiUoI@WekCqZLeaOAwp^0x{tAR|2Dirqk(F(55#tMOiOpE9#(*@ou;@_ zAi1u4=ov28^mUxO5564d?*m?RjaVY4>yp_0qAIk575i1}9LmA*>J!*hG7C%YQ7;*p zifQ5`vqyfRCu9zxN&TtXf~g-OK3)#(Y%ZpI9~iZIE7M(?TZc!1&A3sSL=Yl}%!l#@ zpoD5PkVa;Z-5iqVaT8o?63M7mN&#Jv_-cuSQ}<%Osx6Y>yR$pSHBn{O>f#|Hl94+~ z^_N}mu8K#fj0Oj>HudC3b9;4c)C=~Gc(9MwWU6JQv616doUh7Mufd8Wgbn6x0{5b_ zy>K14Y)?G%=r7HeZm|uAR>Qo#Z?i4c7`+U8^15!$o8WSLj5XlZx^t}*kk=^~AldKf zNU?JLu9s^TQmIq+dkM1$Ge{ngh3}7FOJ_7VzIOgKe&46+F6rgkk<}mD3(8M=jo5Wd zMuShTDyeJ>Gz~AUE4Qa&Oo;8m<9CnO0dmf3b#jHNj%uz)12tZ+gvqyG@m3nAL3zrd zokOpV$?BNe0|vB}$b#~eC;OR}rPt2@uAV=Q&-X=U4R7Z& ztLL^qt_PbmFgUiUYjc)2-R{6Wd`&pLEY&en9qx*8EO{)9*@={vi_Ms_s-aQzLwY~? z3YYwA4F5`d4G8uIpm@{ zTn?MtLzz$scfH_cyrZ%isJcyPb@|Bep%t^fkep-i=4^4nObWwjkrJ1Mn}`apw1)gd z-}EB%-^Qcd5 zGCwkJd}!E=gGDj(VTf(@!DM-|!`aT!#6)YUP048R)HmT0IHg|#gmT80;YE#}kP&lzeeLx$-Yt257`I~A$L|9;GF(%0lC+s7H)Buua+?M+y!D4=xu z+>Hx*C#e|=<4&*}d#tOvT9{JG%BLPdR|J_a1?9~yN`xh*4o9H!tQthtb6xaL{aUve z7pv9loxWK@j$sK3Q!O0_{ij1Jy&pCK!hH5O^9*Q_2?K5}5u#V)L7@i^YWm(tIua-e zPQjE)1?9*UNcjTKdfvC8E9<}Kn;W3)AZ5}OyvcJSZq(6Im z*NU0UhV?&9y2=yHD2sbtZ}^`yH;@w`CFcc0~|yCTh3 z%2o>{K^)<#WXhANW@de#ViAN}9vvy4#R5L$%ji@m66kfpPM#3!|L(RP#tL zJj)I*I28@$<$G2)k3jd97g)RHLFrbS0YYns^PczU_A7B!0g*%p)FUzo8a!P|e5h1! z0ljoVIOI9cfa6FQX-`!m>VCkK#hJXFghWCrdN+VL;AFOPw%8jUuP$x92xX(@d?H2xpbfm?j}Vyq1ePmG%f!6<=Tu`0AwIigDw!5 zvqz5fj8v*(y|m2jAricCuOV&R*c~(YLZ!2+DrqbnZCnC{mjLE6KC)4|P>!D-qngGl zzTYxdwl*rzQaz1Vt$K;Rg;2ZQ%wn@!CT)FH#=EV zP!UMJ-FgXoV|eQ&``T7EsXezNtt$@Rmu~Mwv)!c$A6?N;E>Q+~PFq`ymkdO@{Prg= z=SmOEluGki`|ef(Cb7FcTEU1{UF75j9JUKwUy=R#@A$q-s9n*71t*~D%~-uyIKI?| z1}Wmekh0{g*`*|Ci_BnN9cwd00)M#|Y`q+)6IM=6UPv2?sn-V$qrne(VL1Xv!_`_I zrLfUUAp`dN2R3vm)ROF~E%DwVo=(4zI_GfGb>@kZL;BGObH2GxS#^`y+#cJ9jQ2u~ zfZUw09S*fOSb7;7h4kBe)e7@X#szkGw99MLe?sE>*37>&08+n!qIdNXK*;(IfpsDR z?O3>i5ClzD4F8~==G6ruwEK$UE1oSo;xMOlpFn125n-SkRE2}81rGM2yCHP*=ob&4 z9qb=H*QVGV&uIuo{I-14IOOg!kFyX5X;BdgebiVUmZ%vCw13u^loS;|c}8dwQ8s$s zGF713F%aBk@*iNCs*q*d|168n*-%X*Zo&)QMv9k04Kpvop%G-}^9<&vtpc`sdXsnE z^!_*Bi)Jcx?i)oY{)CVKT4gDB;&X}#_edPmZb7Q>O9lHshanU*oSJG&95ckP$#ISZ zN&CU>fd9v{71wWX8~LlKZS-$P>-IEPighp|HSi!PA>=FA1>GB!U+^MDdT%!gPRmy`{%Q!pzk)5E@)G|@ST`5tKMt$d@mmba zFVrudiv4(qKlr8ZKqxmjQX`EkA7fB~9v;fmP&0xrbQSr{3Fsv~KryvJ8h0+}>4m^2 z?f_K(UJA3k2{9V%GR#~Rw|g*xS1HAw?8hi4soI5IbCY~~62cU%q|9azPL$lSuGBcV zG?D`41Q)_aSOgD)s+qqZihF1#qBS* z@nBzalQS)M*Gj*7Jbt#@%B?HD!bjuFV?5-fK#CO`LMuluS%mW7+uJo9UQ%1(v*2Rg z)`34ouJZLf`--WIsxCAymK((XWS;S}=5d6erU9a8-1CPQn{8tPCxD3zAmo9?6;}Qi ziYBs3>IQ+WCa4t`8&8o?0QXl-0l?*iNrT%Lunx`3!RAqCCFkhNXdsf(NK_|>XeiPq zf(I9}k%cubQ@MbvFW~_c9RdS#B#v#Mu>D%3xF(dbB2~b_}OTE4(h^4DP9yP(V)2@{QII zBcf;|@*C+0-KL~#^3VSAcqJ1lvt+MZBb*S?dJFyu^*CU`x`Cw8U_czt&F(u_LG+D~ z2|-|!&1bH%aFY8nl=Y*?hloB0X%E=kH*_{aq15H{+?Sya5(`9Q2TKkrCrRXav0{7@ zvfsrB&)XzF{v*@7YAb~KD9w#-9=yY(Wv~0boHuV3lQLlkAuW<=f(L6KoViVnI`?iv zRkRLO^j`-&Eo*Ek$#CoB9wZC4SrE6-O4aVsisplI549qCIRyKmJ*k{*9iV}oSlM?X z@OGP5ZH_uPxK>+q!6T%m{|wnH8L9QuuETo$$CYj41r+{zOdR*|tghUh@vwc&`+S_% zT^so(Ha5BWzvuC{b~lHMZLnTlm9Np@Py3KG5o!zga%HAx6}h@7k}Z;ral^mr6hy^l zw~8m~I@(f~SbkuAU~X&X=;d0N=`(fnq?IYvXJBY^8IDE+b?DMc?2(B}Y^9V){gK)3 z;a?*K@|66i{WYYOY)_FVT;_G-A5?M~>4tbtDz(FJgR4ihx>nQLVM;rgrE2}qJdFn1 zN-5C7i#Lgy4qA!q^A3SOsidl+TssIyI-(ny8KX9%+x)smUI7k;~EGzxTCT8SvFYWJbHXm{Q$V!lZgTB;ll5g2c@A zXZ~AjGn8I-vFsGnqb~53?`_p&v+SEWH(co&k6v-Uz#U#6lK1rOl0sV#FP2ke++8B= z=31O8*c&5X&tkWkziChj@ge+(yV|)(!DukKBpC+d?U-Pq-BFgLJvwl^G~Tnyj%)mZ z*-|AtAws9P6}NzB0u!|kE^(LSaHlA-*_;_qne}<}1#~_#8~;;}zoNkY!fI zamH{s%XxbIxH(&`FYd3`t2NXsD#-{*0;L%K<$S$G)Z$|}5-^<`6q&*d7CF_w8Wz>L zN;Tzb&}A_zM2c(EH2y~w+wPN_x=gaQW}e~Cdrc`oE2a)QD+^OOQZ_w`{nswP%s4MJ zk^>w0{wVXSNr>$UCYV($)`+MY*OZ$epXN26mde? ziYO5Q&>~!$<++tB8?l}jl0^X~}R5rY~vpfO_-MVdJ?REuzwbA}Ze|7PHnnHtjDoFa)f0UpvH8Ayr1WZ{R96p#Tp z#LH)(ihPn=j=&D^Zw9W&=kWs1xe*}0>z093`W*5(TkYT+B2Wpa&%mmfmk`$KWdfrN z0o$c&de0*%X@j?|)MIo76gjQ9LAHavSDxu8+X%$?q^fa)6ekE8%2Up(#|>7Wz>v#> z=d?ubQFgXDt10H~Gqs1x)6Hwk4b~>>{b~_eL1S)+PT8CE83dK-{lx_k!0%0`&1N%) z%8FvSu)yhLDc=%h%)dAg7~B=~0){f?B|+GB9{c?ANffwG2Fz1hL{hY8q8Z5jxTS0FQTR$h5^FmSY`Lv>|r>2DT zIOcQg*vKd+x%lZHTk-3uo&MW61YR+7s?f0&zIw5Nnx%)m-cu5+cTjdqq$W~#{HgY{~6&W{8_Z2ThwrRJ#$C{;yirsY6+q*O&E5~)a& zrSV9q-EAI1mGT^Gcee$=IV|#KN!i9+&KcG=K|^bgipy5G`H9yyKyRU{T~9p%mOhbJ zd&u6rySSk$X-BnQpF!u*UqCc)%2CEKJTU7Oz!+J}{QfQI1ZgY{*SZ z&jFMk3QE3_DTn3}_gz?d!jY_&3ad0u6(};*%p-E}%;qOjBFkf~W?p0M&%8T*(^{01 zQSxF8?W6pgD((pRN_f2ESH=kXPR^9|-I<%iv`n-e)pf-nPwE2}KBiWH+dtJ9@y{37 zcX3&ku4)3ML~U)*4hZgYPe-~vKqEF@4VpwBbwPmhWA4npIL$Q~db)^j`{LgWztZU) zxTOyprR7ClU)Jy%;H%@a7Oz&G8h*c9$#06cj&BKyh~(>O$}EK|5tJnuM#<0kPhM}i z3^G&CbPeY#w_^a9%wI(+4i&wO)p!2tiIuDOntWv?M*BXb3tZ;CEBCYO1ZJP1j~Pn6*pKG$dG_`x^Bu+xAioOOFY7i%IMS4;3xD4F(nO2 z14&qE!!3@mfSp`LjZV{X9qGC30akIMEl$Kr5`tnDI%LdhG zAiLyi!8{tccq|r$b>?E4E>rCvcu7Lw~G zWbKD5;U*%M8U zBdx{0+`;*XriJKq8 z-5;Je&1-aB@w0ejf3yYKCQTOs=PB^}R?)NFPQYLSR65b1jzJ^CGNxoTK*Y`Ho=)X{ zIC9GP-nVWsIgoG1LIhipi1x-vVq(E%b73V0$=xMaopKM;MRPNh)aQJs=+8z-Ibig) z6>|<4pAE41aG6Iz-B-9Wi4_ra%Jnbi+XhX|eGwg&wW3HfqXKFGhRwt^pe=$GbySd5 z8%1BvBcxM8&fFK_OvUvbn!rdkA16hMQ#%)n8$m4h%V1CoCA{LRw{({&%)`3Glm*}dYed}pisSNGq6B^*Q@HtRQYBp=FFda&E>){RMSx7ocqo10~k z)j(mpJCU~uP}Q0)ah0nP_*dCFe||WWOz2rAkLG6$UM)jH`AznF+z5^)F_Obe9UkU#lKY1q zfs*d0O0-HCUuM3x5RSZSMq=t7e=-d+l!=(=hB@?iwcB48~*EB>FHXVsJN4pjW$E_rD0@Jqr1bako`_H@t~##bW2)7MN{HV z2Hhxr&P&!o9aZ&JspUPy7oq{@XOjgFukHpY1x4)Gd{v>Kie%7dweVsMvDmGm zDN`>gDw=wi$Dk%MWu>Wo5plDC|983F z(+(YJlw8)buIGqI<-AdVDmo=(p^Ts;yxRru^VcNb?tQG_vi$J(b#v0ZgAZy8|F$_g zl>LjzQb@5=??IDB0~s^*K)yrl_DFed6j?0Bcr;N2Um&eq3DtlpdBLLRTKkTbO!$k{ z$wl{UC6gwLK^c{IU6MOkF*RAt)bMFRlcZl$2h~L|t8xY9Q8SMnlxq4YVx{yrD)I04 zSiW6ixYi78r+r9XDf?O-rR&JNrffQ~WU5x~zwmFfC|H%h536WQwu*sYPw@0KZSJ4% zaGYLQ&pFB&4GdZWhJYdYTFr;7bz|qf} z?RrO%@ZCD{wUoAoKcdKa@vLM|BE)oH5ICLF-B7)_X>Z(**D=&pOXjt|3qcFE%(@!K+P3rRU(EmVLCj=7W#OOw_LH3AI-NM z+$csrx49bjWwWMRacI7}UfBbBIa{skf%nhOWt$Z6tp;8jj6r`z zLGZ4|AM~h6hNlwabmrnfT>t#K*zGI1%QF11i(%C~N$0Sd%o=@l+>Q}BoQNe=&{G(J z6o}Gz>T(B&_Y(?6mEJnUsoLS~w@~VR+BDeLF1h8$CSmc|J%MI(^&Vmf{Rxwacd8W6 zM~fsbj#eCCy4vQD?Pt@i6)-aj#AXxd-HKgru{$VnX5bB zQU@A@p4=}kpQ_ot3K?e4RU8Vut(x#{h=>d7 zpuI2Mte$LMKY&Hd6nMF_H7S_n*FPh|abLQnhGyT_S7#zLton%Sp&d7meJ}7W*j1!jZ-0)Mfb2dnYNqaoi8zKjt zcwKu$r03--h+CqIrvh3ZcW1AfH5OBN?X^DUiW8k04OH$I>t^1Eo85TKCV0|QV=aDC zn3c)2@Ev~L$P)##w~x8gx~X~29KW=GI0{<~9Z_cVrLo?f>^9_jSNdjg;hqPKFx*YW zBMa=hR~lpMSeLcDxFBA9wKuTU9I9^pQLf_@y1zTOjHALoN5KcXn zY3N#i?=Q$eMeM~D%x&(tI8i)%iY2+Sz(2X1V?OLP-~paF;~-{Aj+FK@iTXe4T5Jy7^`+jVp!O6i{DBT#XD=!QK$U6@M8ITxq7=a_hXcyQ}~b>9pciX5k?s-SJTx( zp-GBb5yW#v`z+$_a?05uagayAwu`Y7G5g$`ZxAXbbGbFg%fPuWGCdX+0|`^efwed1 z&IQM%N;u=k+~=1=;#PW*H6c+erA=v)#Vu#^%To-}L-^>Dl5fNONuU-6x5Y2-q+C3GujKmrJ- zt#RBMOfvQ*{uz5-II-oWEir6Ft@LCDbH~0mCg&ouZ-(ivLO*OaHdQ2@h{~$W+F;Bw zrfsMyy+O}eh|S*u7FDnt#Hd&?Yr@Pnh++`5X~KP_MAkl6k<5x42_m1^n^|arPU)0E zqsC`~2IJ4{e1J#NL1i#J@cq_~p@S1ybYn3|gNT!()klv_LXPfciO=U+kY$=IOIVDZ z<)GCM%S5q9yVb%k$VDU>)?}J1vu2bHtf`qw3P*#3Y*+er8DKK3;zGrW#U>GdovajR z9@&s}!lNlIHhauxx7>Xr-P`Fgl1yXO!JirhF`$dWk3VEE{sGtNY<{v`$fIUFE^r`u zv@-!x5d~_dzwti2CcoEt?}RCf6N{RxdOWRhE?6ZW zJGIwC*rDd!zJp~0vJn2F0e#xVF`w1S4nfL^A5IPi>Tif@sN!<4Va{1{ zWDWvme6()xjKItUCGgwSXR9|2rAj(lJ-{_!ov6YB5dc@Ur#o4cTw^r&ofe|yPYgWd z|6|LKtHcM*agG(sKi3rXYGdZ_mMKaXmVq@h&#}+D25x@;s@%MqV1!N^1ntWsQ8M7l zZRi%z-@7K3?%}#9g>GM+Be^h;ZIc@(-1`VdoZ?jB&15~tO9eVI#_DaLETcgx4Nm`l zilL!qE<16L63GvReZ&56b&*f-1CtQYKx|B%cHN)>J#g&wd-AFcg z=r?T5l8?;$?=M|c=}Q=mAGT1qk{ddU_&S`>a_=F~h@=f_ zqDOd{=^^n_s2TZy^VP-uX9rV8`{jh5N#|h;eQ(owW*}L&Br(~e8!v6%<5ER--f=zg zUT5lAHMGqrjSl5}58F~YASw#3;&?{a;6B5G#}N`K9%| zF3BF5=T1p6K`&0}_!;>mcPVBqf`d0={ z#hU1vH;4LH0;d)l<(QTp!JgzUE_bf%9d`d)c81x_r5GN*s>sy;7Er~9H9Yb(b!U(x zIG|}2NbDj{Bke~6YMojK~58N@>;jlJ4-@t_Mm`yOiFq3L8+W0TpJpL9?v zA_7+h(s{gvmRUQNMcjW-Mr|p!Ary0_9$|l$KcAIvmSr1%rP!gjIuSKPs`U)7ts|gl zrqsHvWgo|Mi>UgyNoMg5Hb;XQvtX7)P8%uL1Vw|>a&!4>fy-yAkvyH@lhO!v6J<2` zrfn#W-f>@S{(U+URde((U#=)5Vw3_qkeN}0-Z#tHBoi+Qud+S|r(K2HSt!wt21_rF z5F6Kmb)Z7#5|${$2Zhv$Pq@0RW--oCyGU6a@gNI0FeGAPlhys=^wgO5Xky zfpOo_z*{dTi~C|+1wWH6uv12VNHx1D8%eeWeXuED?Qm`0)pp$-ueLnR-X$yFUmi=# zGD47^WVVBA2O`3xD1+gp=VBjE2qDO0OAjOqb-d8&4A!=<8N4DB<_tF>=f@YOTh)&Y zlJDDs?p9?vmtg>YM!OqA=3ON+PJ^lhFH#FjGps)Jg0n%-NUs93frbxmSY?o+i6fgp zO+`XSDiSINUZc&H@(WWQm^*Mx*bOYJxmm3-QK9?;gdM#41Zt`D$y%5)vv}XaQ+eCk zcLL9N6yCIzYZYhwNjnG*DdYtSrYAH03#NtK*AR;>t%;z6EttWfg{w+NWu_RDfW!`E zkeJPgheCK$QudzgIYxuOUf?*LxBXOi@NhMd{#QNP-4<7n`wArlThxQ3RZ zH=he>v$9t^O{o3vNz3(^5)PARmOUP z?eKgai6In~m<*hg)vmw^j&xv?&VX<-zud6nPuwzHn5H;g9p9xRR?bM($QDl(+&#rJ z90`@tK&-XC=!t8EJcIXxf|R+KCve)7FdleFXiB5s8AK8hkTNI}KMPMh*^F6rLeyCh zvXN=@Ar;+dAW0-HLsVS86(qjZCLq;}NYs0a`NSL?JNDuh*sYAKU^Uz1b?_mdNsY{6 zWS_-M>IydR^1)o8LTQ}>OUP#@bW$P9%0-*hQWUHiB*9u0F|%^I&e}{{2@RJkqaO*b z9jS@!CcZ-wt@ERS1ofo!^Ae#(hnW)XRBk7h@8tp0DT-xM#+OHv?Y+C3-E!<&z_Wmu zSNpRDH}8+-!qeqZ2p)r>?GvPtL>Q4+*#lb0IpZK7m45; z!NUHWn_myHz>^r#?J*1`N0BsBeYlW!ksj7^(P@;+F;UE0MgkU7%Z^K(jJ8WNw-d>y z1qv8ZtTP9!aIQ8CX7jZ0t#KMjQ(KE$PD z(Z8I;{zX;^TF}Z+kNetY%W;4vv4|v8n~_HXD>Y@=Q3J>V$ue} zKMzvDWjShV!+)NIaIH-{G%tAv5J-G;ttsqQ*TbqyHbZxJTGJ2x@~2F&*pYPiU+lQJ zN~S;9nw%WNUo2xzTcWn-MK5^aQLb7k^=<%rw@U_xFQ?q6_Q7gj8rD{3pZIvhwOCo* zbE0lK3Lcr&OL(X}0%^e|=L#iUQ4@UZop^f`7>oSXd}$60{TFlFQs2>(`*SjCB5uVn z@z*_Vj%|<6g9#dgp8%gDG;!Mm#cs1+g@9wzV|Y0XOyFUF!S-4%o5jXl2*jq0eiA3< zPf(XdMnT)1j*uZeGS~WZDrP>}9jHRXUc71Vy*S53FGMGLb^ z^so&}ph`-ZS%o@k!$g-;6@q%L5RXRN6;~v*Yj7qZ8PSCdE{i?vqdlG&0FVIp>45oc)7RDJutyh4b!L;dvyi3 zTBSJlrVDo0bRPx#N&fC?^?Kes9jifJ_246F8tAgSa8VQacx4RGP+df;4n z_cLGk>iGG+C*3@&T{>^`?GxBl52{JX0UOvc@N%_$vRf=nQt6gQ*;G_VfWw74!zlU@ zZgomWC7~#yfs4dG)?Gw{IvheW8p!G$Qwm)JjIQ-LbLDPOZ3?jv!B!-Hsio17N%6Dz zgw#=PhJ_aQgc$hk5|GtUEzhHY6vbdUM}=Q>Xf6*Xr<=p1$S=HV<`*-~8`=q!ABhTz z2Ap3iypfke+ny?(MC+grX!$cty1aRGshUam<5DFxdy1?A2Xhe04Du(MCb|zQpkrQiad!!bhDi3ZT+S z9Ju>8E_(^grjReJV4MY}ZFiC5MibA!zFvrdd$v{M0&Wr6U+RaKCLs6S#iv>V+ zfbtwpz+93~=rG?Vpj1Djfs1Y5e<~{lM`;IP@M1sPYePgtS5>`lD@vr5ROBg0ZR$Cm zIY4hUSprPjq3pJlTZ-|r-kooo+5S_lsWgs~a>b>k=eR^yHcvPuX-Q<{Po-LrmxIC! zrnA+Vq^+k8Pe+=9ddOk`*FroR47#vuB*^uct7E$1#(-FZ!1!Xx_e&#r=1LQ3iupvn z;=95wh1~fzGrP%6EYX0O!UVH@28zd`9P?~1>@B&{?J#wxDF(5F(XL*gJn;a zr5PhAU1?MCQZWx4mWum~xM3&ilqJ-1@l|v!3uW0WP8Dj(i}|v!h4TyPF|18{G%k=x=X#54S@U~PZPdL`|sg%$3V zP?S^mp`Z37Zgsw%?iRSVy|q!N*@N1nwN z*qg(aj|#D6S2er^P<55#h-@ndf{9jk2Hf!QDG(EkE#``OHiXJD+^9Qi1_vF}kdNM( zS^4q|E(z4v{9G1SUS;IG@@n{&K+{cU%bf@51MkFDabL@>#LJ1hq zWf>fD;?0~rfyKGS^N(yH9zvT{$CSTiaB6FM#X}3b-3N4O)NuABQ<}je-Xr0SbLmUa zwGLkQB^h`nAAVTpDV)~Gy!h5|k(Om}eA^F98C5L-3LOmJ-?2*js%3_ZT$*9=|>^5k~mOoZ~O0M*#M ztcgG64urv-EzTf4@m+CUNb`eVN#*K<)GQ#uw`HkN=>6mQ2I={yr)unZ`D807N!g1A zV%Mq0*#$wZU)h#r38?iUBrrtI72|jRMn~UtAr=O45e$a7JV}CdYuDx_w{K`cqhZWpXmzFlXDTZG<(E=yNmB6}3`HZy$ z{zww&(pCVqdJ|#sR1o2MhKSms)V0J&*^&8iFUtVIqoJv32+4}pLuArjj*i^-P2nF6 zrJ^AtZm6`H=Q8SF^<+m@sot;diKeeNI4n|!`ErZW>c3!?+A(5_ zLq@X4!34#xIhm5hJsS_V+jBv#gJ+~f5ZI+$FUmxuh(;y^s^XE~9QwZ#i7G9( zJ>=u0Je)hsgAu}Zkk>>D=HsLkSX_=qL~`cBX_EJ`$#_*%P(1g&1M6IkF=t zOYa#r1dI7bPj|LyVlG8+Icg3^fkR8{-s&uWt3@KHD<~NZ_U2{;Vd*@ZY<1v?ZI9e2 zjbO6vA$WUjHL7oE#C}Li#9uR1otq;f2<+XDh>9HnaCt*wk7>VPPcnEm6KWYP7Q?uJ zt>~nbg_GCxPbTZ}*C%W5Vt1vOAm+!-W=qO!|Av%Q1bP`37Jq2feh zxHaEUnjUcDe-jRM|3G(~w5KH!g)q^{K3;sL3oSE>P60aQw!aiQag-WlN>sg(-G!2p zZ^fXJA)n}uTd3~8+pZ_?$*s2Fj6Wc(5}k2e>BSYD&?kJc@eLZ~L9>5-!Ii1TQkXe=(FU|I1mt6u&283IlOkG*VjJaEx^Z!LSQnMIM zQ-Lwx)XY*7joK_)!>Bgoc(Ro8U^5x2fztr%&WYKw7>bINV4$tDS4s=7oKOW0YF16F z`Tn5eW2{p4mm({24o+F`%(vwFvP*uE+(X}uM2_MdjhEHZkr39XFhksjz&_qBaDs^G z&qPZOqXGdYb0P@)v8ll5Lj)l+(N%&PKjwB8QC}&l(Fb#8*~YeipW+$l5lP>46_KRP zwGxIWQJAJj6o0XcD7E#;>N(zy$Ac=-OG^3jOsC2MNT|phf3d{6G39qMof;zHL*YvX zovc}ePI{i!A26tp<;yduJZIRCsQv!UVffn%3gy9$TmjkSZp2v#ekpV^uNh=w5gMP3 zyP5G_r;j!Clr0$GF1P2`K2`hy6Zr;u=R(v#W-K)?Z7!C*jo{04x!)B>D0%w?-vEk( z?zR~|GTq8tuvni>rj$T+IBSj(9b|qb)TPC4fwfzeKoFyWM0}RWnerj%;PqxnJ(Cc! z_tiR(DCJEPdl=ZVcE~t%_Vi(cTh5Z4OPpDBJ0~hqj4Impf$+mJJ<~n8Aci30a5U=M)|de)YO3Gd|ie+(7~|$(h(f{-LXWjHon@ zMLfLNY@0JRQ_`j{Doh$Y8hmn1m{b=feI^AqMTFZHWf)X;v;dJAO!criGWG*RRBSW1 zMa_i-{d9|`3=Ik~+j=wbyqRq91cbXZ*p~$#iu;=-X>Xz}qn8bhUjIvaP{yzEZt|Ri zgBLlSQLV=lO{!Odfm7`Do_ttIkngKR>+fDun^RhsY55TsN%uY|ZTs>nc^?i`3l8@aT!;S|wXN4-CAXSrHLQRQ`tEe*FI+{%3Pua(Rl$n}B zFZjP4>ZG>!3RAGdG6!SWvAasgRUJE?fQ%e9#f=7UK2v&DGNXaG10qS9cIH@0#75d| z1>RQyz`z5?QM2;8W_4F(d6(b-(!)=Q$`N$ZP@z9T7isUGF8O{bN1z^H5^)o# zJ-Sq)u&0hHFr*6`Os1Bs_bN`I1`!4F%KaAo%#`IyE}c}hk)@&RC4^*bS1bZ(lnUwY zVk(z!Kt&XFf!l?$c)%<>o~kBEWEW1zq`w#@d->oJ{M8)lvh+4`eu|6l=dhh|d2T^3 zr@RL-iCX8mqTG2Z_jPXkh`pFv>kU+Ce(KG?`WW=+&pjT zM61>}nYd}wCO)thZZmkS!jwPR0EHZ0XtPll)?+k^@o?2-+RTqPs~90F%NC)ve|Ml( z(O^c3JeeQQk@Gpzy12+Xj&w6y5d>_hRnR8w(1_3s8u|1<&eLNa^MKBEyi~mL!d87@ z+V8nFC#QHK3=iaOP#?2cI@|(+NSkreSgIt>(cq~UrV&;|Szs)AYHK?S5+|

?x2z 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 literal 0 HcmV?d00001 From 4eaf834d413d0e8f282040299df57125cc4f36c8 Mon Sep 17 00:00:00 2001 From: Yeahn Kim Date: Sat, 14 Feb 2026 20:45:12 -0800 Subject: [PATCH 05/14] typo --- .../java/com/uber/nullaway/handlers/LibraryModelsHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nullaway/src/main/java/com/uber/nullaway/handlers/LibraryModelsHandler.java b/nullaway/src/main/java/com/uber/nullaway/handlers/LibraryModelsHandler.java index f9afe98ccb..6a82e3110e 100644 --- a/nullaway/src/main/java/com/uber/nullaway/handlers/LibraryModelsHandler.java +++ b/nullaway/src/main/java/com/uber/nullaway/handlers/LibraryModelsHandler.java @@ -1585,7 +1585,7 @@ private static class ExternalStubxLibraryModels implements LibraryModels { } } - // hardcoded loading of stubx files from jdk nullness infered output.astubx + // hardcoded loading of stubx files from jdk nullness inferred output.astubx if (isJDKInferEnabled) { try (InputStream in = getClass().getClassLoader().getResourceAsStream("output.astubx")) { if (in == null) { From e2c295248d71de3607344b2951246502866de7fb Mon Sep 17 00:00:00 2001 From: Yeahn Kim Date: Tue, 17 Feb 2026 14:09:03 -0800 Subject: [PATCH 06/14] new output.astubx --- nullaway/src/main/resources/output.astubx | Bin 228205 -> 270147 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/nullaway/src/main/resources/output.astubx b/nullaway/src/main/resources/output.astubx index 2034e0ac7881962f5c71dd5955d423ac2db4bc02..e09f02a2df0d08696b7a6ecf46613898455cbc26 100644 GIT binary patch literal 270147 zcmdSCO_O9vav1jX19+#*Kp+8%z&vat_XE3&-NI}StE#)FYr3ktw?2AiXR!-pXTGY+ z>8#A!{OIml;)5VSLL?-JFp2_62_Q@+f)q_MUUZ<*Oc&9lgLse`O*%*y{Qw5b+)6HyF{dB$td>*}=HPuI-jb4w2s~^pVC*M7M_;%b}BZ{4Y{`DT! znT_Tb!;|%LI={FV6-?*rx_Wdcxa#T~+u*6IZ}kH^y<9HdpbYBjpdVx;1cmC;TcT>i z{lmM#4Sl6LQ1SltG=3^oy+62U)}S6Ipl!{2b#=c5D%2|kecHTTTSWu-uUYuxX0@5E zPnz{kk|e3#d!%WOW&m?FT3-(LrWX%jP+W~>NYDL3*n0&3a|xO+Z`RHCe?SoM*NO@K zLZYHAdH@2z`uJ}__0#DURmXq1`Y%~jK{HTpSZ%c)U0ovy`-1^lKv*jPoGyk3^XttT z)TkL{6AJe~4ShJ8OrG=@E!PsfW%qoIGf9C~j$A1!Y*@CP~IP`kLRskZu5S5I;X z+WS33#7f}Q-3c*Nf)KK;o!Fba{)e#8^JeVTn6mD^85aO_@%3 zR4Yd0Yf+5qaXC+(O2wE`J!+A|l=bmwIfvy7hlTlb)j0t@d-+*2ULy$q#e=9_lOvdz z)o)wAV)-36qe-(wlKYpVo9N`hw z?ih=t+7U1nI6d#cL3*CY!AgHl{fOH|J~#wC)i0W{a0t8~-h+zHh4I zzg#`FJX!8`m&?%&qNhI?U}?X)vC|?V_lYN&t>oo4-T}=(ULmpc%559q39l!tC&?H# zHBVZ)fmmbcziO){+Usor>`F))xIdaT^T}vgS4YJdLh7o69J*G9aJob#p{aK(hCB>K z3^}h-LPB=_7OrTbM)gfL?&CIDWpEWSnH}cyW<5MRK1BB5A0Ag(9SrFFVKUc5P&pi*|wt#H#KcFgnfYABDM?zcY)F+G(&b-GsX>9&N)H;?NG$P7oE* z;SO6mp|t;x8m-X0u)WeBO&i`%Z;#j4E5);O*eIS8^vHmRkQ7max^f2X^JQ~AS~e5w zgWjQ4dKCqg5Z>rm#~t3~5xM;e4_>8jy3_Lr_)G`IAjdfFXe$quJEkmw^&N@0%43P1 zfb(>%zs|Y)1c5oOanng2i(dP!0{E*K4_0S<=8^f~39aZ3t^VZEdFFd7HfJT}v6;Eq z;vw}gvnLel1LCca)G7clk03N;EIW4L3=dWFxO^i9J0DB*Ryz;tTlWZyCEDWE9qgwBRA{fk9m?=Bt4Rn=$se49bMo{_XbxIv70CJh>aJV z;f=#vyI1m%?LNRm+c_;53Y3rcs%}r#hRrixQ9QI)D{GCfe@^+CzFTbb^nL9QrYuIY zTO<^(86hVnD_F%hv{N zvF0㨮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 H!1ezRWRYas delta 25434 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�jN(6f|3Tj@KLzAMsp$VQWIuia=WWlG`r5$;uy zb1P^cBfftU^HhwjpnbgfK3=qcTB4D%qE{moe*Y5Ahn9i?oc05W?+3cyMMN>`cn=>` zzI-<*MaEeeNv9Y6Ki#?f?iZ^D(SG73$`|eZrS|iUrnuoF%6e3VipCEJHsQ}*pH%i! z6|^7iY4L68Cey0xG8G~p7<|YIrC(4nqWzP3(O$6G6vtndP&;R{DQx+K;75#KD$cFY$1neIJX@U7iTTkvl={@Y^OW_GBK zUzBT;QaY`4uF`S_O2K4C&OIrj<*bt;x>_Wi&aa@+ZX0hk?OW7}f?ZH;6;z;f9ntoJ zt){S{oG<9>!t0BTB6GR(#oDd-pe#p*6tP7Ib`^S7ZX8+8Zeq7>H3jh^*SZs}nWn0> z8MG7`pm`+AG(4wUDZe!|-?k}MK31~Cy7(^2@233jk$=7mI!Ohcu5>@8`zw8>(gTzp zsPrIv`g`~$|JwIVC40|%=1BV)RAwk5{G|<3(ZiL#Sm_Z;yHf;p^f#lFKRWW9FUN}? zUyc{A<#>U1ImTRuiWC{>@<=+Z&KIN37o*M>Qxf%a@mDG>=Zl|A9WO>5FJ@v6SE)?w z&KG;#hozTb6fjO&%YLFpTzrN|IBMbhb8Z2yn&W4hVOy4_}AW$skg9HsAq_A}qD z^gSv@js$+1G%CgW-!i(HvnpPajTE^$NeL*?BVQj?T*C&X-%|P=rMD{mq0*l#ty9NN zdnaAxwj$SBg&kj>3e;neZ z$efb%a%}T2a9pW$7Q0$(6bTUxc6zdyDB_FOzQ5e-TtpNjsZNT-ORAG1TBSOt;YG`q zi^l~`b>UHmX%#d&xR{%ie@g}JW7J3K*i02OD;mR%bBA8Gcd8(jR%4P@rC{Kgq*W=R zRa%WnT9qQc`lKD38+p#3=OUsQ(eBALLIc%c}26TlGua=1LVR+An?4e(8(m(vQ6YEk!O{w4YM6pHj5nPNMyotDvPw zU(w)bO-jXg7VSH~3N1xCi1w3-_VKSt0E)zj_A#5C8~Iz5|F+Wa$Y%=QK~B(^-T5Ux z>u-bfKu(7Q2s%se^L6^a(!$} zD*hIJD{qMXuJpf3|7R!fGDXAX5lcbWxV#@JqUD`S5iRdris&Smk0hRQZsezxmZMmT z#OK*LyYNrU)OQ^5Dp9Lzu4*5{RdlVcEYaxcnrkS(rqZ>Pu5H&~hD?2BHBh>t(oK{u zs-XRpO_eX&`z@8<3fez}){(C6uD6W}Dz-It<3|(ilqK4ar#>FUPf#&kl$L|g$M;pb zAGDvpztV%1J_j1bZLGLd{6M08XVKi<@e84)ATB;6l1^Ww^w0|0k2y^F!;Awcp@}5Kl>{UGoj5 zX|~7I>8mn*JgbJ0?Cyt@loV6R_QdaY=CXb-;4-UulLVew72c&{mFFF8|+Sfc&S zsr(t2lqp4GM2EKfUQ^^!f>`g_2liqoYjYzE z`h?uS6tDR_5|W-7mtcB!JK9xz5O=Wata5ciw2w)tfmE(ei1smgDyEXsRiUNG#pSCV zjY@fEm9`T#TzJ$$rRqd&FhFdXov2@Yxft@Lk)g1w10Y{`MMIPD8KC6C0y&N z@TJI;6z#|CIeMB z_+lu3k&=T$yA!s}{SiM(lHBXtRPJ?uvxO#ip(BW$5Ko%dh(Hm&7A!^dx=1?xy3%jhb_Y!7 zrW=*DN$Jg6+mZwLr>%0BNRd%R2X^)W{F%ZYNWU;7yL2yt7Mn=0L`JU)|b zUS4sU?;&}V>LA+tEtD@>`v!Hn&sHj?wTh91%x9M@b}^Z#LtE8Bv=2H4Iu_NF$AbN2 z?VzQ|WXDCaO#8m#`*>OIUU!Q6x%kfVsC`2h)gT&wm-e$M?AcA(-Jzw(ymBT;5iMte zpSKsZA5zYT(0=fKYr-v#%M(ImL z+k#*5Q>e?7eYw(Ol`c{GN~Nz-dOWnhuL;op1|}+Bju7w5v4MMcsXr;_hJSh2LQ9c* z5$y-P&bg5<+WXflU$pmcP`+sI->Cc>CH4CTNLNr#iuV50$d-CiwD+eeU$pmcQod;K z->iJm?n&UTlegHazv2J1QRiGzwC^`v^%IT1{`}3f(!ZWa-eE`lW;$2CM@5#}(%&pJ2X0DM??0)0 z(cXVb`J%o5v^v?7PpgJ!R0q+%!?Vg4?fqrS7w!G!$`|eZ=e&<~l$45Zc-}X_7wvs@ zgeOINUmfR3(cV`_ds4Lb)p4E_?f=Lo$+KMoopy^4dKH3l?B3sz3D${3k&xFT>GTGr z-%@&`(wmfiN9nCfZ&UhRrQeJ6KsVWksQ8=t7#br^FZDd?Z7Dr`&s z#COS${%NY!^?p4OC=w$&uy6cnI{Q!csYcRcDl&9k$EF@yC|yOiCS7DLIa$$VIe|q|+Ug?x^(fO3U#jMf!G%q|=?1?xM6DM>#qDqYme) zh6|LwQ0ZYx4_EqPrN`Rr-}rIfHOjgc+CQkN%2z2XRjPbzGyj_UX>sIM7TfOs;Wyy7 z{b%Y_eno|?vfJSIeIp8Up=w#C)Ur&eWtmdTGWCfX?o-iod&dehpFwc#rFN)@FQEN> zi1sl%l`q=+Un+lB1?^*YEB~uVyPqSbq~e42%smuqlL>3#VeA8b0Dc7a0|$VEz)!%> zz%RhBz;D3sz#-rd;7{N$;BVj`;9uZB;BZckJm@s;D~;*W2Ee(LjspoG38a8D(rG#u zA`if3OIHS}0N8Buzm25xf$BgFpeBHeP1gnrfI0wnVY(hrA7}tH1dad-fkr@Mpb1a} zV3(!wNi^LIXbxbfrCVh1r6te`Xbl_1^NNl zK%vd?n+}fw909z&M};xDvPu7!OPUCIXXytAWYDHNX_$THre1df*1&MnInIRA3r# z6L2$d3verN8!#Q1A@6@C#4KPoa651Za3?SaxC^)&xCbZ&?gi!o^8gFX2kryz2Oa<( z1Qq}bfknV#U)SzsBk9C!|R9#{dq0K5pi z1Z07iftA23z$)NX;5A@1um)HQtOH&L-T>AEZvq>Dw}8w>eAxtS2DSii1MdJ^fo;IM zz^zz4wpfDeI>fRBMsfKP$XfX{*Lzz*OGU?=b;unX7?dlR6h%|u6+&rKXP#LHKR0XO5`9O7`22c~I1=I!#fI2{3pdL^kXaF<>jsOaQ zMnGer2~Y$a2{Z+o0nIb`aum=4XbH3eS_4M|ZGd8+EpQBQEYJ=(4rmW_06GH411A8T zfX+Y{pexV~=nnJ%dIBc`Cjln|rvSZxOmBQS73c$;2AmF@0rUm>0sVn9fdRlk;4EMe za5gX)I0rZvI1e}Iy6PN?s1>6nX1C#>y0&{_RfCc6Q_W}0<4*(AW3xI{dB49DF1Xv0@ z1Uw8p0z4}3_A%gb;0fSK;3?o~;2GdqU>UF+cn)|z`#_ag2mI%JxN14J<%Dr1gl-y1 z$7qw2HZQUw_MR|Go-jQ*m83YPFQ=3%sLN^PbzX?a<|}eSm1(TdGL4m5rm-r^G*)Ms z#wvBiV1ho8bSx7}9XH@^5)0E6_<4wxZ?dBXtWsB`Ay%&C^m0X>%9)XLj5s$SRJ!>DD9;gNPMV`Rj{GM3`l4~%8)3flAHk#y|avE*GrT~50)eWlV^-DN&j zbeYDA_Bta+oUh1HSEi>@%Ojl@X~#05)Nx_%3Eadu@o%P{f5$SD*chtdqm3}%a#2YH8}QHyPux0_YTk# z77vg^#TDqhbh(zp!~1ezlxe6_cQ5*u(4lH8>@MxzU8YTG4aMVVHv#a(M&ZloPc z7`oB$)*#j*Feqvh-= zi|Zj#i0gqb5(mg};fm-p%QUhp&WN%GoDXICa%y=B`H^OA-wA+}{p)MQb zZtF$bu?#L=eR{&;NuLIh=X67*k5IZ$=|cg$%IEL-Bf8F z4emnJk&x$)1evf!6z|y2*D@!{5qT}`oI0`EncOW1;>5Y1s0mtAW1!p}k#_6{Iy&<5 zguT~>p0M|d=?Qy}i$AZeybN!0rRNEIk1IV-t@J#eVU8sZ$lVo9;`Huvop+ql?aOuU RUazr2bHDQy=%1j2{{wf*^ezAZ From a4b081f1a9bbbdb57f0193bef1178e1620b97cd7 Mon Sep 17 00:00:00 2001 From: Manu Sridharan Date: Thu, 19 Feb 2026 18:20:49 -0800 Subject: [PATCH 07/14] rename flag --- nullaway/src/main/java/com/uber/nullaway/Config.java | 6 +++--- .../java/com/uber/nullaway/DummyOptionsConfig.java | 2 +- .../com/uber/nullaway/ErrorProneCLIFlagsConfig.java | 10 +++++----- .../uber/nullaway/handlers/LibraryModelsHandler.java | 8 ++++---- .../com/uber/nullaway/LibraryModelsHandlerTest.java | 2 +- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/nullaway/src/main/java/com/uber/nullaway/Config.java b/nullaway/src/main/java/com/uber/nullaway/Config.java index e03d685fc1..42997cd75f 100644 --- a/nullaway/src/main/java/com/uber/nullaway/Config.java +++ b/nullaway/src/main/java/com/uber/nullaway/Config.java @@ -286,11 +286,11 @@ public interface Config { boolean isJarInferEnabled(); /** - * Checks if JDK inference should be enabled. + * Checks if JSpecify JDK models should be enabled. * - * @return true if JDK inference should be enabled + * @return true if JSpecify JDK models should be enabled, false otherwise */ - boolean isJDKInferEnabled(); + boolean isJSpecifyJDKModels(); /** * Gets the URL to show with NullAway error messages. diff --git a/nullaway/src/main/java/com/uber/nullaway/DummyOptionsConfig.java b/nullaway/src/main/java/com/uber/nullaway/DummyOptionsConfig.java index c7f78642e8..1860ae1fc7 100644 --- a/nullaway/src/main/java/com/uber/nullaway/DummyOptionsConfig.java +++ b/nullaway/src/main/java/com/uber/nullaway/DummyOptionsConfig.java @@ -205,7 +205,7 @@ public boolean isJarInferEnabled() { } @Override - public boolean isJDKInferEnabled() { + public boolean isJSpecifyJDKModels() { throw new IllegalStateException(ERROR_MESSAGE); } diff --git a/nullaway/src/main/java/com/uber/nullaway/ErrorProneCLIFlagsConfig.java b/nullaway/src/main/java/com/uber/nullaway/ErrorProneCLIFlagsConfig.java index 939b4c4004..d56618cadc 100644 --- a/nullaway/src/main/java/com/uber/nullaway/ErrorProneCLIFlagsConfig.java +++ b/nullaway/src/main/java/com/uber/nullaway/ErrorProneCLIFlagsConfig.java @@ -87,7 +87,7 @@ final class ErrorProneCLIFlagsConfig implements Config { /** --- JarInfer configs --- */ static final String FL_JI_ENABLED = EP_FL_NAMESPACE + ":JarInferEnabled"; - static final String FL_JDK_ENABLED = EP_FL_NAMESPACE + ":JDKInferEnabled"; + static final String FL_JSPECIFY_JDK_ENABLED = EP_FL_NAMESPACE + ":JSpecifyJDKModels"; static final String FL_ERROR_URL = EP_FL_NAMESPACE + ":ErrorURL"; @@ -249,7 +249,7 @@ final class ErrorProneCLIFlagsConfig implements Config { /** --- JarInfer configs --- */ private final boolean jarInferEnabled; - private final boolean jdkInferEnabled; + private final boolean jspecifyJDKModelsEnabled; private final String errorURL; @@ -337,7 +337,7 @@ final class ErrorProneCLIFlagsConfig implements Config { /* --- JarInfer configs --- */ jarInferEnabled = flags.getBoolean(FL_JI_ENABLED).orElse(false); - jdkInferEnabled = flags.getBoolean(FL_JDK_ENABLED).orElse(false); + jspecifyJDKModelsEnabled = flags.getBoolean(FL_JSPECIFY_JDK_ENABLED).orElse(false); errorURL = flags.get(FL_ERROR_URL).orElse(DEFAULT_URL); if (acknowledgeAndroidRecent && !isAcknowledgeRestrictive) { throw new IllegalStateException( @@ -595,8 +595,8 @@ public boolean isJarInferEnabled() { } @Override - public boolean isJDKInferEnabled() { - return jdkInferEnabled; + public boolean isJSpecifyJDKModels() { + return jspecifyJDKModelsEnabled; } @Override diff --git a/nullaway/src/main/java/com/uber/nullaway/handlers/LibraryModelsHandler.java b/nullaway/src/main/java/com/uber/nullaway/handlers/LibraryModelsHandler.java index 6a82e3110e..de46403a4f 100644 --- a/nullaway/src/main/java/com/uber/nullaway/handlers/LibraryModelsHandler.java +++ b/nullaway/src/main/java/com/uber/nullaway/handlers/LibraryModelsHandler.java @@ -478,9 +478,9 @@ private static LibraryModels loadLibraryModels(Config config) { ServiceLoader.load(LibraryModels.class, LibraryModels.class.getClassLoader()); ImmutableSet.Builder libModelsBuilder = new ImmutableSet.Builder<>(); libModelsBuilder.add(new DefaultLibraryModels(config)).addAll(externalLibraryModels); - if (config.isJarInferEnabled() || config.isJDKInferEnabled()) { + if (config.isJarInferEnabled() || config.isJSpecifyJDKModels()) { libModelsBuilder.add( - new ExternalStubxLibraryModels(config.isJarInferEnabled(), config.isJDKInferEnabled())); + new ExternalStubxLibraryModels(config.isJarInferEnabled(), config.isJSpecifyJDKModels())); } return new CombinedLibraryModels(libModelsBuilder.build(), config); } @@ -1561,7 +1561,7 @@ private static class ExternalStubxLibraryModels implements LibraryModels { private final Multimap methodTypeParamNullableUpperBoundCache; private final Map> nestedAnnotationInfo; - ExternalStubxLibraryModels(boolean isJarInferEnabled, boolean isJDKInferEnabled) { + ExternalStubxLibraryModels(boolean isJarInferEnabled, boolean isJSpecifyJDKEnabled) { String libraryModelLogName = "LM"; StubxCacheUtil cacheUtil = new StubxCacheUtil(libraryModelLogName); // hardcoded loading of stubx files from android-jarinfer-models-sdkXX artifacts @@ -1586,7 +1586,7 @@ private static class ExternalStubxLibraryModels implements LibraryModels { } // hardcoded loading of stubx files from jdk nullness inferred output.astubx - if (isJDKInferEnabled) { + if (isJSpecifyJDKEnabled) { try (InputStream in = getClass().getClassLoader().getResourceAsStream("output.astubx")) { if (in == null) { astubxLoadLog("JDK astubx model not found on classpath: output.astubx"); diff --git a/nullaway/src/test/java/com/uber/nullaway/LibraryModelsHandlerTest.java b/nullaway/src/test/java/com/uber/nullaway/LibraryModelsHandlerTest.java index 990176a81d..c882c4a5a5 100644 --- a/nullaway/src/test/java/com/uber/nullaway/LibraryModelsHandlerTest.java +++ b/nullaway/src/test/java/com/uber/nullaway/LibraryModelsHandlerTest.java @@ -15,7 +15,7 @@ public void jdkInferEnabledLoadsAstubxModel() { makeTestHelperWithArgs( List.of( "-XepOpt:NullAway:AnnotatedPackages=foo", - "-XepOpt:NullAway:JDKInferEnabled=true")) + "-XepOpt:NullAway:JSpecifyJDKModels=true")) .addSourceLines( "Test.java", "package foo;", From 03bd28a30a2e8be6041efe35f39e774ffa8a2287 Mon Sep 17 00:00:00 2001 From: Manu Sridharan Date: Thu, 19 Feb 2026 18:25:45 -0800 Subject: [PATCH 08/14] rename test --- ...aryModelsHandlerTest.java => JSpecifyJDKModelsTest.java} | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename nullaway/src/test/java/com/uber/nullaway/{LibraryModelsHandlerTest.java => JSpecifyJDKModelsTest.java} (90%) diff --git a/nullaway/src/test/java/com/uber/nullaway/LibraryModelsHandlerTest.java b/nullaway/src/test/java/com/uber/nullaway/JSpecifyJDKModelsTest.java similarity index 90% rename from nullaway/src/test/java/com/uber/nullaway/LibraryModelsHandlerTest.java rename to nullaway/src/test/java/com/uber/nullaway/JSpecifyJDKModelsTest.java index c882c4a5a5..1380b607fc 100644 --- a/nullaway/src/test/java/com/uber/nullaway/LibraryModelsHandlerTest.java +++ b/nullaway/src/test/java/com/uber/nullaway/JSpecifyJDKModelsTest.java @@ -7,10 +7,10 @@ import org.junit.runners.JUnit4; @RunWith(JUnit4.class) -public class LibraryModelsHandlerTest extends NullAwayTestsBase { +public class JSpecifyJDKModelsTest extends NullAwayTestsBase { @Test - public void jdkInferEnabledLoadsAstubxModel() { + public void modelsEnabledLoadsAstubxModel() { CompilationTestHelper compilationTestHelper = makeTestHelperWithArgs( List.of( @@ -32,7 +32,7 @@ public void jdkInferEnabledLoadsAstubxModel() { } @Test - public void jdkInferDisabledDoesNotLoadAstubxModel() { + public void modelsDisabledDoesNotLoadAstubxModel() { CompilationTestHelper compilationTestHelper = makeTestHelperWithArgs(List.of("-XepOpt:NullAway:AnnotatedPackages=foo")) .addSourceLines( From cad680867dfd78f238c0cf429f76caee9a744772 Mon Sep 17 00:00:00 2001 From: Manu Sridharan Date: Thu, 19 Feb 2026 18:26:24 -0800 Subject: [PATCH 09/14] switch to text blocks --- .../uber/nullaway/JSpecifyJDKModelsTest.java | 42 ++++++++++--------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/nullaway/src/test/java/com/uber/nullaway/JSpecifyJDKModelsTest.java b/nullaway/src/test/java/com/uber/nullaway/JSpecifyJDKModelsTest.java index 1380b607fc..fb48881dc0 100644 --- a/nullaway/src/test/java/com/uber/nullaway/JSpecifyJDKModelsTest.java +++ b/nullaway/src/test/java/com/uber/nullaway/JSpecifyJDKModelsTest.java @@ -18,16 +18,18 @@ public void modelsEnabledLoadsAstubxModel() { "-XepOpt:NullAway:JSpecifyJDKModels=true")) .addSourceLines( "Test.java", - "package foo;", - "import javax.naming.directory.Attributes;", - "import org.jspecify.annotations.NullMarked;", - "@NullMarked", - "class Test {", - " void use(Attributes attrs) {", - " // BUG: Diagnostic contains: @Nullable", - " attrs.get(\"key\").toString();", - " }", - "}"); + """ + package foo; + import javax.naming.directory.Attributes; + import org.jspecify.annotations.NullMarked; + @NullMarked + class Test { + void use(Attributes attrs) { + // BUG: Diagnostic contains: @Nullable + attrs.get("key").toString(); + } + } + """); compilationTestHelper.doTest(); } @@ -37,15 +39,17 @@ public void modelsDisabledDoesNotLoadAstubxModel() { makeTestHelperWithArgs(List.of("-XepOpt:NullAway:AnnotatedPackages=foo")) .addSourceLines( "Test.java", - "package foo;", - "import javax.naming.directory.Attributes;", - "import org.jspecify.annotations.NullMarked;", - "@NullMarked", - "class Test {", - " void use(Attributes attrs) {", - " attrs.get(\"key\").toString();", - " }", - "}"); + """ + package foo; + import javax.naming.directory.Attributes; + import org.jspecify.annotations.NullMarked; + @NullMarked + class Test { + void use(Attributes attrs) { + attrs.get("key").toString(); + } + } + """); compilationTestHelper.doTest(); } } From 3857cf3202fa5c1df5f799cac98f21ac7777e7e4 Mon Sep 17 00:00:00 2001 From: Manu Sridharan Date: Thu, 19 Feb 2026 18:31:56 -0800 Subject: [PATCH 10/14] failing test --- .../uber/nullaway/JSpecifyJDKModelsTest.java | 66 +++++++++++++------ 1 file changed, 46 insertions(+), 20 deletions(-) diff --git a/nullaway/src/test/java/com/uber/nullaway/JSpecifyJDKModelsTest.java b/nullaway/src/test/java/com/uber/nullaway/JSpecifyJDKModelsTest.java index fb48881dc0..611f4af6a9 100644 --- a/nullaway/src/test/java/com/uber/nullaway/JSpecifyJDKModelsTest.java +++ b/nullaway/src/test/java/com/uber/nullaway/JSpecifyJDKModelsTest.java @@ -1,6 +1,7 @@ package com.uber.nullaway; import com.google.errorprone.CompilationTestHelper; +import com.uber.nullaway.generics.JSpecifyJavacConfig; import java.util.List; import org.junit.Test; import org.junit.runner.RunWith; @@ -11,26 +12,25 @@ public class JSpecifyJDKModelsTest extends NullAwayTestsBase { @Test public void modelsEnabledLoadsAstubxModel() { - CompilationTestHelper compilationTestHelper = - makeTestHelperWithArgs( - List.of( - "-XepOpt:NullAway:AnnotatedPackages=foo", - "-XepOpt:NullAway:JSpecifyJDKModels=true")) - .addSourceLines( - "Test.java", - """ - package foo; - import javax.naming.directory.Attributes; - import org.jspecify.annotations.NullMarked; - @NullMarked - class Test { - void use(Attributes attrs) { - // BUG: Diagnostic contains: @Nullable - attrs.get("key").toString(); - } - } - """); - compilationTestHelper.doTest(); + makeTestHelperWithArgs( + List.of( + "-XepOpt:NullAway:AnnotatedPackages=foo", + "-XepOpt:NullAway:JSpecifyJDKModels=true")) + .addSourceLines( + "Test.java", + """ + package foo; + import javax.naming.directory.Attributes; + import org.jspecify.annotations.NullMarked; + @NullMarked + class Test { + void use(Attributes attrs) { + // BUG: Diagnostic contains: @Nullable + attrs.get("key").toString(); + } + } + """) + .doTest(); } @Test @@ -52,4 +52,30 @@ void use(Attributes attrs) { """); compilationTestHelper.doTest(); } + + @Test + public void listContainingNullsWithModel() { + makeTestHelperWithArgs( + JSpecifyJavacConfig.withJSpecifyModeArgs( + List.of( + "-XepOpt:NullAway:AnnotatedPackages=foo", + "-XepOpt:NullAway:JSpecifyJDKModels=true"))) + .addSourceLines( + "Test.java", + """ + package foo; + import java.util.List; + import org.jspecify.annotations.NullMarked; + import org.jspecify.annotations.Nullable; + @NullMarked + class Test { + void use(List<@Nullable String> list) { + // list.add(null); + // BUG: Diagnostic contains: + list.get(0).toString(); + } + } + """) + .doTest(); + } } From 3c92457ad699ce89112fd40cf8df4fe1fa33512b Mon Sep 17 00:00:00 2001 From: Yeahn Kim Date: Fri, 20 Feb 2026 17:59:19 -0800 Subject: [PATCH 11/14] new output.astubx --- nullaway/src/main/resources/output.astubx | Bin 270147 -> 276040 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/nullaway/src/main/resources/output.astubx b/nullaway/src/main/resources/output.astubx index e09f02a2df0d08696b7a6ecf46613898455cbc26..1cdf4a7c14084c7b6f5c0aaea48eb2ae7fe9e70a 100644 GIT binary patch delta 18988 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 A&j0`b From 3a5314375e5f2a1d4f47d9190ff0b988496060c7 Mon Sep 17 00:00:00 2001 From: Yeahn Kim Date: Fri, 20 Feb 2026 18:09:02 -0800 Subject: [PATCH 12/14] only catch IOException when parsing jdk astubx file --- .../com/uber/nullaway/handlers/LibraryModelsHandler.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/nullaway/src/main/java/com/uber/nullaway/handlers/LibraryModelsHandler.java b/nullaway/src/main/java/com/uber/nullaway/handlers/LibraryModelsHandler.java index de46403a4f..b711ca56d5 100644 --- a/nullaway/src/main/java/com/uber/nullaway/handlers/LibraryModelsHandler.java +++ b/nullaway/src/main/java/com/uber/nullaway/handlers/LibraryModelsHandler.java @@ -62,6 +62,7 @@ import com.uber.nullaway.librarymodel.AddAnnotationToNestedTypeVisitor; import com.uber.nullaway.librarymodel.NestedAnnotationInfo; import com.uber.nullaway.librarymodel.NestedAnnotationInfo.Annotation; +import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.HashSet; @@ -1594,8 +1595,8 @@ private static class ExternalStubxLibraryModels implements LibraryModels { cacheUtil.parseStubStream(in, "output.astubx"); astubxLoadLog("Loaded JDK astubx model."); } - } catch (Exception e) { - astubxLoadLog("Failed to load JDK astubx: " + e); + } catch (IOException e) { + astubxLoadLog("IOException when loading JDK astubx: " + e); } } From d464a5b9c13a54fac47838d905cd7afdf97bbab5 Mon Sep 17 00:00:00 2001 From: Manu Sridharan Date: Fri, 20 Feb 2026 18:42:00 -0800 Subject: [PATCH 13/14] more tests --- .../uber/nullaway/JSpecifyJDKModelsTest.java | 38 ++++++++++++++++++- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/nullaway/src/test/java/com/uber/nullaway/JSpecifyJDKModelsTest.java b/nullaway/src/test/java/com/uber/nullaway/JSpecifyJDKModelsTest.java index 611f4af6a9..682b27c932 100644 --- a/nullaway/src/test/java/com/uber/nullaway/JSpecifyJDKModelsTest.java +++ b/nullaway/src/test/java/com/uber/nullaway/JSpecifyJDKModelsTest.java @@ -60,6 +60,35 @@ public void listContainingNullsWithModel() { List.of( "-XepOpt:NullAway:AnnotatedPackages=foo", "-XepOpt:NullAway:JSpecifyJDKModels=true"))) + .addSourceLines( + "Test.java", + """ + package foo; + import java.util.List; + import org.jspecify.annotations.NullMarked; + import org.jspecify.annotations.Nullable; + @NullMarked + class Test { + void testNullableContents(List<@Nullable String> list) { + list.add(null); + // BUG: Diagnostic contains: dereferenced expression list.get(0) is @Nullable + list.get(0).toString(); + } + void testNonNullContents(List list) { + // BUG: Diagnostic contains: passing @Nullable parameter 'null' where @NonNull is required + list.add(null); + list.get(0).toString(); + } + } + """) + .doTest(); + } + + @Test + public void listContainingNullsWithoutModel() { + makeTestHelperWithArgs( + JSpecifyJavacConfig.withJSpecifyModeArgs( + List.of("-XepOpt:NullAway:AnnotatedPackages=foo"))) .addSourceLines( "Test.java", """ @@ -70,8 +99,13 @@ public void listContainingNullsWithModel() { @NullMarked class Test { void use(List<@Nullable String> list) { - // list.add(null); - // BUG: Diagnostic contains: + list.add(null); + // no warning, since List.get() is unmarked without the model + list.get(0).toString(); + } + void testNonNullContents(List list) { + // no warning, since List.add() is unmarked without the model + list.add(null); list.get(0).toString(); } } From 6ce2d6237ce6f726328682674d60b5022f4200de Mon Sep 17 00:00:00 2001 From: Manu Sridharan Date: Fri, 20 Feb 2026 18:44:35 -0800 Subject: [PATCH 14/14] re-throw IOException rather than swallowing it --- .../java/com/uber/nullaway/handlers/LibraryModelsHandler.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/nullaway/src/main/java/com/uber/nullaway/handlers/LibraryModelsHandler.java b/nullaway/src/main/java/com/uber/nullaway/handlers/LibraryModelsHandler.java index b711ca56d5..61955133fc 100644 --- a/nullaway/src/main/java/com/uber/nullaway/handlers/LibraryModelsHandler.java +++ b/nullaway/src/main/java/com/uber/nullaway/handlers/LibraryModelsHandler.java @@ -64,6 +64,7 @@ import com.uber.nullaway.librarymodel.NestedAnnotationInfo.Annotation; import java.io.IOException; import java.io.InputStream; +import java.io.UncheckedIOException; import java.util.ArrayList; import java.util.HashSet; import java.util.LinkedHashMap; @@ -1596,7 +1597,7 @@ private static class ExternalStubxLibraryModels implements LibraryModels { astubxLoadLog("Loaded JDK astubx model."); } } catch (IOException e) { - astubxLoadLog("IOException when loading JDK astubx: " + e); + throw new UncheckedIOException(e); } }