{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,2,5]],"date-time":"2026-02-05T08:48:38Z","timestamp":1770281318693,"version":"3.49.0"},"publisher-location":"Berlin, Heidelberg","reference-count":28,"publisher":"Springer Berlin Heidelberg","isbn-type":[{"value":"9783642226540","type":"print"},{"value":"9783642226557","type":"electronic"}],"license":[{"start":{"date-parts":[[2011,1,1]],"date-time":"2011-01-01T00:00:00Z","timestamp":1293840000000},"content-version":"unspecified","delay-in-days":0,"URL":"http:\/\/www.springer.com\/tdm"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2011]]},"DOI":"10.1007\/978-3-642-22655-7_2","type":"book-chapter","created":{"date-parts":[[2011,7,18]],"date-time":"2011-07-18T13:37:43Z","timestamp":1310996263000},"page":"2-26","source":"Crossref","is-referenced-by-count":24,"title":["An Empirical Study of Object Protocols in the Wild"],"prefix":"10.1007","author":[{"given":"Nels E.","family":"Beckman","sequence":"first","affiliation":[]},{"given":"Duri","family":"Kim","sequence":"additional","affiliation":[]},{"given":"Jonathan","family":"Aldrich","sequence":"additional","affiliation":[]}],"member":"297","reference":[{"key":"2_CR1","first-page":"25","volume-title":"ESEC-FSE 2007","author":"M. Acharya","year":"2007","unstructured":"Acharya, M., Xie, T., Pei, J., Xu, J.: Mining API patterns as partial orders from source code: from usage scenarios to specifications. In: ESEC-FSE 2007, pp. 25\u201334. ACM Press, New York (2007)"},{"key":"2_CR2","first-page":"98","volume-title":"POPL 2005","author":"R. Alur","year":"2005","unstructured":"Alur, R., \u010cern\u00fd, P., Madhusudan, P., Nam, W.: Synthesis of interface specifications for java classes. In: POPL 2005, pp. 98\u2013109. ACM Press, New York (2005)"},{"key":"2_CR3","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"103","DOI":"10.1007\/3-540-45139-0_7","volume-title":"Model Checking Software","author":"T. Ball","year":"2001","unstructured":"Ball, T., Rajamani, S.K.: Automatically validating temporal safety properties of interfaces. In: Dwyer, M.B. (ed.) SPIN 2001. LNCS, vol.\u00a02057, pp. 103\u2013122. Springer, Heidelberg (2001)"},{"key":"2_CR4","volume-title":"OOPSLA 2008","author":"N.E. Beckman","year":"2008","unstructured":"Beckman, N.E., Bierhoff, K., Aldrich, J.: Verifying correct usage of atomic blocks and typestate. In: OOPSLA 2008. ACM Press, New York (2008)"},{"key":"2_CR5","first-page":"301","volume-title":"OOPSLA 2007","author":"K. Bierhoff","year":"2007","unstructured":"Bierhoff, K., Aldrich, J.: Modular typestate checking of aliased objects. In: OOPSLA 2007, pp. 301\u2013320. ACM Press, New York (2007)"},{"key":"2_CR6","doi-asserted-by":"crossref","unstructured":"Bierhoff, K., Aldrich, J.: Lightweight object specification with typestates. In: ESEC-FSE 2005, pp. 217\u2013226 (September 2005)","DOI":"10.1145\/1081706.1081741"},{"key":"2_CR7","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"195","DOI":"10.1007\/978-3-642-03013-0_10","volume-title":"ECOOP 2009 \u2013 Object-Oriented Programming","author":"K. Bierhoff","year":"2009","unstructured":"Bierhoff, K., Beckman, N.E., Aldrich, J.: Practical API protocol checking with access permissions. In: Drossopoulou, S. (ed.) ECOOP 2009. LNCS, vol.\u00a05653, pp. 195\u2013219. Springer, Heidelberg (2009)"},{"issue":"5","key":"2_CR8","doi-asserted-by":"publisher","first-page":"59","DOI":"10.1145\/381694.378811","volume":"36","author":"R. DeLine","year":"2001","unstructured":"DeLine, R., F\u00e4hndrich, M.: Enforcing high-level protocols in low-level software. SIGPLAN Not.\u00a036(5), 59\u201369 (2001)","journal-title":"SIGPLAN Not."},{"key":"2_CR9","first-page":"281","volume-title":"POPL 2004","author":"J. Dunfield","year":"2004","unstructured":"Dunfield, J., Pfenning, F.: Tridirectional typechecking. In: POPL 2004, pp. 281\u2013292. ACM Press, New York (2004)"},{"key":"2_CR10","first-page":"337","volume-title":"OOPSLA 2007","author":"M. Fahndrich","year":"2007","unstructured":"Fahndrich, M., Xia, S.: Establishing object invariants with delayed types. In: OOPSLA 2007, pp. 337\u2013350. ACM Press, New York (2007)"},{"key":"2_CR11","first-page":"75","volume-title":"OOPSLA 2006","author":"G. Fairbanks","year":"2006","unstructured":"Fairbanks, G., Garlan, D., Scherlis, W.: Design fragments make using frameworks easier. In: OOPSLA 2006, pp. 75\u201388. ACM Press, New York (2006)"},{"issue":"2","key":"2_CR12","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1145\/1348250.1348255","volume":"17","author":"S.J. Fink","year":"2008","unstructured":"Fink, S.J., Yahav, E., Dor, N., Ramalingam, G., Geay, E.: Effective typestate verification in the presence of aliasing. ACM Trans. Softw. Eng. Methodol.\u00a017(2), 1\u201334 (2008)","journal-title":"ACM Trans. Softw. Eng. Methodol."},{"issue":"6","key":"2_CR13","doi-asserted-by":"publisher","first-page":"1035","DOI":"10.1145\/1186632.1186635","volume":"28","author":"J.S. Foster","year":"2006","unstructured":"Foster, J.S., Johnson, R., Kodumal, J., Aiken, A.: Flow-insensitive type qualifiers. ACM Trans. Program. Lang. Syst.\u00a028(6), 1035\u20131087 (2006)","journal-title":"ACM Trans. Program. Lang. Syst."},{"key":"2_CR14","first-page":"245","volume-title":"OOPSLA 2008","author":"M. Gopinathan","year":"2008","unstructured":"Gopinathan, M., Rajamani, S.K.: Enforcing object protocols by combining static and runtime analysis. In: OOPSLA 2008, pp. 245\u2013260. ACM Press, New York (2008)"},{"key":"2_CR15","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"344","DOI":"10.1007\/978-3-642-03013-0_16","volume-title":"ECOOP 2009 \u2013 Object-Oriented Programming","author":"A. Heydarnoori","year":"2009","unstructured":"Heydarnoori, A., Czarnecki, K., Bartolomei, T.T.: Supporting framework use via automatically extracted concept-implementation templates. In: Drossopoulou, S. (ed.) ECOOP 2009. LNCS, vol.\u00a05653, pp. 344\u2013368. Springer, Heidelberg (2009)"},{"key":"2_CR16","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"27","DOI":"10.1007\/978-3-642-03013-0_3","volume-title":"ECOOP 2009 \u2013 Object-Oriented Programming","author":"C. Jaspan","year":"2009","unstructured":"Jaspan, C., Aldrich, J.: Checking framework interactions with relationships. In: Drossopoulou, S. (ed.) ECOOP 2009. LNCS, vol.\u00a05653, pp. 27\u201351. Springer, Heidelberg (2009)"},{"key":"2_CR17","doi-asserted-by":"crossref","unstructured":"Joshi, P., Sen, K.: Predictive typestate checking of multithreaded Java programs. In: ASE 2008, pp. 288\u2013296 (September 2008)","DOI":"10.1109\/ASE.2008.39"},{"key":"2_CR18","unstructured":"Kim, D.: An empirical study on the frequency and classification of object protocols in Java. Master\u2019s thesis, Korea Advanced Institute of Science and Technology (2010)"},{"issue":"3","key":"2_CR19","doi-asserted-by":"publisher","first-page":"46","DOI":"10.1145\/981009.981016","volume":"39","author":"P. Lam","year":"2004","unstructured":"Lam, P., Kuncak, V., Rinard, M.: Generalized typestate checking using set interfaces and pluggable analyses. SIGPLAN Not.\u00a039(3), 46\u201355 (2004)","journal-title":"SIGPLAN Not."},{"key":"2_CR20","first-page":"347","volume-title":"OOPSLA 2008","author":"N.A. Naeem","year":"2008","unstructured":"Naeem, N.A., Lhotak, O.: Typestate-like analysis of multiple interacting objects. In: OOPSLA 2008, pp. 347\u2013366. ACM Press, New York (2008)"},{"key":"2_CR21","doi-asserted-by":"crossref","unstructured":"Pradel, M., Bichsel, P., Gross, T.R.: A framework for the evaluation of specification miners based on finite state machines. In: ICSM (2010)","DOI":"10.1109\/ICSM.2010.5609576"},{"key":"2_CR22","first-page":"53","volume-title":"POPL 2009","author":"X. Qi","year":"2009","unstructured":"Qi, X., Myers, A.C.: Masked types for sound object initialization. In: POPL 2009, pp. 53\u201365. ACM Press, New York (2009)"},{"issue":"1","key":"2_CR23","doi-asserted-by":"publisher","first-page":"157","DOI":"10.1109\/TSE.1986.6312929","volume":"12","author":"R.E. Strom","year":"1986","unstructured":"Strom, R.E., Yemini, S.: Typestate: A programming language concept for enhancing software reliability. IEEE Trans. Softw. Eng.\u00a012(1), 157\u2013171 (1986)","journal-title":"IEEE Trans. Softw. Eng."},{"key":"2_CR24","doi-asserted-by":"crossref","unstructured":"Tempero, E., Anslow, C., Dietrich, J., Han, T., Li, J., Lumpe, M., Melton, H., Noble, J.: Qualitas corpus: A curated collection of Java code for empirical studies. In: 2010 Asia Pacific Software Engineering Conference (APSEC 2010) (December 2010) Corpus version 20090202r","DOI":"10.1109\/APSEC.2010.46"},{"key":"2_CR25","first-page":"35","volume-title":"ESEC-FSE 2007","author":"A. Wasylkowski","year":"2007","unstructured":"Wasylkowski, A., Zeller, A., Lindig, C.: Detecting object usage anomalies. In: ESEC-FSE 2007, pp. 35\u201344. ACM Press, New York (2007)"},{"issue":"10","key":"2_CR26","doi-asserted-by":"publisher","first-page":"419","DOI":"10.1145\/1035292.1029011","volume":"39","author":"W. Weimer","year":"2004","unstructured":"Weimer, W., Necula, G.C.: Finding and preventing run-time error handling mistakes. SIGPLAN Not.\u00a039(10), 419\u2013431 (2004)","journal-title":"SIGPLAN Not."},{"key":"2_CR27","first-page":"218","volume-title":"ISSTA 2002","author":"J. Whaley","year":"2002","unstructured":"Whaley, J., Martin, M.C., Lam, M.S.: Automatic extraction of object-oriented component interfaces. In: ISSTA 2002, pp. 218\u2013228. ACM Press, New York (2002)"},{"key":"2_CR28","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"318","DOI":"10.1007\/978-3-642-03013-0_15","volume-title":"ECOOP 2009 \u2013 Object-Oriented Programming","author":"H. Zhong","year":"2009","unstructured":"Zhong, H., Xie, T., Zhang, L., Pei, J., Mei, H.: MAPO: Mining and recommending API usage patterns. In: Drossopoulou, S. (ed.) ECOOP 2009. LNCS, vol.\u00a05653, pp. 318\u2013343. Springer, Heidelberg (2009)"}],"container-title":["Lecture Notes in Computer Science","ECOOP 2011 \u2013 Object-Oriented Programming"],"original-title":[],"link":[{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-642-22655-7_2","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2019,3,30]],"date-time":"2019-03-30T03:19:42Z","timestamp":1553915982000},"score":1,"resource":{"primary":{"URL":"http:\/\/link.springer.com\/10.1007\/978-3-642-22655-7_2"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2011]]},"ISBN":["9783642226540","9783642226557"],"references-count":28,"URL":"https:\/\/doi.org\/10.1007\/978-3-642-22655-7_2","relation":{},"ISSN":["0302-9743","1611-3349"],"issn-type":[{"value":"0302-9743","type":"print"},{"value":"1611-3349","type":"electronic"}],"subject":[],"published":{"date-parts":[[2011]]}}}