digraph java { //rankdir="LR"; //splines="false"; //cluster=true; ranksep="0.75 equally" //node [ ordering="in" ]; node [ shape="rect" style="rounded" color="blue" ]; { rank="same"; lib_java_sources [ label="library\njava sources" group="lib" ]; lib_kotlin_sources [ label="library\nkotlin sources" group="lib" ]; lib2_java_sources [ label="library\njava sources" group="lib2" ]; lib2_kotlin_sources [ label="library\nkotlin sources" group="lib2" ]; app_java_sources [ label="app\njava sources" group="app" ]; app_kotlin_sources [ label="app\nkotlin sources" group="app" ]; } node [ group="lib"]; { rank="same"; lib_kotlin_stubs [ label="library\nkotlin stubs" ]; } { rank="same"; lib_apt_src_jar [ label="library annotation\nprocessor sources" ]; } { rank="same"; lib_kotlin_classes [ label="library kotlin\n.class files" ]; lib_kotlin_headers [ label="library kotlin\nheader .class files" ]; } { rank="same"; lib_java_classes [ label="library java\n.class files" ]; lib_java_headers [ label="library java\nheader .class files" ]; } { rank="same"; lib_combined_classes [ label="combined library\n.class files" ]; lib_combined_headers [ label="combined library\nheader .class files" ]; } node [ group="lib2"]; { rank="same"; lib_spacer [ style=invis width=4 ]; lib2_kotlin_stubs [ label="library\nkotlin stubs" ]; } { rank="same"; lib2_apt_src_jar [ label="library annotation\nprocessor sources" ]; } { rank="same"; lib2_kotlin_classes [ label="library kotlin\n.class files" ]; lib2_kotlin_headers [ label="library kotlin\nheader .class files" ]; } { rank="same"; lib2_java_classes [ label="library java\n.class files" ]; lib2_java_headers [ label="library java\nheader .class files" ]; } { rank="same"; lib2_combined_classes [ label="combined library\n.class files" ]; lib2_combined_headers [ label="combined library\nheader .class files" ]; } node [ group="app"]; { rank="same"; lib2_spacer [ style=invis width=4 ]; app_kotlin_stubs [ label="app\nkotlin stubs" ]; } { rank="same"; app_apt_src_jar [ label="app annotation\nprocessor sources" ]; } { rank="same"; app_kotlin_classes [ label="app kotlin\n.class files" ]; app_kotlin_headers [ label="app kotlin\nheader .class files" ] } { rank="same"; app_java_classes [ label="app java\n.class files" ]; } { rank="same"; app_combined_classes [ label="combined app and library\n.class files" ]; } { rank="same"; app_dex [ label="app classes.dex files" ]; } node [ shape="rect" style="" color="black" ]; node [ group="lib"]; { rank="same"; lib_kapt_action [ label="kapt" ]; } { rank="same"; lib_turbine_apt_action [ label="turbine apt" ]; } { rank="same"; lib_kotlinc_action [ label="kotlinc" ]; } { rank="same"; lib_turbine_action [ label="turbine" ]; lib_javac_action [ label="javac" ]; } { rank="same"; lib_combine_action [ label="merge_zips" ]; lib_combine_headers_action [ label="merge_zips" ]; } node [ group="lib2"]; { rank="same"; lib2_kapt_action [ label="kapt" ]; } { rank="same"; lib2_turbine_apt_action [ label="turbine apt" ]; } { rank="same"; lib2_kotlinc_action [ label="kotlinc" ]; } { rank="same"; lib2_turbine_action [ label="turbine" ]; lib2_javac_action [ label="javac" ]; } { rank="same"; lib2_combine_action [ label="merge_zips" ]; lib2_combine_headers_action [ label="merge_zips" ]; } node [ group="app"]; { rank="same"; app_kapt_action [ label="kapt" ]; } { rank="same"; app_turbine_apt_action [ label="turbine apt" ]; } { rank="same"; app_kotlinc_action [ label="kotlinc" ]; } { rank="same"; app_javac_action [ label="javac" ]; } { rank="same"; app_combine_action [ label="merge_zips" ]; } { rank="same"; app_r8_action [ label="r8" ]; } // library lib_kotlin_sources -> lib_kapt_action [ weight=0 ]; lib_java_sources -> lib_kapt_action; lib_kapt_action -> lib_kotlin_stubs [ weight=100 ]; lib_kotlin_stubs -> lib_turbine_apt_action [ weight=100 ]; lib_turbine_apt_action -> lib_apt_src_jar [ weight=100 ]; lib_apt_src_jar -> lib_kotlinc_action [ weight=0 ]; lib_kotlin_sources -> lib_kotlinc_action [ weight=100 ]; lib_java_sources -> lib_kotlinc_action; lib_kotlinc_action -> lib_kotlin_classes, lib_kotlin_headers [ weight=100 ]; lib_apt_src_jar -> lib_turbine_action [ weight=0 ]; lib_kotlin_headers -> lib_turbine_action [ weight=0 ]; lib_java_sources -> lib_turbine_action [ weight=100 ]; lib_turbine_action -> lib_java_headers [ weight=100 ]; lib_apt_src_jar -> lib_javac_action [ weight=0 ]; lib_kotlin_headers -> lib_javac_action [ weight=0 ]; lib_java_sources -> lib_javac_action [ weight=1000 ]; lib_javac_action -> lib_java_classes [ weight=100 ]; lib_kotlin_classes -> lib_combine_action [ weight = 0 ]; lib_java_classes -> lib_combine_action [ weight = 100 ]; lib_combine_action -> lib_combined_classes [ weight=100 ]; lib_kotlin_headers -> lib_combine_headers_action [ weight = 0 ]; lib_java_headers -> lib_combine_headers_action [ weight = 100 ]; lib_combine_headers_action -> lib_combined_headers [ weight=100 ]; lib_combined_headers -> lib_spacer [ style=invis ]; // library 2 lib_combined_headers -> lib2_kapt_action [ weight=0 ]; lib2_kotlin_sources -> lib2_kapt_action [ weight=0 ]; lib2_java_sources -> lib2_kapt_action; lib2_kapt_action -> lib2_kotlin_stubs [ weight=100 ]; lib_combined_headers -> lib2_turbine_apt_action [ weight=0 ]; lib2_kotlin_stubs -> lib2_turbine_apt_action [ weight=100 ]; lib2_turbine_apt_action -> lib2_apt_src_jar [ weight=100 ]; lib_combined_headers -> lib2_kotlinc_action [ weight=0 ]; lib2_apt_src_jar -> lib2_kotlinc_action [ weight=0 ]; lib2_kotlin_sources -> lib2_kotlinc_action [ weight=100 ]; lib2_java_sources -> lib2_kotlinc_action; lib2_kotlinc_action -> lib2_kotlin_classes, lib2_kotlin_headers [ weight=100 ]; lib_combined_headers -> lib2_turbine_action [ weight=0 ]; lib2_apt_src_jar -> lib2_turbine_action [ weight=0 ]; lib2_kotlin_headers -> lib2_turbine_action [ weight=0 ]; lib2_java_sources -> lib2_turbine_action [ weight=100 ]; lib2_turbine_action -> lib2_java_headers [ weight=100 ]; lib_combined_headers -> lib2_javac_action [ weight=0 ]; lib2_apt_src_jar -> lib2_javac_action [ weight=0 ]; lib2_kotlin_headers -> lib2_javac_action [ weight=0 ]; lib2_java_sources -> lib2_javac_action [ weight=1000 ]; lib2_javac_action ->lib2_java_classes [ weight=100 ]; lib_combined_classes -> lib2_combine_action [ weight=0 ]; lib2_kotlin_classes -> lib2_combine_action [ weight=0 ]; lib2_java_classes -> lib2_combine_action [ weight=100 ]; lib2_combine_action -> lib2_combined_classes [ weight=100 ]; lib_combined_headers -> lib2_combine_headers_action [ weight=0 ]; lib2_kotlin_headers -> lib2_combine_headers_action [ weight=0 ]; lib2_java_headers -> lib2_combine_headers_action [ weight=100 ]; lib2_combine_headers_action -> lib2_combined_headers [ weight=100 ]; lib2_combined_headers -> lib2_spacer [ style=invis ]; // app lib2_combined_headers -> app_kapt_action [ weight=0 ]; app_kotlin_sources -> app_kapt_action [ weight=0 ]; app_java_sources -> app_kapt_action; app_kapt_action -> app_kotlin_stubs [ weight=100 ]; lib2_combined_headers -> app_turbine_apt_action [ weight=0 ]; app_kotlin_stubs -> app_turbine_apt_action [ weight=100 ]; app_turbine_apt_action -> app_apt_src_jar [ weight=100 ]; lib2_combined_headers -> app_kotlinc_action [ weight=0 ]; app_apt_src_jar -> app_kotlinc_action [ weight=0 ]; app_kotlin_sources -> app_kotlinc_action [ weight=100 ]; app_java_sources -> app_kotlinc_action; app_kotlinc_action -> app_kotlin_headers, app_kotlin_classes [ weight=100 ]; lib2_combined_headers -> app_javac_action [ weight=0 ]; app_apt_src_jar -> app_javac_action [ weight=0 ]; app_kotlin_headers -> app_javac_action [ weight=0 ]; app_java_sources -> app_javac_action [ weight=1000 ]; app_javac_action -> app_java_classes [ weight=100 ]; lib2_combined_classes -> app_combine_action [ weight=0 ]; app_kotlin_classes -> app_combine_action [ weight=0 ]; app_java_classes -> app_combine_action [ weight=100 ]; app_combine_action -> app_combined_classes [ weight=100 ]; app_combined_classes -> app_r8_action; app_r8_action -> app_dex [ weight=100 ]; }