extract abstract class SourceCodeGen