{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T05:02:09Z","timestamp":1750309329952,"version":"3.41.0"},"publisher-location":"New York, NY, USA","reference-count":134,"publisher":"ACM","license":[{"start":{"date-parts":[[2024,10,27]],"date-time":"2024-10-27T00:00:00Z","timestamp":1729987200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"DOI":"10.13039\/100000185","name":"Defense Advanced Research Projects Agency","doi-asserted-by":"publisher","award":["FA8750-20-C-0226"],"award-info":[{"award-number":["FA8750-20-C-0226"]}],"id":[{"id":"10.13039\/100000185","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":[],"published-print":{"date-parts":[[2024,10,27]]},"DOI":"10.1145\/3691620.3695036","type":"proceedings-article","created":{"date-parts":[[2024,10,18]],"date-time":"2024-10-18T15:39:19Z","timestamp":1729265959000},"page":"367-380","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":0,"title":["Verifying the Option Type with Rely-Guarantee Reasoning"],"prefix":"10.1145","author":[{"ORCID":"https:\/\/orcid.org\/0000-0003-1228-2300","authenticated-orcid":false,"given":"James","family":"Yoo","sequence":"first","affiliation":[{"name":"University of Washington, Seattle, Washington, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-9379-277X","authenticated-orcid":false,"given":"Michael D.","family":"Ernst","sequence":"additional","affiliation":[{"name":"University of Washington, Seattle, Washington, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-5982-275X","authenticated-orcid":false,"given":"Ren\u00e9","family":"Just","sequence":"additional","affiliation":[{"name":"University of Washington, Seattle, Washington, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2024,10,27]]},"reference":[{"key":"e_1_3_2_1_1_1","unstructured":"2024. Zig Language Reference. https:\/\/ziglang.org\/documentation\/master\/#Optionals"},{"key":"e_1_3_2_1_2_1","volume-title":"8","author":"Standard Java Platform","year":"2014","unstructured":"Java Platform Standard Ed. 8. 2014. Optional (Java Platform SE 8). https:\/\/docs.oracle.com\/javase\/8\/docs\/api\/java\/util\/Optional.html. The Java Platform documentation for the Optional type."},{"key":"e_1_3_2_1_3_1","volume-title":"8","author":"Standard Java Platform","year":"2014","unstructured":"Java Platform Standard Ed. 8. 2014. Stream (Java Platform SE 8). https:\/\/docs.oracle.com\/javase\/8\/docs\/api\/java\/util\/stream\/Stream.html. The Java Platform documentation for the Stream type."},{"key":"e_1_3_2_1_4_1","unstructured":"The Agda Team. 2024. Language Reference - Agda 2.6.4.3 documentation. https:\/\/agda.readthedocs.io\/en\/v2.6.4.3\/language\/index.html"},{"key":"e_1_3_2_1_5_1","unstructured":"F.E. Allen and J. Schwartz. 1974. Determining the Data Relationships in a Collection of Procedures. IBM Research Report RC 4989 (22125). IBM T.J. Watson Research Center."},{"key":"e_1_3_2_1_6_1","volume-title":"Interprocedural Data Flow Analysis. In IFIP 1974: Proceedings of the 6th IFIP Congress","author":"Allen Frances E.","year":"1974","unstructured":"Frances E. Allen. 1974. Interprocedural Data Flow Analysis. In IFIP 1974: Proceedings of the 6th IFIP Congress. Stockholm, Sweden, 398--402."},{"key":"e_1_3_2_1_7_1","volume-title":"Maven - Welcome to Apache Maven. https:\/\/maven.apache.org\/index.html. Accessed","author":"Foundation Apache Software","year":"2023","unstructured":"Apache Software Foundation. 2023. Maven - Welcome to Apache Maven. https:\/\/maven.apache.org\/index.html. Accessed 2023."},{"key":"e_1_3_2_1_8_1","volume-title":"https:\/\/developer.apple.com\/documentation\/swift\/optional. Accessed","author":"Apple Inc. 2023. Optional.","year":"2023","unstructured":"Apple Inc. 2023. Optional. https:\/\/developer.apple.com\/documentation\/swift\/optional. Accessed 2023."},{"key":"e_1_3_2_1_9_1","unstructured":"Baeldung. 2020. Guide To Java 8 Optional. https:\/\/www.baeldung.com\/java-optional."},{"volume-title":"ESEC\/FSE 2019: The ACM 27th joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC\/FSE). Tallinn, Estonia, 740--750.","author":"Banerjee Subarno","key":"e_1_3_2_1_10_1","unstructured":"Subarno Banerjee, Lazaro Clapp, and Manu Sridharan. 2019. NullAway: Practical type-based null safety for Java. In ESEC\/FSE 2019: The ACM 27th joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC\/FSE). Tallinn, Estonia, 740--750."},{"key":"e_1_3_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-662-44202-9_11"},{"key":"e_1_3_2_1_12_1","volume-title":"RDL 2004: Workshop on Revival of Dynamic Languages","author":"Bracha Gilad","year":"2004","unstructured":"Gilad Bracha. 2004. Pluggable type systems. In RDL 2004: Workshop on Revival of Dynamic Languages. Vancouver, BC, Canada."},{"key":"e_1_3_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/3033019.3033032"},{"key":"e_1_3_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/1480881.1480917"},{"key":"e_1_3_2_1_15_1","unstructured":"Noel Rodr\u00edguez Calle. 2023. Java Optional and best practices. https:\/\/refactorizando.com\/en\/java-optional-and-best-practices\/."},{"key":"e_1_3_2_1_16_1","volume-title":"Soft Typing. In PLDI '91: Proceedings of the SIGPLAN '91 Conference on Programming Language Design and Implementation","author":"Cartwright Robert","year":"1991","unstructured":"Robert Cartwright and Mike Fagan. 1991. Soft Typing. In PLDI '91: Proceedings of the SIGPLAN '91 Conference on Programming Language Design and Implementation. Toronto, ON, Canada, 278--292."},{"key":"e_1_3_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/1065010.1065022"},{"key":"e_1_3_2_1_18_1","unstructured":"Spring Cloud. 2023. resolve. https:\/\/github.com\/spring-cloud\/spring-cloud-deployer-kubernetes\/blob\/0b84199d17788e1d05e5f3bab5df91ff0863b1e3\/src\/main\/java\/org\/springframework\/cloud\/deployer\/spi\/kubernetes\/PredicateRunningPhaseDeploymentStateResolver.java#L48. Accessed 2023."},{"key":"e_1_3_2_1_19_1","unstructured":"Stephen Colebourne. 2015. Java SE 8 Optional a pragmatic approach. https:\/\/blog.joda.org\/2015\/08\/java-se-8-optional-pragmatic-approach.html."},{"key":"e_1_3_2_1_20_1","volume-title":"Jfokus Developers Conference. Jfokus","author":"Colebourne Stephen","year":"2017","unstructured":"Stephen Colebourne. 2017. Java SE 8 Best Practices: A personal viewpoint. In Jfokus Developers Conference. Jfokus, Stokholm, Sweden. https:\/\/www.jfokus.se\/jfokus17\/preso\/Java-SE-8-best-practices.pdf."},{"key":"e_1_3_2_1_21_1","unstructured":"Ruby Community. 2024. Ruby Core Reference. (2024). https:\/\/ruby-doc.org\/3.2.2\/"},{"key":"e_1_3_2_1_22_1","unstructured":"The Idris Community. 2020. Language Reference - Idris 1.3.3 documentation. https:\/\/docs.idris-lang.org\/en\/latest\/reference\/index.html"},{"key":"e_1_3_2_1_23_1","unstructured":"Picocli Contributors. 2024. Picocli: a mighty tiny command line interface. https:\/\/github.com\/remkop\/picocli\/blob\/b03121b07eafaa094f634a09109f77df4b9cb4c0\/picocli-examples\/src\/main\/java\/picocli\/examples\/customhelp\/GroupingDemo.java#L101-L111. Accessed 2024."},{"key":"e_1_3_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/263699.263744"},{"key":"e_1_3_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/512950.512973"},{"key":"e_1_3_2_1_26_1","volume-title":"Maybe - core 1.0.5. https:\/\/package.elm-lang.org\/packages\/elm\/core\/latest\/Maybe. Accessed","author":"Czaplicki Evan","year":"2023","unstructured":"Evan Czaplicki. 2023. Maybe - core 1.0.5. https:\/\/package.elm-lang.org\/packages\/elm\/core\/latest\/Maybe. Accessed 2023."},{"key":"e_1_3_2_1_27_1","volume-title":"A Dataflow Framework for Java. https:\/\/checkerframework.org\/manual\/checker-framework-dataflow-manual.pdf. Accessed","author":"Dataflow","year":"2023","unstructured":"Dataflow framework 2023. A Dataflow Framework for Java. https:\/\/checkerframework.org\/manual\/checker-framework-dataflow-manual.pdf. Accessed 2023."},{"key":"e_1_3_2_1_28_1","volume-title":"StringUtil - Jodd Util. https:\/\/util.jodd.org\/utilitites\/stringutil. Accessed","author":"Developers Jodd","year":"2023","unstructured":"Jodd Developers. 2023. StringUtil - Jodd Util. https:\/\/util.jodd.org\/utilitites\/stringutil. Accessed 2023."},{"key":"e_1_3_2_1_29_1","volume-title":"Pandoc: The universal markup converter. https:\/\/github.com\/felixonmars\/pandoc\/blob\/0134b6332323f3230fb174ebf3bc85c1520228b2\/src\/Text\/Pandoc\/CSV.hs#L67C1-L75C1. Accessed","author":"Developers Pandoc","year":"2023","unstructured":"Pandoc Developers. 2023. Pandoc: The universal markup converter. https:\/\/github.com\/felixonmars\/pandoc\/blob\/0134b6332323f3230fb174ebf3bc85c1520228b2\/src\/Text\/Pandoc\/CSV.hs#L67C1-L75C1. Accessed 2023."},{"key":"e_1_3_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.1145\/199448.199461"},{"key":"e_1_3_2_1_31_1","unstructured":"Eclipse [n.d.]. Eclipse Project. http:\/\/www.eclipse.org\/. http:\/\/www.eclipse.org\/"},{"key":"e_1_3_2_1_32_1","volume-title":"Nothing is better than the Optional type. Really. Nothing is better. Java Magazine (Dec","author":"Ernst Michael D.","year":"2022","unstructured":"Michael D. Ernst. 2022. Nothing is better than the Optional type. Really. Nothing is better. Java Magazine (Dec. 2022)."},{"key":"e_1_3_2_1_33_1","volume-title":"plume-util. https:\/\/github.com\/plume-lib\/plume-util. Accessed","author":"Ernst Michael D.","year":"2024","unstructured":"Michael D. Ernst. 2024. plume-util. https:\/\/github.com\/plume-lib\/plume-util. Accessed 2024."},{"key":"e_1_3_2_1_34_1","unstructured":"Inc. Facebook. 2019. Infer : Eradicate. https:\/\/fbinfer.com\/docs\/checker-eradicate\/."},{"key":"e_1_3_2_1_35_1","unstructured":"FasterXML LLC. 2020. Jackson Project Home @github. https:\/\/github.com\/FasterXML\/jackson."},{"key":"e_1_3_2_1_36_1","unstructured":"Matthew Flatt and PLT. 2024. The Racket Reference (8.13 ed.). https:\/\/docs.racket-lang.org\/reference\/"},{"key":"e_1_3_2_1_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/301618.301665"},{"key":"e_1_3_2_1_38_1","doi-asserted-by":"publisher","DOI":"10.1145\/1186632.1186635"},{"key":"e_1_3_2_1_39_1","doi-asserted-by":"publisher","DOI":"10.1145\/512529.512531"},{"volume-title":"fvarrui\/JavaPackager. https:\/\/github.com\/fvarrui\/JavaPackager. Accessed","year":"2023","key":"e_1_3_2_1_40_1","unstructured":"fvarrui. 2023. fvarrui\/JavaPackager. https:\/\/github.com\/fvarrui\/JavaPackager. Accessed 2023."},{"key":"e_1_3_2_1_41_1","unstructured":"Google. 2018. Error Prone. https:\/\/errorprone.info\/."},{"key":"e_1_3_2_1_42_1","unstructured":"Google. 2023. Bug Patterns. https:\/\/errorprone.info\/bugpatterns."},{"key":"e_1_3_2_1_43_1","volume-title":"Error Prone Bug Patterns. https:\/\/errorprone.info\/bugpattern. Accessed","author":"Inc. Google. 2023.","year":"2023","unstructured":"Inc. Google. 2023. Error Prone Bug Patterns. https:\/\/errorprone.info\/bugpattern. Accessed 2023."},{"key":"e_1_3_2_1_44_1","volume-title":"https:\/\/errorprone.info\/bugpattern\/OptionalNotPresent. Accessed","author":"Inc. Google. 2023. OptionalNotPresent.","year":"2023","unstructured":"Inc. Google. 2023. OptionalNotPresent. https:\/\/errorprone.info\/bugpattern\/OptionalNotPresent. Accessed 2023."},{"key":"e_1_3_2_1_45_1","unstructured":"Google Corporation. 2015. Using and avoiding null. https:\/\/github.com\/google\/guava\/wiki\/UsingAndAvoidingNullExplained."},{"key":"e_1_3_2_1_46_1","volume-title":"Java SE Specifications. https:\/\/docs.oracle.com\/javase\/specs\/jls\/se21\/jls21.pdf., 789--819 pages. Accessed","author":"Gosling James","year":"2023","unstructured":"James Gosling, Bill Joy, Guy Steele, Gilad Bracha, Alex Buckley, Daniel Smith, and Gavin Bierman. 2023. Java SE Specifications. https:\/\/docs.oracle.com\/javase\/specs\/jls\/se21\/jls21.pdf., 789--819 pages. Accessed 2023."},{"key":"e_1_3_2_1_47_1","unstructured":"W. Brian Gourlie. 2015. Java 8's new Optional type is worthless. https:\/\/medium.com\/@bgourlie\/java-8-s-new-optional-type-is-worthless-448a00fa672d."},{"key":"e_1_3_2_1_48_1","volume-title":"https:\/\/gradle.org. Accessed","author":"Gradle Inc. 2023. Gradle.","year":"2023","unstructured":"Gradle Inc. 2023. Gradle. https:\/\/gradle.org. Accessed 2023."},{"key":"e_1_3_2_1_49_1","volume-title":"Foster","author":"Greenfieldboyce David","year":"2005","unstructured":"David Greenfieldboyce and Jeffrey S. Foster. 2005. Type qualifiers for Java. http:\/\/www.cs.umd.edu\/Grad\/scholarlypapers\/papers\/greenfiledboyce.pdf."},{"key":"e_1_3_2_1_50_1","doi-asserted-by":"publisher","DOI":"10.1145\/1297027.1297051"},{"volume-title":"OOPSLA Companion: Companion to Object-Oriented Programming Systems, Languages, and Applications.","author":"Hovemeyer David","key":"e_1_3_2_1_51_1","unstructured":"David Hovemeyer and William Pugh. 2004. Finding bugs is easy. In OOPSLA Companion: Companion to Object-Oriented Programming Systems, Languages, and Applications. Vancouver, BC, Canada, 132--136."},{"key":"e_1_3_2_1_52_1","unstructured":"Sonatype Inc. 2024. Maven Central: com.google.code.findbugs. https:\/\/central.sonatype.com\/namespace\/com.google.code.findbugs. Accessed 2024-08-11."},{"key":"e_1_3_2_1_53_1","unstructured":"Sonatype Inc. 2024. Maven Central: error_prone_annotations. https:\/\/central.sonatype.com\/artifact\/com.google.errorprone\/error_prone_annotations\/versions. Accessed 2024-08-11."},{"key":"e_1_3_2_1_54_1","volume-title":"Standard Library | The Coq Proof Assistant. https:\/\/coq.inria.fr\/doc\/V8.17.1\/stdlib\/Coq.Init.Datatypes.html#option. Accessed","author":"INRIA","year":"2023","unstructured":"INRIA 2023. Standard Library | The Coq Proof Assistant. https:\/\/coq.inria.fr\/doc\/V8.17.1\/stdlib\/Coq.Init.Datatypes.html#option. Accessed 2023."},{"key":"e_1_3_2_1_55_1","unstructured":"ISO. 2012. ISO\/IEC 14882:2011 Information technology --- Programming languages --- C++. International Organization for Standardization."},{"key":"e_1_3_2_1_56_1","unstructured":"Java Developer Central. 2019. A Complete Guide to Java Optional. https:\/\/javadevcentral.com\/a-complete-guide-to-java-optional."},{"key":"e_1_3_2_1_57_1","unstructured":"JetBrains. 2020. List of Java inspections. https:\/\/www.jetbrains.com\/help\/idea\/2020.1\/list-of-java-inspections.html."},{"volume-title":"IntelliJ IDEA - the leading Java and Kotlin IDE. https:\/\/www.jetbrains.com\/idea\/. Accessed","year":"2023","key":"e_1_3_2_1_58_1","unstructured":"JetBrains. 2023. IntelliJ IDEA - the leading Java and Kotlin IDE. https:\/\/www.jetbrains.com\/idea\/. Accessed 2023."},{"key":"e_1_3_2_1_59_1","volume-title":"Tentative steps toward a development method for interfering programs. 5, 4 (Oct","author":"Jones Cliff B.","year":"1983","unstructured":"Cliff B. Jones. 1983. Tentative steps toward a development method for interfering programs. 5, 4 (Oct. 1983), 596--619."},{"key":"e_1_3_2_1_60_1","doi-asserted-by":"publisher","DOI":"10.1145\/321921.321938"},{"volume-title":"Verifying Object Construction. In ICSE 2020, Proceedings of the 42nd International Conference on Software Engineering","author":"Kellogg Martin","key":"e_1_3_2_1_61_1","unstructured":"Martin Kellogg, Manli Ran, Manu Sridharan, Martin Sch\u00e4f, and Michael D. Ernst. 2020. Verifying Object Construction. In ICSE 2020, Proceedings of the 42nd International Conference on Software Engineering. Seoul, Korea, 1447--1458."},{"volume-title":"ASE 2020: Proceedings of the 35th Annual International Conference on Automated Software Engineering","author":"Kellogg Martin","key":"e_1_3_2_1_62_1","unstructured":"Martin Kellogg, Martin Sch\u00e4f, Serdar Tasiran, and Michael D. Ernst. 2020. Continuous compliance. In ASE 2020: Proceedings of the 35th Annual International Conference on Automated Software Engineering. Melbourne, Australia, 511--523."},{"key":"e_1_3_2_1_63_1","unstructured":"Semyon Kirekov. 2020. Java Optional is not so obvious. https:\/\/levelup.gitconnected.com\/java-optional-is-not-so-obvious-263d9559dd41."},{"key":"e_1_3_2_1_64_1","volume-title":"https:\/\/dotty.epfl.ch\/api\/scala\/Option.html. Accessed","author":"Option EPFL.","year":"2023","unstructured":"LAMP\/EPFL. 2023. Option. https:\/\/dotty.epfl.ch\/api\/scala\/Option.html. Accessed 2023."},{"key":"e_1_3_2_1_65_1","volume-title":"Proc. ACM Program. Lang.","author":"Le Quang Loc","year":"2022","unstructured":"Quang Loc Le, Azalea Raad, Jules Villard, Josh Berdine, Derek Dreyer, and Peter W. O'Hearn. 2022. Finding real bugs in big programs with incorrectness logic. Proc. ACM Program. Lang. (2022)."},{"key":"e_1_3_2_1_66_1","volume-title":"26 Reasons Why Using Optional Correctly Is Not Optional. Dzone.com (Nov","author":"Leonard Anghel","year":"2018","unstructured":"Anghel Leonard. 2018. 26 Reasons Why Using Optional Correctly Is Not Optional. Dzone.com (Nov. 2018)."},{"key":"e_1_3_2_1_67_1","volume-title":"OCaml library: Option. https:\/\/v2.ocaml.org\/api\/type_Option.html. Accessed","author":"Leroy Xavier","year":"2023","unstructured":"Xavier Leroy, Damien Doligez, Alain Frisch, Jacques Garrigue, Didier R\u00e9my, KC Sivaramakrishnan, and J\u00e9r\u00f4me Vouillon. 2023. OCaml library: Option. https:\/\/v2.ocaml.org\/api\/type_Option.html. Accessed 2023."},{"key":"e_1_3_2_1_68_1","unstructured":"Przemyslaw Magda. 2017. Optional Anti-Patterns. Dzone.com (July 2017). https:\/\/dzone.com\/articles\/optional-anti-patterns."},{"key":"e_1_3_2_1_69_1","unstructured":"SpotBugs Maintainers. 2024. Bug descriptions - spotbugs 4.8.6 documentation. https:\/\/spotbugs.readthedocs.io\/en\/latest\/bugDescriptions.html#np-method-with-optional-return-type-returns-explicit-null-np-optional-return-null. Documentation for SpotBugs' rule to prevent null returns for option values."},{"key":"e_1_3_2_1_70_1","volume-title":"Optional: The mother of all bikesheds. In vJUG24. https:\/\/stuartmarks.wordpress.com\/2016\/09\/27\/vjug24-session-on-optional\/.","author":"Marks Stuart","year":"2016","unstructured":"Stuart Marks. 2016. Optional: The mother of all bikesheds. In vJUG24. https:\/\/stuartmarks.wordpress.com\/2016\/09\/27\/vjug24-session-on-optional\/."},{"key":"e_1_3_2_1_71_1","unstructured":"Stuart Marks. 2017. Optional - The Mother of All Bikesheds. https:\/\/www.youtube.com\/watch?v=Ej0sss6cq14. Accessed 2024-08-20."},{"key":"e_1_3_2_1_72_1","volume-title":"JavaOne","author":"Marks Stuart","year":"2015","unstructured":"Stuart Marks and Brian Goetz. 2015. API Design with Java 8 Lambda and Streams. In JavaOne 2015. Oracle Corporation, San Francisco, CA, USA."},{"key":"e_1_3_2_1_73_1","unstructured":"Mervyn McCreight. 2019. A look at the Optional datatype in Java and some anti-patterns when using it. freeCodeCamp https:\/\/www.freecodecamp.org\/news\/optional-in-java-and-anti-patterns-using-it-7d87038362ba\/."},{"key":"e_1_3_2_1_74_1","unstructured":"Meta. 2024. facebook\/infer: Issue #1110. https:\/\/github.com\/facebook\/infer\/issues\/1110. Accessed 2024-08-18."},{"key":"e_1_3_2_1_75_1","unstructured":"Meta. 2024. facebook\/infer: Issue #427. https:\/\/github.com\/facebook\/infer\/issues\/427#issuecomment-240687267. Accessed 2024-08-18."},{"key":"e_1_3_2_1_76_1","unstructured":"Meta. 2024. Infer. https:\/\/fbinfer.com. Accessed 2024-08-18."},{"volume-title":"Infer: OPTIONAL_EMPTY_ACCESS. https:\/\/fbinfer.com\/docs\/all-issue-types\/#optional_empty_access. Accessed 2024-08-18.","year":"2024","key":"e_1_3_2_1_77_1","unstructured":"Meta. 2024. Infer: OPTIONAL_EMPTY_ACCESS. https:\/\/fbinfer.com\/docs\/all-issue-types\/#optional_empty_access. Accessed 2024-08-18."},{"volume-title":"Infer: OPTIONAL_EMPTY_ACCESS_LATENT. https:\/\/fbinfer.com\/docs\/all-issue-types\/#optional_empty_access. Accessed 2024-08-18.","year":"2024","key":"e_1_3_2_1_78_1","unstructured":"Meta. 2024. Infer: OPTIONAL_EMPTY_ACCESS_LATENT. https:\/\/fbinfer.com\/docs\/all-issue-types\/#optional_empty_access. Accessed 2024-08-18."},{"key":"e_1_3_2_1_79_1","volume-title":"https:\/\/learn.microsoft.com\/en-us\/dotnet\/fsharp\/language-reference\/options. Accessed","author":"Microsoft Corp. 2023. Options - F# | Microsoft Learn.","year":"2023","unstructured":"Microsoft Corp. 2023. Options - F# | Microsoft Learn. https:\/\/learn.microsoft.com\/en-us\/dotnet\/fsharp\/language-reference\/options. Accessed 2023."},{"key":"e_1_3_2_1_80_1","unstructured":"Robin Milner Mads Tofte and Robert Harper. 1990. The Definition of Standard ML."},{"key":"e_1_3_2_1_81_1","volume-title":"Java 8 Optional Usage and Best Practices. Dzone.com (July","author":"Mutanda Hopewell","year":"2019","unstructured":"Hopewell Mutanda. 2019. Java 8 Optional Usage and Best Practices. Dzone.com (July 2019). https:\/\/dzone.com\/articles\/java-8-optional-usage-and-best-practices."},{"volume-title":"netflix\/hollow. https:\/\/github.com\/Netflix\/hollow. Accessed","year":"2023","key":"e_1_3_2_1_82_1","unstructured":"Netflix. 2023. netflix\/hollow. https:\/\/github.com\/Netflix\/hollow. Accessed 2023."},{"key":"e_1_3_2_1_83_1","unstructured":"Netflix. 2023. versionDetected. https:\/\/github.com\/Netflix\/hollow\/blob\/5ee483170e2902dc694a47ceeb4dc7a4a901d284\/hollow\/src\/main\/java\/com\/netflix\/hollow\/api\/consumer\/metrics\/AbstractRefreshMetricsListener.java#L82. Accessed 2023."},{"key":"e_1_3_2_1_84_1","unstructured":"Nim Developers. 2024. std\/options. https:\/\/nim-lang.org\/docs\/options.html"},{"key":"e_1_3_2_1_85_1","unstructured":"nLab authors. 2023. eta-conversion. https:\/\/ncatlab.org\/nlab\/show\/eta-conversion. Revision 14."},{"key":"e_1_3_2_1_86_1","volume-title":"Proc. ACM Program. Lang.","author":"O'Hearn Peter W.","year":"2019","unstructured":"Peter W. O'Hearn. 2019. Incorrectness logic. Proc. ACM Program. Lang. (2019)."},{"key":"e_1_3_2_1_87_1","unstructured":"Daniel Olszewski. 2018. Java 8 Optional best practices and wrong usage. http:\/\/dolszewski.com\/java\/java-8-optional-use-cases\/."},{"key":"e_1_3_2_1_88_1","unstructured":"Oracle Corporation. 2018. Class Optional<T>. https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/Optional.html."},{"key":"e_1_3_2_1_89_1","unstructured":"Indrek Ots. 2019. Misusing Java's Optional type. https:\/\/blog.indrek.io\/articles\/misusing-java-optional\/."},{"key":"e_1_3_2_1_90_1","doi-asserted-by":"publisher","DOI":"10.1145\/379605.379635"},{"key":"e_1_3_2_1_91_1","doi-asserted-by":"publisher","DOI":"10.1145\/1390630.1390656"},{"key":"e_1_3_2_1_92_1","unstructured":"Nicolai Parlog. 2022. Where to use Optional --- Inside Java Newscast #19. https:\/\/nipafx.dev\/inside-java-newscast-19\/."},{"key":"e_1_3_2_1_93_1","volume-title":"The Design of Optional. https:\/\/nipafx.dev\/design-java-optional\/. Accessed","author":"Parlog Nicolai","year":"2023","unstructured":"Nicolai Parlog. 2023. The Design of Optional. https:\/\/nipafx.dev\/design-java-optional\/. Accessed 2023."},{"volume-title":"https:\/\/github.com\/PCGen\/pcgen\/blob\/4c001b3526e3e5deef49c23750e563c578d4f2ed\/code\/src\/java\/pcgen\/rules\/persistence\/DynamicLoader.java#L97C1-L101C4. Accessed","year":"2023","key":"e_1_3_2_1_94_1","unstructured":"PCGen. 2023. PCGen\/pcgen. https:\/\/github.com\/PCGen\/pcgen\/blob\/4c001b3526e3e5deef49c23750e563c578d4f2ed\/code\/src\/java\/pcgen\/rules\/persistence\/DynamicLoader.java#L97C1-L101C4. Accessed 2023."},{"key":"e_1_3_2_1_95_1","unstructured":"Perforce JRebel Labs. 2020. Java 8 Best Practices Cheat Sheet. https:\/\/www.jrebel.com\/resources\/java-8-best-practices."},{"key":"e_1_3_2_1_96_1","unstructured":"Manh Phan. 2019. Best practice for Optional in Java. https:\/\/ducmanhphan.github.io\/2019-12-06-Best-practice-for-Optional-in-Java\/."},{"key":"e_1_3_2_1_97_1","unstructured":"Artem Pianykh Ilya Zorin and Dmitry Lyubarskiy. 2022. Retrofitting null-safety onto Java at Meta. https:\/\/engineering.fb.com\/2022\/11\/22\/developer-tools\/meta-java-nullsafe\/."},{"key":"e_1_3_2_1_98_1","unstructured":"Artem Pianykh Ilya Zorin and Dmitry Lyubarskiy. 2022. Retrofitting null-safety onto Java at Meta. https:\/\/engineering.fb.com\/2022\/11\/22\/developer-tools\/meta-java-nullsafe\/. Accessed 2024-08-20."},{"key":"e_1_3_2_1_99_1","unstructured":"The Mypy Project. 2014. mypy - Optional Static Typing for Python. https:\/\/mypy-lang.org. Accessed 2024-08-20."},{"key":"e_1_3_2_1_100_1","unstructured":"Python Software Foundation. 2024. The Python Language Reference (Python 3.12.3 ed.). https:\/\/docs.python.org\/3\/reference\/index.html"},{"key":"e_1_3_2_1_101_1","unstructured":"A N M Bazlur Rahman. 2023. Optional in Java: A Swiss Army knife for handling nulls and improving code quality. https:\/\/foojay.io\/today\/author\/bazlur-rahman\/."},{"key":"e_1_3_2_1_102_1","unstructured":"redis developer. 2023. redis-developer\/riot. https:\/\/github.com\/redis-developer\/riot\/blob\/e831410a93613059d614c1692877db2faccb9598\/core\/riot-core\/src\/main\/java\/com\/redis\/riot\/core\/convert\/IdConverterBuilder.java#L46-L50. Accessed 2023."},{"key":"e_1_3_2_1_103_1","volume-title":"2023 State of the Java Ecosystem. https:\/\/newrelic.com\/resources\/report\/2023-state-of-the-java-ecosystem#most-used-java-versions. Accessed","author":"Relic New","year":"2023","unstructured":"New Relic. 2023. 2023 State of the Java Ecosystem. https:\/\/newrelic.com\/resources\/report\/2023-state-of-the-java-ecosystem#most-used-java-versions. Accessed 2023."},{"volume-title":"Compiler Construction","author":"Reps Thomas","key":"e_1_3_2_1_104_1","unstructured":"Thomas Reps. 1994. Solving demand versions of interprocedural analysis problems. In Compiler Construction. Springer Berlin Heidelberg, 389--403."},{"key":"e_1_3_2_1_105_1","doi-asserted-by":"publisher","DOI":"10.1109\/LICS.2002.1029817"},{"key":"e_1_3_2_1_106_1","volume-title":"std::option - Rust. https:\/\/doc.rust-lang.org\/std\/option\/index.html. Accessed","author":"Foundation Rust","year":"2023","unstructured":"Rust Foundation. 2023. std::option - Rust. https:\/\/doc.rust-lang.org\/std\/option\/index.html. Accessed 2023."},{"key":"e_1_3_2_1_107_1","doi-asserted-by":"publisher","DOI":"10.1145\/3188720"},{"key":"e_1_3_2_1_108_1","unstructured":"Amazon Web Services. 2023. smithy-lang\/smithy. https:\/\/github.com\/smithy-lang\/smithy\/blob\/309862e54cd5582b3e3456845cf9e6c9fd873a4d\/smithy-aws-traits\/src\/main\/java\/software\/amazon\/smithy\/aws\/traits\/tagging\/TaggableResourceValidator.java#L125-L128. Accessed 2023."},{"volume-title":"SFP 2006: Workshop on Scheme and Functional Programming (SFP)","author":"Jeremy","key":"e_1_3_2_1_109_1","unstructured":"Jeremy G. Siek and Walid Taha. 2006. Gradual typing for functional languages. In SFP 2006: Workshop on Scheme and Functional Programming (SFP). Portland, OR, USA, 81--92."},{"key":"e_1_3_2_1_110_1","unstructured":"Volodymyr Sobotovych. 2022. Using java.util.Optional everywhere. To be or not to be? https:\/\/wheleph.gitlab.io\/posts\/2022-07-09-using-optional-everywhere\/."},{"key":"e_1_3_2_1_111_1","unstructured":"SonarSource S.A. 2020. Java static code analysis: Unique rules to find Bugs Vulnerabilities Security Hotspots and Code Smells in your Java code. https:\/\/rules.sonarsource.com\/java\/."},{"volume-title":"Sourcegraph Search. https:\/\/sourcegraph.com\/search. Accessed","year":"2023","key":"e_1_3_2_1_112_1","unstructured":"Sourcegraph. 2023. Sourcegraph Search. https:\/\/sourcegraph.com\/search. Accessed 2023."},{"volume-title":"FTfJP: 14th Workshop on Formal Techniques for Java-like Programs","author":"Spishak Eric","key":"e_1_3_2_1_113_1","unstructured":"Eric Spishak, Werner Dietl, and Michael D. Ernst. 2012. A type system for regular expressions. In FTfJP: 14th Workshop on Formal Techniques for Java-like Programs. Beijing, China, 20--26."},{"key":"e_1_3_2_1_114_1","unstructured":"SpotBugs Community. 2021. Bug descriptions - spotbugs 4.8.2 documentation. https:\/\/spotbugs.readthedocs.io\/en\/latest\/bugDescriptions.html#np-method-with-optional-return-type-returns-explicit-null-np-optional-return-null."},{"key":"e_1_3_2_1_115_1","unstructured":"SpotBugs maintainers. [n.d.]. SpotBugs. https:\/\/github.com\/spotbugs\/spotbugs. SpotBugs source code repository."},{"key":"e_1_3_2_1_116_1","volume-title":"The Nullness Analyser of Julia. In LPAR 2010: Proceedings of the 16th International Conference on Logic for Programming, Artificial Intelligence, and Reasoning. Dakar, Senegal, 405--424","author":"Spoto F.","year":"2010","unstructured":"F. Spoto. 2010. The Nullness Analyser of Julia. In LPAR 2010: Proceedings of the 16th International Conference on Logic for Programming, Artificial Intelligence, and Reasoning. Dakar, Senegal, 405--424."},{"key":"e_1_3_2_1_117_1","volume-title":"IntelliJ IDEA 2023","author":"JetBrains","year":"2023","unstructured":"JetBrains s.r.o. 2023. IntelliJ IDEA 2023.3 List of Java inspections. https:\/\/www.jetbrains.com\/help\/idea\/list-of-java-inspections.html. Accessed 2023."},{"key":"e_1_3_2_1_118_1","volume-title":"Stack Overflow Developer Survey","author":"Overflow Stack","year":"2023","unstructured":"Stack Overflow. 2023. Stack Overflow Developer Survey 2023. https:\/\/survey.stackoverflow.co\/2023\/#most-popular-technologies-new-collab-tools. Accessed 2023."},{"key":"e_1_3_2_1_119_1","volume-title":"12 recipes for using the Optional class as it's meant to be used. Java Magazine (June","author":"Taman Mohamed","year":"2020","unstructured":"Mohamed Taman. 2020. 12 recipes for using the Optional class as it's meant to be used. Java Magazine (June 2020). https:\/\/blogs.oracle.com\/javamagazine\/post\/12-recipes-for-using-the-optional-class-as-its-meant-to-be-used."},{"key":"e_1_3_2_1_120_1","volume-title":"The Java Optional class: 11 more recipes for preventing null pointer exceptions. Java Magazine (July","author":"Taman Mohamed","year":"2020","unstructured":"Mohamed Taman. 2020. The Java Optional class: 11 more recipes for preventing null pointer exceptions. Java Magazine (July 2020). https:\/\/blogs.oracle.com\/javamagazine\/post\/12-recipes-for-using-the-optional-class-as-its-meant-to-be-used."},{"key":"e_1_3_2_1_121_1","unstructured":"The Bored Dev. 2020. Please stop the Java Optional mess! (How To Use Optional in Java). https:\/\/theboreddev.com\/please-stop-the-java-optional-mess\/."},{"key":"e_1_3_2_1_122_1","unstructured":"Emanuel Trandafir. 2022. 4 reasons why you should use Java Optional --- or not? https:\/\/medium.com\/javarevisited\/4-reasons-why-you-should-use-java-optional-or-not-4e44d51a9645."},{"key":"e_1_3_2_1_123_1","unstructured":"VMware Tanzu. 2023. Spring Home. https:\/\/spring.io\/."},{"key":"e_1_3_2_1_124_1","unstructured":"Ben Weidig. 2019. Better null-handling with Java Optionals. https:\/\/belief-driven-design.com\/better-null-handling-with-java-optionals-da974529bae\/."},{"key":"e_1_3_2_1_125_1","doi-asserted-by":"publisher","DOI":"10.1145\/3386327"},{"key":"e_1_3_2_1_126_1","unstructured":"Chad Woolf Byron Cook and Tom McAndrew. 2019. AWS re: Inforce 2019: Automate Compliance Verification on AWS Using Provable Security (GRC301). https:\/\/www.youtube.com\/watch?v=BbXK_-b3DTk. Accessed 2024-08-20."},{"key":"e_1_3_2_1_127_1","doi-asserted-by":"publisher","DOI":"10.1006\/inco.1994.1093"},{"key":"e_1_3_2_1_128_1","unstructured":"James Yoo. 2023. Avoid possibility of crash for GeneralTab.java and PluginManagerController.java. https:\/\/github.com\/chunky-dev\/chunky\/pull\/1678. Accessed 2024-09-07."},{"key":"e_1_3_2_1_129_1","unstructured":"James Yoo. 2023. Fix for possible crash in SceneChooserController.java. https:\/\/github.com\/chunky-dev\/chunky\/pull\/1677. Accessed 2024-09-07."},{"key":"e_1_3_2_1_130_1","unstructured":"James Yoo. 2023. Prevent run-time exception when image mounting fails. https:\/\/github.com\/fvarrui\/JavaPackager\/pull\/379. Accessed 2024-09-01."},{"key":"e_1_3_2_1_131_1","unstructured":"James Yoo. 2023. Prevent run-time exception when region update occurs. https:\/\/github.com\/PCGen\/pcgen\/pull\/7009. Accessed 2024-09-07."},{"key":"e_1_3_2_1_132_1","unstructured":"James Yoo. 2023. Update FileUtils#findFirstFile to conform to specifications. https:\/\/github.com\/fvarrui\/JavaPackager\/pull\/376. Accessed 2024-09-01."},{"key":"e_1_3_2_1_133_1","unstructured":"James Yoo. 2024. Avoid NoSuchElementException in Math-Plume.modulusStrictInt. https:\/\/github.com\/plume-lib\/plume-util\/pull\/371. Accessed 2024-09-07."},{"key":"e_1_3_2_1_134_1","unstructured":"James Yoo. 2024. Avoid NoSuchElementException in Math-Plume.modulusStrictLong. https:\/\/github.com\/plume-lib\/plume-util\/pull\/368. Accessed 2024-09-07."}],"event":{"name":"ASE '24: 39th IEEE\/ACM International Conference on Automated Software Engineering","sponsor":["SIGAI ACM Special Interest Group on Artificial Intelligence","SIGSOFT ACM Special Interest Group on Software Engineering","IEEE CS"],"location":"Sacramento CA USA","acronym":"ASE '24"},"container-title":["Proceedings of the 39th IEEE\/ACM International Conference on Automated Software Engineering"],"original-title":[],"link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3691620.3695036","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/abs\/10.1145\/3691620.3695036","content-type":"text\/html","content-version":"vor","intended-application":"syndication"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3691620.3695036","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T00:04:07Z","timestamp":1750291447000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3691620.3695036"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2024,10,27]]},"references-count":134,"alternative-id":["10.1145\/3691620.3695036","10.1145\/3691620"],"URL":"https:\/\/doi.org\/10.1145\/3691620.3695036","relation":{},"subject":[],"published":{"date-parts":[[2024,10,27]]},"assertion":[{"value":"2024-10-27","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}