add intelij plugin module configuration
abstract class can also generate builder
make builder field protected
add abstract build method