[15] M. Sch
¨
afer, A. Thies, F. Steimann, and F. Tip, “A comprehensive
approach to naming and accessibility in refactoring Java programs,”
IEEE Transactions on Software Engineering, vol. 38, no. 6, pp. 1233–
1257, Nov. 2012.
[16] D. Steinh
¨
ofel and R. H
¨
ahnle, “Abstract execution,” 23rd International
Symposium on Formal Methods, 2019.
[17] J. Wloka, M. Sridharan, and F. Tip, “Refactoring for reentrancy,” Pro-
ceedings of the 7th joint meeting of the European software engineering
conference and the ACM SIGSOFT symposium on the Foundations of
Software Engineering, pp. 173–182, 2009.
[18] M. Sch
¨
afer, M. Sridharan, J. Dolby, and F. Tip, “Refactoring Java
programs for flexible locking,” in 2011 33rd International Conference
on Software Engineering, May 2011, pp. 71–80.
[19] N. Tsantalis, D. Mazinanian, and S. Rostami, “Clone refactoring with
lambda expressions,” in Proceedings of the 39th International Confer-
ence on Software Engineering, 2017, pp. 60–70.
[20] R. Khatchadourian and H. Masuhara, “Automated refactoring of legacy
java software to default methods,” in Proceedings of the 39th Interna-
tional Conference on Software Engineering, 2017, pp. 82–93.
[21] D. E. Khelladi, R. Bendraou, and M.-P. Gervais, “AD-ROOM: A tool for
automatic detection of refactorings in object-oriented models,” in Pro-
ceedings of the 38th International Conference on Software Engineering
Companion, 2016, pp. 617–620.
[22] D. Mazinanian, N. Tsantalis, R. Stein, and Z. Valenta, “JDeodorant:
Clone refactoring,” 2016 IEEE/ACM 38th International Conference on
Software Engineering Companion (ICSE-C), pp. 613–616, May 2016.
[23] J. Kim, D. Batory, D. Dig, and M. Azanza, “Improving refactoring
speed by 10x,” in Proceedings of the 38th International Conference
on Software Engineering, 2016, pp. 1145–1156.
[24] Y. Lin, S. Okur, and D. Dig, “Study and refactoring of android
asynchronous programming,” 2015 30th IEEE/ACM International Con-
ference on Automated Software Engineering (ASE), pp. 224–235, 2015.
[25] E. Brodu, S. Fr
´
enot, and F. Obl
´
e, “Toward automatic update from
callbacks to promises,” in Proceedings of the 1st Workshop on All-Web
Real-Time Systems, 2015, pp. 1:1–1:8.
[26] Juneiform. [Online]. Available: https://bitbucket.org/Stepuk/juneiform
[27] B. Liskov and L. Shrira, “Promises: Linguistic support for efficient
asynchronous procedure calls in distributed systems,” in Proceedings of
the ACM SIGPLAN 1988 Conference on Programming Language Design
and Implementation, 1988, pp. 260–267.
[28] Elasticsearch: Open Source Search & Analytics. [Online]. Available:
https://www.elastic.co/
[29] W. F. Opdyke, “Refactoring object-oriented frameworks,” Ph.D. disser-
tation, University of Illinois at Urbana-Champaign, 1992.
[30] Y. Lin and D. Dig, “Refactorings for Android asynchronous program-
ming,” in 2015 30th IEEE/ACM International Conference on Automated
Software Engineering, 2015, pp. 836–841.
[31] E. Nilsson-Nyman, G. Hedin, E. Magnusson, and T. Ekman, “Declara-
tive intraprocedural flow analysis of Java source code,” Proceedings of
the 8th Workshop on Language Descriptions, Tools and Applications,
vol. 238, pp. 155–171, 2009.
[32] Spring. [Online]. Available: https://spring.io/
[33] R. Dyer, H. A. Nguyen, H. Rajan, and T. N. Nguyen, “Boa: A language
and infrastructure for analyzing ultra-large-scale software repositories,”
2013 35th International Conference on Software Engineering, pp. 422–
431, 2013.
[34] Apache Maven Project. [Online]. Available: https://maven.apache.org
[35] Apache Ant Project. [Online]. Available: https://ant.apache.org
[36] O. Jarczyk, B. Gruszka, S. Jaroszewicz, L. Bukowski, and A. Wierzbicki,
“Github projects. quality analysis of open-source software,” in Social
Informatics: 6th International Conference, 2014, pp. 80–94.
[37] C. Pacheco, S. K. Lahiri, M. D. Ernst, and T. Ball, “Feedback-directed
random test generation,” 29th International Conference on Software
Engineering, pp. 75–84, 2007.
[38] G. Soares, R. Gheyi, and T. Massoni, “Automated behavioral testing
of refactoring engines,” IEEE Transactions on Software Engineering,
vol. 39, no. 2, pp. 147–162, Feb. 2013.
[39] CLOC. [Online]. Available: https://github.com/AlDanial/cloc
[40] J. Siegmund, N. Siegmund, and S. Apel, “Views on internal and external
validity in empirical software engineering,” in 2015 IEEE/ACM 37th
IEEE International Conference on Software Engineering, vol. 1, May
2015, pp. 9–19.
[41] F. Steimann, “Constraint-based refactoring,” ACM Transactions on Pro-
gramming Languages and Systems, vol. 40, pp. 2:1–2:40, Jan. 2018.
[42] C. Elliott and P. Hudak, “Functional reactive animation,” in Proceedings
of the Second ACM SIGPLAN International Conference on Functional
Programming, 1997, pp. 263–273.
[43] Bacon.js. [Online]. Available: https://baconjs.github.io
[44] G. Salvaneschi, G. Hintz, and M. Mezini, “REScala: Bridging between
object-oriented and functional style in reactive applications,” Proceed-
ings of the 13th international conference on Modularity, pp. 25–36,
2014.
[45] I. Maier and M. Odersky, “Higher-order reactive programming with
incremental lists,” in European Conference on Object-oriented Program-
ming, 2013, pp. 707–731.
[46] A. Margara and G. Salvaneschi, “On the semantics of distributed reactive
programming: The cost of consistency,” IEEE Transactions on Software
Engineering, vol. 44, no. 7, pp. 689–711, Jul. 2018.
[47] H. Banken, E. Meijer, and G. Gousios, “Debugging data flows in reactive
programs,” in Proceedings of the 40th International Conference on
Software Engineering, 2018, pp. 752–763.
[48] G. Salvaneschi and M. Mezini, “Debugging for reactive programming,”
in Proceedings of the 38th International Conference on Software Engi-
neering, 2016, pp. 796–807.
[49] M. Fowler, K. Beck, J. Brant, W. Opdyke, and D. Roberts, Refactoring:
Improving the Design of Existing Code. Addison-Wesley Longman
Publishing Co. Inc., 1999.
[50] R. Kolb, D. Muthig, T. Patzke, and K. Yamauchi, “Refactoring a legacy
component for reuse in a software product line: a case study,” Journal of
Software Maintenance and Evolution: Research and Practice, vol. 18,
no. 2, pp. 109–132, Mar. 2006.
[51] R. Moser, A. Sillitti, P. Abrahamsson, and G. Succi, “Does refactoring
improve reusability?” in International Conference on Software Reuse,
2006, pp. 287–297.
[52] E. Murphy-Hill, “Programmer friendly refactoring tools,” Ph.D. disser-
tation, Portland State University, 2009.
[53] V. Raychev, M. Sch
¨
afer, M. Sridharan, and M. Vechev, “Refactoring with
synthesis,” in Proceedings of the 2013 ACM SIGPLAN International
Conference on Object Oriented Programming Systems Languages &
Applications, 2013, pp. 339–354.
[54] M. Sch
¨
afer, J. Dolby, M. Sridharan, E. Torlak, and F. Tip, “Correct
refactoring of concurrent Java code,” in European Conference on Object-
Oriented Programming, 2010, pp. 225–249.
[55] J. Liebig, A. Janker, F. Garbe, S. Apel, and C. Lengauer, “Morpheus:
Variability-aware refactoring in the wild,” in Proceedings of the 37th
International Conference on Software Engineering, 2015, pp. 380–391.
[56] N. Meng, L. Hua, M. Kim, and K. S. McKinley, “Does automated
refactoring obviate systematic editing?” in Proceedings of the 37th
International Conference on Software Engineering, 2015, pp. 392–402.
[57] J. Kim, D. Batory, and D. Dig, “Scripting parametric refactorings in
Java to retrofit design patterns,” in Proceedings of the 2015 IEEE
International Conference on Software Maintenance and Evolution, 2015,
pp. 211–220.
[58] S. Alimadadi, D. Zhong, M. Madsen, and F. Tip, “Finding broken
promises in asynchronous javascript programs,” Proc. ACM Program.
Lang., vol. 2, no. OOPSLA, pp. 162:1–162:26, Oct. 2018. [Online].
Available: http://doi.acm.org/10.1145/3276532
[59] M. Ogden. Callback hell. [Online]. Available: http://callbackhell.com