{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,2,12]],"date-time":"2026-02-12T22:33:21Z","timestamp":1770935601076,"version":"3.50.1"},"reference-count":31,"publisher":"Elsevier BV","license":[{"start":{"date-parts":[[2026,2,1]],"date-time":"2026-02-01T00:00:00Z","timestamp":1769904000000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/www.elsevier.com\/tdm\/userlicense\/1.0\/"},{"start":{"date-parts":[[2026,2,1]],"date-time":"2026-02-01T00:00:00Z","timestamp":1769904000000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/www.elsevier.com\/legal\/tdmrep-license"},{"start":{"date-parts":[[2026,2,1]],"date-time":"2026-02-01T00:00:00Z","timestamp":1769904000000},"content-version":"stm-asf","delay-in-days":0,"URL":"https:\/\/doi.org\/10.15223\/policy-017"},{"start":{"date-parts":[[2026,2,1]],"date-time":"2026-02-01T00:00:00Z","timestamp":1769904000000},"content-version":"stm-asf","delay-in-days":0,"URL":"https:\/\/doi.org\/10.15223\/policy-037"},{"start":{"date-parts":[[2026,2,1]],"date-time":"2026-02-01T00:00:00Z","timestamp":1769904000000},"content-version":"stm-asf","delay-in-days":0,"URL":"https:\/\/doi.org\/10.15223\/policy-012"},{"start":{"date-parts":[[2026,2,1]],"date-time":"2026-02-01T00:00:00Z","timestamp":1769904000000},"content-version":"stm-asf","delay-in-days":0,"URL":"https:\/\/doi.org\/10.15223\/policy-029"},{"start":{"date-parts":[[2026,2,1]],"date-time":"2026-02-01T00:00:00Z","timestamp":1769904000000},"content-version":"stm-asf","delay-in-days":0,"URL":"https:\/\/doi.org\/10.15223\/policy-004"}],"funder":[{"DOI":"10.13039\/501100003151","name":"Quebec Research Fund Nature and Technology","doi-asserted-by":"publisher","award":["273582"],"award-info":[{"award-number":["273582"]}],"id":[{"id":"10.13039\/501100003151","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/501100001804","name":"Canada Research Chairs Program","doi-asserted-by":"publisher","id":[{"id":"10.13039\/501100001804","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["elsevier.com","sciencedirect.com"],"crossmark-restriction":true},"short-container-title":["Journal of Computer Languages"],"published-print":{"date-parts":[[2026,2]]},"DOI":"10.1016\/j.cola.2026.101385","type":"journal-article","created":{"date-parts":[[2026,1,20]],"date-time":"2026-01-20T16:28:35Z","timestamp":1768926515000},"page":"101385","update-policy":"https:\/\/doi.org\/10.1016\/elsevier_cm_policy","source":"Crossref","is-referenced-by-count":0,"special_numbering":"C","title":["Design pattern for reusing immutable methods in object-oriented languages"],"prefix":"10.1016","volume":"86","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-0999-8431","authenticated-orcid":false,"given":"William","family":"Flageol","sequence":"first","affiliation":[]},{"given":"Yann-Ga\u00ebl","family":"Gu\u00e9h\u00e9neuc","sequence":"additional","affiliation":[]},{"given":"Stefan","family":"Monnier","sequence":"additional","affiliation":[]},{"given":"Mourad","family":"Badri","sequence":"additional","affiliation":[]}],"member":"78","reference":[{"key":"10.1016\/j.cola.2026.101385_b1","series-title":"Structure and Interpretation of Computer Programs","author":"Abelson","year":"1984"},{"key":"10.1016\/j.cola.2026.101385_b2","series-title":"Effective Java, Second Edition","author":"Bloch","year":"2008"},{"key":"10.1016\/j.cola.2026.101385_b3","series-title":"Refactoring: Improving the Design of Existing Code","author":"Fowler","year":"2018"},{"key":"10.1016\/j.cola.2026.101385_b4","series-title":"2017 ACM\/IEEE International Symposium on Empirical Software Engineering and Measurement","first-page":"58","article-title":"An empirical examination of the relationship between code smells and merge conflicts","author":"Ahmed","year":"2017"},{"key":"10.1016\/j.cola.2026.101385_b5","doi-asserted-by":"crossref","DOI":"10.1016\/j.jss.2020.110610","article-title":"Code smells and refactoring: A tertiary systematic review of challenges and observations","volume":"167","author":"Lacerda","year":"2020","journal-title":"J. Syst. Softw."},{"key":"10.1016\/j.cola.2026.101385_b6","series-title":"Design Patterns: Elements of Reusable Object-Oriented Software","author":"Gamma","year":"1994"},{"key":"10.1016\/j.cola.2026.101385_b7","series-title":"Proceedings of the 28th European Conference on Pattern Languages of Programs","article-title":"Design pattern for reusing immutable methods in object-oriented languages","author":"Flageol","year":"2024"},{"key":"10.1016\/j.cola.2026.101385_b8","series-title":"Proceedings of the 38Th International Conference on Software Engineering","first-page":"736","article-title":"Exploring language support for immutability","author":"Coblenz","year":"2016"},{"issue":"7","key":"10.1016\/j.cola.2026.101385_b9","doi-asserted-by":"crossref","first-page":"665","DOI":"10.1109\/TSE.2003.1214329","article-title":"An empirical investigation of the influence of a type of side effects on program comprehension","volume":"29","author":"Dolado","year":"2003","journal-title":"IEEE Trans. Softw. Eng."},{"issue":"10","key":"10.1016\/j.cola.2026.101385_b10","doi-asserted-by":"crossref","first-page":"21","DOI":"10.1145\/2398857.2384619","article-title":"Uniqueness and reference immutability for safe parallelism","volume":"47","author":"Gordon","year":"2012","journal-title":"SIGPLAN Not."},{"issue":"1","key":"10.1016\/j.cola.2026.101385_b11","doi-asserted-by":"crossref","first-page":"64","DOI":"10.1145\/2844112","article-title":"Immutability changes everything","volume":"59","author":"Helland","year":"2016","journal-title":"Commun. ACM"},{"key":"10.1016\/j.cola.2026.101385_b12","doi-asserted-by":"crossref","unstructured":"J. Stylos, S. Clarke, Usability Implications of Requiring Paramters in Objects\u2019 Constructors, in: International Conference on Software Engineering, 2007.","DOI":"10.1109\/ICSE.2007.92"},{"key":"10.1016\/j.cola.2026.101385_b13","series-title":"ECOOP 2001 \u2014 Object-Oriented Programming","first-page":"2","article-title":"Capabilities for sharing","author":"Boyland","year":"2001"},{"key":"10.1016\/j.cola.2026.101385_b14","series-title":"6th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering","first-page":"75","article-title":"Object and reference immutability using Java generics","author":"Zibin","year":"2007"},{"issue":"6","key":"10.1016\/j.cola.2026.101385_b15","first-page":"555","article-title":"JAC\u2014Access right based encapsulation for java","volume":"31","author":"Kniesel","year":"2001","journal-title":"Softw.: Pr. Exp."},{"key":"10.1016\/j.cola.2026.101385_b16","series-title":"39th International Conference on Software Engineering","article-title":"Glacier: Transitive Class Immutability for Java","author":"Coblenz","year":"2017"},{"key":"10.1016\/j.cola.2026.101385_b17","series-title":"Proceedings of the 35th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages","first-page":"183","article-title":"Automatic inference of stationary fields: A generalization of Java\u2019s final fields","author":"Unkel","year":"2008"},{"issue":"1","key":"10.1016\/j.cola.2026.101385_b18","first-page":"91","article-title":"Techniques for automatic memoization with applications to context-free parsing","volume":"17","author":"Norvig","year":"1991","journal-title":"Comput. Linguist."},{"key":"10.1016\/j.cola.2026.101385_b19","doi-asserted-by":"crossref","first-page":"1811","DOI":"10.1145\/197320.197383","article-title":"A behavioral notion of subtyping","author":"Liskov","year":"1994","journal-title":"ACM Trans. Program. Lang. Syst."},{"key":"10.1016\/j.cola.2026.101385_b20","series-title":"Project Lombok","author":"Zwitserloot","year":"2009"},{"key":"10.1016\/j.cola.2026.101385_b21","doi-asserted-by":"crossref","unstructured":"G. Kiczales, J. Lamping, A. Mendhekar, C. Maeda, C.V. Lopes, J.M. Loingtier, J. Irwin, Aspect-oriented programming, in: Aspect-oriented programming. Proceedings of the European Conference on Object-Oriented Programming, 1997, pp. 220\u2013242.","DOI":"10.1007\/BFb0053381"},{"issue":"11","key":"10.1016\/j.cola.2026.101385_b22","doi-asserted-by":"crossref","first-page":"161","DOI":"10.1145\/583854.582436","article-title":"Design pattern implementation in Java and AspectJ","volume":"37","author":"Hannemann","year":"2002","journal-title":"ACM SIGPLAN Not."},{"key":"10.1016\/j.cola.2026.101385_b23","doi-asserted-by":"crossref","unstructured":"T. D\u00fcrschmid, Design Pattern Builder: A concept for refinable reusable design pattern libraries, in: Companion Proceedings of the 2016 ACM SIGPLAN International Conference on Systems, Programming, Languages and Applications: Software for Humanity, 2016, pp. 45\u201346.","DOI":"10.1145\/2984043.2998537"},{"key":"10.1016\/j.cola.2026.101385_b24","first-page":"1","article-title":"Implementing design patterns as parametric aspects using ParaAJ: The case of the singleton, observer, and decorator design patterns","volume":"45","author":"Aljasser","year":"2016","journal-title":"Comput. Lang. Syst. Struct."},{"issue":"12","key":"10.1016\/j.cola.2026.101385_b25","doi-asserted-by":"crossref","first-page":"1125","DOI":"10.1109\/TSE.2017.2655524","article-title":"On the positive effect of reactive programming on software comprehension: An empirical study","volume":"43","author":"Salvaneschi","year":"2017","journal-title":"IEEE Trans. Softw. Eng."},{"key":"10.1016\/j.cola.2026.101385_b26","doi-asserted-by":"crossref","DOI":"10.1016\/j.infsof.2023.107222","article-title":"A mapping study of language features improving object-oriented design patterns","volume":"160","author":"Flageol","year":"2023","journal-title":"Inf. Softw. Technol."},{"issue":"10","key":"10.1016\/j.cola.2026.101385_b27","doi-asserted-by":"crossref","first-page":"439","DOI":"10.1145\/1449955.1449799","article-title":"The visitor pattern as a reusable, generic, type-safe component","volume":"43","author":"Oliveira","year":"2008","journal-title":"ACM SIGPLAN Not."},{"key":"10.1016\/j.cola.2026.101385_b28","series-title":"Proceedings of the 2006 ACM SIGPLAN Workshop on Generic Programming - WGP \u201906","first-page":"1","article-title":"Design patterns as higher-order datatype-generic programs","author":"Gibbons","year":"2006"},{"key":"10.1016\/j.cola.2026.101385_b29","doi-asserted-by":"crossref","first-page":"2209","DOI":"10.1007\/s10664-019-09682-0","article-title":"Catalog of energy patterns for mobile applications","author":"Cruz","year":"2019","journal-title":"Empir. Softw. Eng. 24"},{"key":"10.1016\/j.cola.2026.101385_b30","doi-asserted-by":"crossref","unstructured":"P. Rani, J. Zellweger, V. Kousadianos, L. Cruz, T. Kehrer, A. Bacchelli, Energy Patterns for Web: An Exploratory Study, in: 2024 IEEE\/ACM 46th International Conference on Software Engineering: Software Engineering in Society (ICSE-SEIS), 2024, pp. 12\u201322.","DOI":"10.1145\/3639475.3640110"},{"key":"10.1016\/j.cola.2026.101385_b31","doi-asserted-by":"crossref","DOI":"10.1016\/j.jss.2024.112278","article-title":"Agent design pattern catalogue: A collection of architectural patterns for foundation model based agents","volume":"220","author":"Liu","year":"2025","journal-title":"J. Syst. Softw."}],"container-title":["Journal of Computer Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/api.elsevier.com\/content\/article\/PII:S2590118426000018?httpAccept=text\/xml","content-type":"text\/xml","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/api.elsevier.com\/content\/article\/PII:S2590118426000018?httpAccept=text\/plain","content-type":"text\/plain","content-version":"vor","intended-application":"text-mining"}],"deposited":{"date-parts":[[2026,2,12]],"date-time":"2026-02-12T22:00:16Z","timestamp":1770933616000},"score":1,"resource":{"primary":{"URL":"https:\/\/linkinghub.elsevier.com\/retrieve\/pii\/S2590118426000018"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2026,2]]},"references-count":31,"alternative-id":["S2590118426000018"],"URL":"https:\/\/doi.org\/10.1016\/j.cola.2026.101385","relation":{},"ISSN":["2590-1184"],"issn-type":[{"value":"2590-1184","type":"print"}],"subject":[],"published":{"date-parts":[[2026,2]]},"assertion":[{"value":"Elsevier","name":"publisher","label":"This article is maintained by"},{"value":"Design pattern for reusing immutable methods in object-oriented languages","name":"articletitle","label":"Article Title"},{"value":"Journal of Computer Languages","name":"journaltitle","label":"Journal Title"},{"value":"https:\/\/doi.org\/10.1016\/j.cola.2026.101385","name":"articlelink","label":"CrossRef DOI link to publisher maintained version"},{"value":"article","name":"content_type","label":"Content Type"},{"value":"\u00a9 2026 Elsevier Ltd. All rights are reserved, including those for text and data mining, AI training, and similar technologies.","name":"copyright","label":"Copyright"}],"article-number":"101385"}}