Data used in the study: https://drive.google.com/file/d/13ZXKbN9z2a_xINJ-CilnuKZ34ZqPDsGu/view?usp=sharing
ChangeMetricsMiner is responsible for assembling AST, comparing and generating code modifications between two versions of a file or commit.
CustomRefactoringMiner is responsible for detecting instances that refactoring has occurred using RefMiner. It will run ChangeMetricsMiner for each detected instance and filter/report code modifications based on the detected refactoring.
Configuration (Java openjdk 17.0.8.1 2023-08-24 LTS was used):
1- Clone the repository
git clone https://github.com/refstudy/RefactoringRelatedDetector.git)
2- Install the dependencies in both projects by running install in each root folder
mvn install
2.1- Opening both projects in the same IDE studio will cause changes to ChangeMetricsMiner to be detected by CustomRefactoringMiner without a new install being necessary.
3- Adjust the settings in the config.json file of the CustomRefactoringMiner project. It is necessary to define a temporary folder to keep the cloned projects and an output folder for the output. Finally, for each project, simply enter the .git url and the branch to be collected.
{
"tempFoldPath": ".\\projetos",
"outputFoldPath": ".\\data",
"repositories": [
{
"url": "https://github.com/jwtk/jjwt.git",
"mainBranch": "master",
},
]
}
4- Run the App.java in order to experiment the tool
Output example:
[
{
"commit": "0ae8d9f3b740dff1a82fb8e4d1d0afc8cff1c7a8",
"sourceElements": "[org.activiti.engine.FormService.addComment(String, String, String)]",
"targetElements": "[org.activiti.engine.TaskService.addComment(String, String, String)]",
"type": "MOVE_METHOD",
"related": [
{
"Metric": "ADDED_METHOD",
"Method": "org.activiti.engine.TaskService",
"Local": "L[268,269], C[3,75]",
"Detail": "org.activiti.engine.TaskService.addComment(String, String, String)",
"Code": "/** \n * Add a comment to a task and/or process instance. \n */\nvoid addComment(String taskId,String processInstanceId,String message);\n",
"relationType": "MENTIONED_DECLARATION",
"distance": 0
},
{
"Metric": "REMOVED_METHOD",
"Method": "org.activiti.engine.FormService",
"Local": "L[76,77], C[3,75]",
"Detail": "org.activiti.engine.FormService.addComment(String, String, String)",
"Code": "/** \n * Add a comment to a task and/or process instance. \n */\nvoid addComment(String taskId,String processInstanceId,String message);\n",
"relationType": "MENTIONED_DECLARATION",
"distance": 0
},
{
"Metric": "REMOVED_Javadoc",
"Method": "org.activiti.engine.FormService.addComment(String, String, String)",
"Local": "L[76,76], C[3,57]",
"Detail": null,
"Code": "/** \n * Add a comment to a task and/or process instance. \n */\n",
"relationType": "MENTIONED",
"distance": 0
},
{
"Metric": "REMOVED_TextElement",
"Method": "org.activiti.engine.FormService.addComment(String, String, String)",
"Local": "L[76,76], C[7,55]",
"Detail": null,
"Code": "Add a comment to a task and/or process instance. ",
"relationType": "MENTIONED",
"distance": 0
},
{
"Metric": "REMOVED_TagElement",
"Method": "org.activiti.engine.FormService.addComment(String, String, String)",
"Local": "L[76,76], C[7,55]",
"Detail": null,
"Code": "\n * Add a comment to a task and/or process instance. ",
"relationType": "MENTIONED",
"distance": 0
},
{
"Metric": "ADDED_Javadoc",
"Method": "org.activiti.engine.TaskService.addComment(String, String, String)",
"Local": "L[268,268], C[3,57]",
"Detail": null,
"Code": "/** \n * Add a comment to a task and/or process instance. \n */\n",
"relationType": "MENTIONED",
"distance": 0
},
{
"Metric": "ADDED_TextElement",
"Method": "org.activiti.engine.TaskService.addComment(String, String, String)",
"Local": "L[268,268], C[7,55]",
"Detail": null,
"Code": "Add a comment to a task and/or process instance. ",
"relationType": "MENTIONED",
"distance": 0
},
{
"Metric": "ADDED_TagElement",
"Method": "org.activiti.engine.TaskService.addComment(String, String, String)",
"Local": "L[268,268], C[7,55]",
"Detail": null,
"Code": "\n * Add a comment to a task and/or process instance. ",
"relationType": "MENTIONED",
"distance": 0
}
],
"notRelated": [
{
"Metric": "REMOVED_Javadoc",
"Method": "org.activiti.engine.FormService.getTaskComments(String)",
"Local": "L[79,79], C[3,48]",
"Detail": null,
"Code": "/** \n * The comments related to the given task. \n */\n",
"relationType": "NOT_RELATED",
"distance": 99
},
{
"Metric": "REMOVED_ParameterizedType",
"Method": "org.activiti.engine.FormService.getTaskComments(String)",
"Local": "L[80,80], C[3,15]",
"Detail": null,
"Code": "List<Comment>",
"relationType": "NOT_RELATED",
"distance": 99
},
{
"Metric": "REMOVED_ParameterizedType",
"Method": "org.activiti.engine.FormService.getProcessInstanceComments(String)",
"Local": "L[83,83], C[3,15]",
"Detail": null,
"Code": "List<Comment>",
"relationType": "NOT_RELATED",
"distance": 99
},
],
"metadata": {
"type": "Move Method",
"description": "Move Method public addComment(taskId String, processInstanceId String, message String) : void from class org.activiti.engine.FormService to public addComment(taskId String, processInstanceId String, message String) : void from class org.activiti.engine.TaskService",
"leftSideLocations": [
{
"filePath": "modules/activiti-engine/src/main/java/org/activiti/engine/FormService.java",
"startLine": 76,
"endLine": 77,
"startColumn": 3,
"endColumn": 76,
"codeElementType": "METHOD_DECLARATION",
"description": "original method declaration",
"codeElement": "public addComment(taskId String, processInstanceId String, message String) : void"
}
],
"rightSideLocations": [
{
"filePath": "modules/activiti-engine/src/main/java/org/activiti/engine/TaskService.java",
"startLine": 268,
"endLine": 269,
"startColumn": 3,
"endColumn": 76,
"codeElementType": "METHOD_DECLARATION",
"description": "moved method declaration",
"codeElement": "public addComment(taskId String, processInstanceId String, message String) : void"
}
]
}
}
]
- KunMinX-Jetpack-MVVM-Best-Practice (https://github.com/KunMinX/Jetpack-MVVM-Best-Practice.git)
- square-retrofit (https://github.com/square/retrofit.git)
- NationalSecurityAgency-ghidra (https://github.com/NationalSecurityAgency/ghidra.git)
- PhilJay-MPAndroidChart (https://github.com/PhilJay/MPAndroidChart.git)
- jeecgboot-jeecg-boot (https://github.com/jeecgboot/jeecg-boot.git)
- skylot-jadx (https://github.com/skylot/jadx.git)
- airbnb-lottie-android (https://github.com/airbnb/lottie-android.git)
- bumptech-glide (https://github.com/bumptech/glide.git)
- alibaba-arthas (https://github.com/alibaba/arthas.git)
- Blankj-AndroidUtilCode (https://github.com/Blankj/AndroidUtilCode.git)
- zxing-zxing (https://github.com/zxing/zxing.git)
- xkcoding-spring-boot-demo (https://github.com/xkcoding/spring-boot-demo.git)
- apolloconfig-apollo (https://github.com/apolloconfig/apollo.git)
- alibaba-easyexcel (https://github.com/alibaba/easyexcel.git)
- alibaba-canal (https://github.com/alibaba/canal.git)
- alibaba-spring-cloud-alibaba (https://github.com/alibaba/spring-cloud-alibaba.git)
- JakeWharton-butterknife (https://github.com/JakeWharton/butterknife.git)
- alibaba-fastjson (https://github.com/alibaba/fastjson.git)
- xuxueli-xxl-job (https://github.com/xuxueli/xxl-job.git)
- greenrobot-EventBus (https://github.com/greenrobot/EventBus.git)
- scwang90-SmartRefreshLayout (https://github.com/scwang90/SmartRefreshLayout.git)
- seata-seata (https://github.com/seata/seata.git)
- Netflix-Hystrix (https://github.com/Netflix/Hystrix.git)
- termux-termux-app (https://github.com/termux/termux-app.git)
- google-gson (https://github.com/google/gson.git)
- elunez-eladmin (https://github.com/elunez/eladmin.git)
- didi-DoKit (https://github.com/didi/DoKit.git)
- apache-rocketmq (https://github.com/apache/rocketmq.git)
- CarGuo-GSYVideoPlayer (https://github.com/CarGuo/GSYVideoPlayer.git)
- mybatis-mybatis-3 (https://github.com/mybatis/mybatis-3.git)
- brettwooldridge-HikariCP (https://github.com/brettwooldridge/HikariCP.git)
- facebook-fresco (https://github.com/facebook/fresco.git)
- Tencent-tinker (https://github.com/Tencent/tinker.git)
- YunaiV-ruoyi-vue-pro (https://github.com/YunaiV/ruoyi-vue-pro.git)
- shuzheng-zheng (https://github.com/shuzheng/zheng.git)
- iBotPeaches-Apktool (https://github.com/iBotPeaches/Apktool.git)
- openzipkin-zipkin (https://github.com/openzipkin/zipkin.git)
- LMAX-Exchange-disruptor (https://github.com/LMAX-Exchange/disruptor.git)
- Tencent-APIJSON (https://github.com/Tencent/APIJSON.git)
- williamfiset-Algorithms (https://github.com/williamfiset/Algorithms.git)
- justauth-JustAuth (https://github.com/justauth/JustAuth.git)
- Tencent-QMUI_Android (https://github.com/Tencent/QMUI_Android.git)
- heibaiying-BigData-Notes (https://github.com/heibaiying/BigData-Notes.git)
- Konloch-bytecode-viewer (https://github.com/Konloch/bytecode-viewer.git)
- ben-manes-caffeine (https://github.com/ben-manes/caffeine.git)
- Grasscutters-Grasscutter (https://github.com/Grasscutters/Grasscutter.git)
- deeplearning4j-deeplearning4j (https://github.com/deeplearning4j/deeplearning4j.git)
- GoogleContainerTools-jib (https://github.com/GoogleContainerTools/jib.git)
- Netflix-zuul (https://github.com/Netflix/zuul.git)
- dromara-Sa-Token (https://github.com/dromara/Sa-Token.git)
- LuckSiege-PictureSelector (https://github.com/LuckSiege/PictureSelector.git)
- YunaiV-yudao-cloud (https://github.com/YunaiV/yudao-cloud.git)
- macrozheng-mall-learning (https://github.com/macrozheng/mall-learning.git)
- projectlombok-lombok (https://github.com/projectlombok/lombok.git)
- google-guice (https://github.com/google/guice.git)
- kunal-kushwaha-DSA-Bootcamp-Java (https://github.com/kunal-kushwaha/DSA-Bootcamp-Java.git)
- Netflix-eureka (https://github.com/Netflix/eureka.git)
- codecentric-spring-boot-admin (https://github.com/codecentric/spring-boot-admin.git)
- pagehelper-Mybatis-PageHelper (https://github.com/pagehelper/Mybatis-PageHelper.git)
- apache-zookeeper (https://github.com/apache/zookeeper.git)
- redis-jedis (https://github.com/redis/jedis.git)
- barry-ran-QtScrcpy (https://github.com/barry-ran/QtScrcpy.git)
- pxb1988-dex2jar (https://github.com/pxb1988/dex2jar.git)
- gyoogle-tech-interview-for-developer (https://github.com/gyoogle/tech-interview-for-developer.git)
- code4craft-webmagic (https://github.com/code4craft/webmagic.git)
- mission-peace-interview (https://github.com/mission-peace/interview.git)
- android-async-http-android-async-http (https://github.com/android-async-http/android-async-http.git)
- LSPosed-LSPosed (https://github.com/LSPosed/LSPosed.git)
- square-javapoet (https://github.com/square/javapoet.git)
- JessYanCoding-MVPArms (https://github.com/JessYanCoding/MVPArms.git)
- jhy-jsoup (https://github.com/jhy/jsoup.git)
- google-auto (https://github.com/google/auto.git)
- clojure-clojure (https://github.com/clojure/clojure.git)
- TooTallNate-Java-WebSocket (https://github.com/TooTallNate/Java-WebSocket.git)
- Netflix-conductor (https://github.com/Netflix/conductor.git)
- Activiti-Activiti (https://github.com/Activiti/Activiti.git)
- asLody-VirtualApp (https://github.com/asLody/VirtualApp.git)
- Justson-AgentWeb (https://github.com/Justson/AgentWeb.git)
- OpenFeign-feign (https://github.com/OpenFeign/feign.git)
- resilience4j-resilience4j (https://github.com/resilience4j/resilience4j.git)
- junit-team-junit4 (https://github.com/junit-team/junit4.git)
- signalapp-Signal-Server (https://github.com/signalapp/Signal-Server.git)
- plantuml-plantuml (https://github.com/plantuml/plantuml.git)
- zhoutaoo-SpringCloud (https://github.com/zhoutaoo/SpringCloud.git)
- hs-web-hsweb-framework (https://github.com/hs-web/hsweb-framework.git)
- react-native-image-picker-react-native-image-picker (https://github.com/react-native-image-picker/react-native-image-picker.git)
- json-path-JsonPath (https://github.com/json-path/JsonPath.git)
- apache-shardingsphere-elasticjob (https://github.com/apache/shardingsphere-elasticjob.git)
- java-native-access-jna (https://github.com/java-native-access/jna.git)
- apache-shenyu (https://github.com/apache/shenyu.git)
- dropwizard-metrics (https://github.com/dropwizard/metrics.git)
- zfile-dev-zfile (https://github.com/zfile-dev/zfile.git)
- google-android-classyshark (https://github.com/google/android-classyshark.git)
- wildfirechat-im-server (https://github.com/wildfirechat/im-server.git)
- swagger-api-swagger-core (https://github.com/swagger-api/swagger-core.git)
- flyway-flyway (https://github.com/flyway/flyway.git)
- abel533-Mapper (https://github.com/abel533/Mapper.git)
- karatelabs-karate (https://github.com/karatelabs/karate.git)
- li-xiaojun-XPopup (https://github.com/li-xiaojun/XPopup.git)
- Tencent-Shadow (https://github.com/Tencent/Shadow.git)
- naman14-Timber (https://github.com/naman14/Timber.git)
- NanoHttpd-nanohttpd (https://github.com/NanoHttpd/nanohttpd.git)
- zo0r-react-native-push-notification (https://github.com/zo0r/react-native-push-notification.git)
- alibaba-transmittable-thread-local (https://github.com/alibaba/transmittable-thread-local.git)
- apache-storm (https://github.com/apache/storm.git)
- rest-assured-rest-assured (https://github.com/rest-assured/rest-assured.git)
- mrniko-netty-socketio (https://github.com/mrniko/netty-socketio.git)
- ArthurHub-Android-Image-Cropper (https://github.com/ArthurHub/Android-Image-Cropper.git)
- mapstruct-mapstruct (https://github.com/mapstruct/mapstruct.git)
- didi-KnowStreaming (https://github.com/didi/KnowStreaming.git)
- sshahine-JFoenix (https://github.com/sshahine/JFoenix.git)
- AsyncHttpClient-async-http-client (https://github.com/AsyncHttpClient/async-http-client.git)
- provectus-kafka-ui (https://github.com/provectus/kafka-ui.git)
- joelittlejohn-jsonschema2pojo (https://github.com/joelittlejohn/jsonschema2pojo.git)
- gzu-liyujiang-AndroidPicker (https://github.com/gzu-liyujiang/AndroidPicker.git)
- lightbend-config (https://github.com/lightbend/config.git)
- prolificinteractive-material-calendarview (https://github.com/prolificinteractive/material-calendarview.git)
- weibocom-motan (https://github.com/weibocom/motan.git)
- springfox-springfox (https://github.com/springfox/springfox.git)
- graphql-java-graphql-java (https://github.com/graphql-java/graphql-java.git)
- apache-seatunnel (https://github.com/apache/seatunnel.git)
- lets-blade-blade (https://github.com/lets-blade/blade.git)
- haifengl-smile (https://github.com/haifengl/smile.git)
- cabaletta-baritone (https://github.com/cabaletta/baritone.git)
- microg-GmsCore (https://github.com/microg/GmsCore.git)
- quartz-scheduler-quartz (https://github.com/quartz-scheduler/quartz.git)
- wiremock-wiremock (https://github.com/wiremock/wiremock.git)
- amitshekhariitbhu-Fast-Android-Networking (https://github.com/amitshekhariitbhu/Fast-Android-Networking.git)
- Vedenin-useful-java-links (https://github.com/Vedenin/useful-java-links.git)
- btraceio-btrace (https://github.com/btraceio/btrace.git)
- PowerJob-PowerJob (https://github.com/PowerJob/PowerJob.git)
- scribejava-scribejava (https://github.com/scribejava/scribejava.git)
- AriaLyy-Aria (https://github.com/AriaLyy/Aria.git)
- TommyLemon-Android-ZBLibrary (https://github.com/TommyLemon/Android-ZBLibrary.git)
- vavr-io-vavr (https://github.com/vavr-io/vavr.git)
- huanghongxun-HMCL (https://github.com/huanghongxun/HMCL.git)
- Genymobile-gnirehtet (https://github.com/Genymobile/gnirehtet.git)
- mybatis-generator (https://github.com/mybatis/generator.git)
- lettuce-io-lettuce-core (https://github.com/lettuce-io/lettuce-core.git)
- google-google-java-format (https://github.com/google/google-java-format.git)
- razerdp-BasePopup (https://github.com/razerdp/BasePopup.git)
- JodaOrg-joda-time (https://github.com/JodaOrg/joda-time.git)
- OpenTSDB-opentsdb (https://github.com/OpenTSDB/opentsdb.git)
- claritylab-lucida (https://github.com/claritylab/lucida.git)
- spring-projects-spring-data-examples (https://github.com/spring-projects/spring-data-examples.git)
- youlookwhat-CloudReader (https://github.com/youlookwhat/CloudReader.git)
- WeiYe-Jing-datax-web (https://github.com/WeiYe-Jing/datax-web.git)
- pig-mesh-pig (https://github.com/pig-mesh/pig.git)
- spring-cloud-spring-cloud-netflix (https://github.com/spring-cloud/spring-cloud-netflix.git)
- sofastack-sofa-boot (https://github.com/sofastack/sofa-boot.git)
- jankotek-mapdb (https://github.com/jankotek/mapdb.git)
- StarRocks-starrocks (https://github.com/StarRocks/starrocks.git)
- coobird-thumbnailator (https://github.com/coobird/thumbnailator.git)
- web3j-web3j (https://github.com/web3j/web3j.git)
- natario1-CameraView (https://github.com/natario1/CameraView.git)
- cglib-cglib (https://github.com/cglib/cglib.git)
- Doikki-DKVideoPlayer (https://github.com/Doikki/DKVideoPlayer.git)
- obsidiandynamics-kafdrop (https://github.com/obsidiandynamics/kafdrop.git)
- Javen205-IJPay (https://github.com/Javen205/IJPay.git)
- brianfrankcooper-YCSB (https://github.com/brianfrankcooper/YCSB.git)
- firebase-FirebaseUI-Android (https://github.com/firebase/FirebaseUI-Android.git)
- citerus-dddsample-core (https://github.com/citerus/dddsample-core.git)
- j-easy-easy-rules (https://github.com/j-easy/easy-rules.git)
- Netflix-ribbon (https://github.com/Netflix/ribbon.git)
- JSQLParser-JSqlParser (https://github.com/JSQLParser/JSqlParser.git)
- CellularPrivacy-Android-IMSI-Catcher-Detector (https://github.com/CellularPrivacy/Android-IMSI-Catcher-Detector.git)
- xuexiangjys-XUI (https://github.com/xuexiangjys/XUI.git)
- spring-projects-spring-authorization-server (https://github.com/spring-projects/spring-authorization-server.git)
- opengoofy-hippo4j (https://github.com/opengoofy/hippo4j.git)
- stleary-JSON-java (https://github.com/stleary/JSON-java.git)
- line-armeria (https://github.com/line/armeria.git)
- azkaban-azkaban (https://github.com/azkaban/azkaban.git)
- LWJGL-lwjgl3 (https://github.com/LWJGL/lwjgl3.git)
- chewiebug-GCViewer (https://github.com/chewiebug/GCViewer.git)
- codingapi-tx-lcn (https://github.com/codingapi/tx-lcn.git)
- dreamhead-moco (https://github.com/dreamhead/moco.git)
- DiUS-java-faker (https://github.com/DiUS/java-faker.git)
- bytedeco-javacpp (https://github.com/bytedeco/javacpp.git)
- zlt2000-microservices-platform (https://github.com/zlt2000/microservices-platform.git)
- jetlinks-jetlinks-community (https://github.com/jetlinks/jetlinks-community.git)
- apache-shiro (https://github.com/apache/shiro.git)
- Freeyourgadget-Gadgetbridge (https://github.com/Freeyourgadget/Gadgetbridge.git)
- spring-cloud-spring-cloud-gateway (https://github.com/spring-cloud/spring-cloud-gateway.git)
- ververica-flink-cdc-connectors (https://github.com/ververica/flink-cdc-connectors.git)
- powermock-powermock (https://github.com/powermock/powermock.git)
- eirslett-frontend-maven-plugin (https://github.com/eirslett/frontend-maven-plugin.git)
- killbill-killbill (https://github.com/killbill/killbill.git)
- dromara-hmily (https://github.com/dromara/hmily.git)
- GeyserMC-Geyser (https://github.com/GeyserMC/Geyser.git)
- oshi-oshi (https://github.com/oshi/oshi.git)
- alibaba-jetcache (https://github.com/alibaba/jetcache.git)
- mybatis-spring-boot-starter (https://github.com/mybatis/spring-boot-starter.git)
- jboss-javassist-javassist (https://github.com/jboss-javassist/javassist.git)
- apache-nifi (https://github.com/apache/nifi.git)
- rubenlagus-TelegramBots (https://github.com/rubenlagus/TelegramBots.git)
- discord-jda-JDA (https://github.com/discord-jda/JDA.git)
- rovo89-XposedInstaller (https://github.com/rovo89/XposedInstaller.git)
- osmandapp-OsmAnd (https://github.com/osmandapp/OsmAnd.git)
- zq2599-blog_demos (https://github.com/zq2599/blog_demos.git)
- sofastack-sofa-rpc (https://github.com/sofastack/sofa-rpc.git)
- nayuki-QR-Code-generator (https://github.com/nayuki/QR-Code-generator.git)
- killme2008-aviatorscript (https://github.com/killme2008/aviatorscript.git)
- zendesk-maxwell (https://github.com/zendesk/maxwell.git)
- jacoco-jacoco (https://github.com/jacoco/jacoco.git)
- apache-incubator-heron (https://github.com/apache/incubator-heron.git)
- ikarus23-MifareClassicTool (https://github.com/ikarus23/MifareClassicTool.git)
- davideas-FlexibleAdapter (https://github.com/davideas/FlexibleAdapter.git)
- lilishop-lilishop (https://github.com/lilishop/lilishop.git)
- DrKLO-Telegram (https://github.com/DrKLO/Telegram)
- bytedeco-javacv (https://github.com/bytedeco/javacv)
- CaffeineMC-sodium-fabric (https://github.com/CaffeineMC/sodium-fabric)
- alibaba-Sentinel (https://github.com/alibaba/Sentinel)
- dromara-lamp-cloud (https://github.com/dromara/lamp-cloud)
List of change models detected in the study
"ACCESS_INCREASED",
"ACCESS_REDUCED",
"ADDED_ANNOTATION",
"ADDED_ASSERTSTATEMENT",
"ADDED_BREAKSTATEMENT",
"ADDED_CATCH_CLAUSE",
"ADDED_CLASS",
"ADDED_CLASS_ANONYMOUS_DECLARATION",
"ADDED_CLASS_INSTANCE",
"ADDED_CONSTRUCTORINVOCATION",
"ADDED_CONTINUESTATEMENT",
"ADDED_DOSTATEMENT",
"ADDED_ELSE_STATEMENT",
"ADDED_ENHANCEDFORSTATEMENT",
"ADDED_ENUM",
"ADDED_EXCEPTION_THROWN",
"ADDED_EXPRESSIONSTATEMENT",
"ADDED_FORSTATEMENT",
"ADDED_HIERARCHY",
"ADDED_IF_STATEMENT",
"ADDED_IMPORT",
"ADDED_INTERFACE",
"ADDED_LABELEDSTATEMENT",
"ADDED_METHOD",
"ADDED_METHOD_CALL",
"ADDED_PARAMETER",
"ADDED_RECORD",
"ADDED_RETURN_VALUE",
"ADDED_SUPERCONSTRUCTORINVOCATION",
"ADDED_SWITCHCASE",
"ADDED_SWITCHSTATEMENT",
"ADDED_SYNCHRONIZEDSTATEMENT",
"ADDED_THROWSTATEMENT",
"ADDED_TRYSTATEMENT",
"ADDED_TRY_CATCH",
"ADDED_VARIABLE",
"ADDED_WHILESTATEMENT",
"ADDED_YIELDSTATEMENT",
"CATCH_CLAUSE_CHANGE",
"CATCH_HANDLING_CHANGE",
"CHANGED_ANONYMOUS_DECLARATION",
"CHANGED_ASSERTSTATEMENT",
"CHANGED_BREAKSTATEMENT",
"CHANGED_CLASS",
"CHANGED_CONSTRUCTORINVOCATION",
"CHANGED_CONTINUESTATEMENT",
"CHANGED_DOSTATEMENT",
"CHANGED_ELSE_CONDITION",
"CHANGED_ENHANCEDFORSTATEMENT",
"CHANGED_ENUM",
"CHANGED_EXISTING_ELSE_BLOCK",
"CHANGED_EXISTING_IF_BLOCK",
"CHANGED_EXPRESSIONSTATEMENT",
"CHANGED_FORSTATEMENT",
"CHANGED_HIERARCHY",
"CHANGED_IF_CONDITION",
"CHANGED_IMPORT",
"CHANGED_INTERFACE",
"CHANGED_LABELEDSTATEMENT",
"CHANGED_RECORD",
"CHANGED_RETURN_TYPE",
"CHANGED_RETURN_VALUE",
"CHANGED_SUPERCONSTRUCTORINVOCATION",
"CHANGED_SWITCHCASE",
"CHANGED_SWITCHSTATEMENT",
"CHANGED_SYNCHRONIZEDSTATEMENT",
"CHANGED_THROWSTATEMENT",
"CHANGED_TRYSTATEMENT",
"CHANGED_VARIABLE",
"CHANGED_VAR_VALUE",
"CHANGED_WHILESTATEMENT",
"CHANGED_YIELDSTATEMENT",
"CLASS_INSTANCE_ARGUMENTS_CHANGE",
"METHOD_CALL_ARGUMENTS_CHANGE",
"REMOVED_ANNOTATION",
"REMOVED_ASSERTSTATEMENT",
"REMOVED_BREAKSTATEMENT",
"REMOVED_CATCH_CLAUSE",
"REMOVED_CLASS",
"REMOVED_CLASS_ANONYMOUS_DECLARATION",
"REMOVED_CLASS_INSTANCE",
"REMOVED_CONSTRUCTORINVOCATION",
"REMOVED_CONTINUESTATEMENT",
"REMOVED_DOSTATEMENT",
"REMOVED_ELSE_STATEMENT",
"REMOVED_ENHANCEDFORSTATEMENT",
"REMOVED_ENUM",
"REMOVED_EXCEPTION_THROWN",
"REMOVED_EXPRESSIONSTATEMENT",
"REMOVED_FORSTATEMENT",
"REMOVED_HIERARCHY",
"REMOVED_IF_STATEMENT",
"REMOVED_IMPORT",
"REMOVED_INTERFACE",
"REMOVED_LABELEDSTATEMENT",
"REMOVED_METHOD",
"REMOVED_METHOD_CALL",
"REMOVED_PARAMETER",
"REMOVED_RECORD",
"REMOVED_RETURN_VALUE",
"REMOVED_SUPERCONSTRUCTORINVOCATION",
"REMOVED_SWITCHCASE",
"REMOVED_SWITCHSTATEMENT",
"REMOVED_SYNCHRONIZEDSTATEMENT",
"REMOVED_THROWSTATEMENT",
"REMOVED_TRYSTATEMENT",
"REMOVED_TRY_CATCH",
"REMOVED_VARIABLE",
"REMOVED_WHILESTATEMENT",
"REMOVED_YIELDSTATEMENT",
"RENAME_ELEMENT",
"TRY_CATCH_CHANGE",
"TURNED_INTO_CLASS",
"TURNED_INTO_INTERFACE",
"VAR_TYPE_CHANGED"
Based on AST
"ADDED_AnnotationTypeDeclaration",
"ADDED_AnnotationTypeMemberDeclaration",
"ADDED_AnonymousClassDeclaration",
"ADDED_ArrayAccess",
"ADDED_ArrayCreation",
"ADDED_ArrayInitializer",
"ADDED_ArrayType",
"ADDED_BooleanLiteral",
"ADDED_CastExpression",
"ADDED_CatchClause",
"ADDED_CharacterLiteral",
"ADDED_ClassInstanceCreation",
"ADDED_ConditionalExpression",
"ADDED_CreationReference",
"ADDED_Dimension",
"ADDED_EnumConstantDeclaration",
"ADDED_EnumDeclaration",
"ADDED_ExpressionMethodReference",
"ADDED_FieldAccess",
"ADDED_FieldDeclaration",
"ADDED_ImportDeclaration",
"ADDED_InfixExpression",
"ADDED_Initializer",
"ADDED_InstanceofExpression",
"ADDED_IntersectionType",
"ADDED_Javadoc",
"ADDED_LambdaExpression",
"ADDED_MarkerAnnotation",
"ADDED_MemberRef",
"ADDED_MemberValuePair",
"ADDED_MethodRef",
"ADDED_MethodRefParameter",
"ADDED_Modifier",
"ADDED_ModuleQualifiedName",
"ADDED_NameQualifiedType",
"ADDED_NormalAnnotation",
"ADDED_NullLiteral",
"ADDED_PackageDeclaration",
"ADDED_ParameterizedType",
"ADDED_ParenthesizedExpression",
"ADDED_PatternInstanceofExpression",
"ADDED_PostfixExpression",
"ADDED_PrefixExpression",
"ADDED_QualifiedType",
"ADDED_RecordDeclaration",
"ADDED_SingleMemberAnnotation",
"ADDED_SuperFieldAccess",
"ADDED_SuperMethodInvocation",
"ADDED_SuperMethodReference",
"ADDED_SwitchExpression",
"ADDED_TagElement",
"ADDED_TextBlock",
"ADDED_TextElement",
"ADDED_ThisExpression",
"ADDED_TypeDeclarationStatement",
"ADDED_TypeLiteral",
"ADDED_TypeMethodReference",
"ADDED_TypeParameter",
"ADDED_UnionType",
"ADDED_VariableDeclarationExpression",
"ADDED_WildcardType",
"CHANGED_AnnotationTypeDeclaration",
"CHANGED_AnnotationTypeMemberDeclaration",
"CHANGED_AnonymousClassDeclaration",
"CHANGED_ArrayAccess",
"CHANGED_ArrayCreation",
"CHANGED_ArrayInitializer",
"CHANGED_ArrayType",
"CHANGED_BooleanLiteral",
"CHANGED_CastExpression",
"CHANGED_CatchClause",
"CHANGED_CharacterLiteral",
"CHANGED_ClassInstanceCreation",
"CHANGED_ConditionalExpression",
"CHANGED_CreationReference",
"CHANGED_Dimension",
"CHANGED_EnumConstantDeclaration",
"CHANGED_EnumDeclaration",
"CHANGED_ExpressionMethodReference",
"CHANGED_FieldAccess",
"CHANGED_FieldDeclaration",
"CHANGED_ImportDeclaration",
"CHANGED_InfixExpression",
"CHANGED_Initializer",
"CHANGED_InstanceofExpression",
"CHANGED_Javadoc",
"CHANGED_LambdaExpression",
"CHANGED_MarkerAnnotation",
"CHANGED_MemberRef",
"CHANGED_MemberValuePair",
"CHANGED_MethodRef",
"CHANGED_MethodRefParameter",
"CHANGED_Modifier",
"CHANGED_NormalAnnotation",
"CHANGED_PackageDeclaration",
"CHANGED_ParameterizedType",
"CHANGED_ParenthesizedExpression",
"CHANGED_PatternInstanceofExpression",
"CHANGED_PostfixExpression",
"CHANGED_PrefixExpression",
"CHANGED_QualifiedType",
"CHANGED_RecordDeclaration",
"CHANGED_SingleMemberAnnotation",
"CHANGED_SuperFieldAccess",
"CHANGED_SuperMethodInvocation",
"CHANGED_SwitchExpression",
"CHANGED_TagElement",
"CHANGED_TextBlock",
"CHANGED_TextElement",
"CHANGED_ThisExpression",
"CHANGED_TypeLiteral",
"CHANGED_TypeParameter",
"CHANGED_UnionType",
"CHANGED_VariableDeclarationExpression",
"CHANGED_WildcardType",
"REMOVED_AnnotationTypeDeclaration",
"REMOVED_AnnotationTypeMemberDeclaration",
"REMOVED_AnonymousClassDeclaration",
"REMOVED_ArrayAccess",
"REMOVED_ArrayCreation",
"REMOVED_ArrayInitializer",
"REMOVED_ArrayType",
"REMOVED_BooleanLiteral",
"REMOVED_CastExpression",
"REMOVED_CatchClause",
"REMOVED_CharacterLiteral",
"REMOVED_ClassInstanceCreation",
"REMOVED_ConditionalExpression",
"REMOVED_CreationReference",
"REMOVED_Dimension",
"REMOVED_EnumConstantDeclaration",
"REMOVED_EnumDeclaration",
"REMOVED_ExpressionMethodReference",
"REMOVED_FieldAccess",
"REMOVED_FieldDeclaration",
"REMOVED_ImportDeclaration",
"REMOVED_InfixExpression",
"REMOVED_Initializer",
"REMOVED_InstanceofExpression",
"REMOVED_IntersectionType",
"REMOVED_Javadoc",
"REMOVED_LambdaExpression",
"REMOVED_MarkerAnnotation",
"REMOVED_MemberRef",
"REMOVED_MemberValuePair",
"REMOVED_MethodRef",
"REMOVED_MethodRefParameter",
"REMOVED_Modifier",
"REMOVED_NameQualifiedType",
"REMOVED_NormalAnnotation",
"REMOVED_NullLiteral",
"REMOVED_PackageDeclaration",
"REMOVED_ParameterizedType",
"REMOVED_ParenthesizedExpression",
"REMOVED_PatternInstanceofExpression",
"REMOVED_PostfixExpression",
"REMOVED_PrefixExpression",
"REMOVED_QualifiedType",
"REMOVED_RecordDeclaration",
"REMOVED_SingleMemberAnnotation",
"REMOVED_SuperFieldAccess",
"REMOVED_SuperMethodInvocation",
"REMOVED_SuperMethodReference",
"REMOVED_SwitchExpression",
"REMOVED_TagElement",
"REMOVED_TextBlock",
"REMOVED_TextElement",
"REMOVED_ThisExpression",
"REMOVED_TypeDeclarationStatement",
"REMOVED_TypeLiteral",
"REMOVED_TypeMethodReference",
"REMOVED_TypeParameter",
"REMOVED_UnionType",
"REMOVED_VariableDeclarationExpression",
"REMOVED_WildcardType
Includes all other AST nodes as well;