Buggy code:
@ Exporter ( name = "BPMN<seq2seq4repair_space>Model<seq2seq4repair_space>as<seq2seq4repair_space>Graphviz<seq2seq4repair_space>Dot" , fileExtension = "dot" ) public class GraphvizBPMNExporter implements IFileExporter { @ Multiline private String basic ; @ Override public void exportModel ( Process model , String filename ) { } private void preprocessString ( Process model ) { String buffer = "" ; for ( StartEvent e : model . getStartEvents ( ) ) { buffer += ( "\tc_" + ( e . getId ( ) ) ) + "<seq2seq4repair_space>[xlabel=\"Start\"];\n" ; } basic = basic . replace ( "###<seq2seq4repair_space>START<seq2seq4repair_space>EVENTS<seq2seq4repair_space>###" , buffer ) ; buffer = "" ; for ( EndEvent e : model . getEndEvents ( ) ) { buffer += ( "\tc_" + ( e . getId ( ) ) ) + "<seq2seq4repair_space>[xlabel=\"End\"];\n" ; } basic = basic . replace ( "###<seq2seq4repair_space>END<seq2seq4repair_space>EVENTS<seq2seq4repair_space>###" , buffer ) ; buffer = "" ; for ( Task e : model . getTasks ( ) ) { buffer += ( ( ( "\tc_" + ( e . getId ( ) ) ) + "<seq2seq4repair_space>[label=\"" ) + ( e . getName ( ) ) ) + "\"];\n" ; } basic = basic . replace ( "###<seq2seq4repair_space>ACTIVITIES<seq2seq4repair_space>###" , buffer ) ; buffer = "" ; for ( Gateway e : model . getGateways ( ) ) { if ( e instanceof ParallelGateway ) { buffer += ( "\tc_" + ( e . getId ( ) ) ) + "<seq2seq4repair_space>[label=\"+\"];\n" ; } else if ( e instanceof ExclusiveGateway ) { buffer += ( "\tc_" + ( e . getId ( ) ) ) + "<seq2seq4repair_space>[label=\"&times;\"];\n" ; } } basic = basic . replace ( "###<seq2seq4repair_space>GATEWAYS<seq2seq4repair_space>###" , buffer ) ; buffer = "" ; for ( DataObject o : model . getDataObjects ( ) ) { if ( o instanceof StringDataObject ) { buffer += ( ( ( "\tc_" + ( o . getId ( ) ) ) + "<seq2seq4repair_space>[label=\"" ) + ( o . getName ( ) ) ) + "<seq2seq4repair_space>(string)\"];\n" ; } else if ( o instanceof IntegerDataObject ) { buffer += ( ( ( "\tc_" + ( o . getId ( ) ) ) + "<seq2seq4repair_space>[label=\"" ) + ( o . getName ( ) ) ) + "<seq2seq4repair_space>(integer)\"];\n" ; } else { buffer += ( ( ( ( ( "\tc_" + ( o . getId ( ) ) ) + "<seq2seq4repair_space>[label=\"" ) + ( o . getName ( ) ) ) + "<seq2seq4repair_space>=<seq2seq4repair_space>\\\"" ) + ( o . getValue ( ) ) ) + "\\\"\"];\n" ; } } basic = basic . replace ( "###<seq2seq4repair_space>DATAOBJECTS<seq2seq4repair_space>###" , buffer ) ; buffer = "" ; for ( Sequence s : model . getSequences ( ) ) { String left = "c_" + ( s . getSource ( ) . getId ( ) ) ; String right = "c_" + ( s . getSink ( ) . getId ( ) ) ; buffer += ( ( ( "\t" + left ) + "<seq2seq4repair_space>-><seq2seq4repair_space>" ) + right ) + ";\n" ; } basic = basic . replace ( "###<seq2seq4repair_space>EDGES<seq2seq4repair_space>###" , buffer ) ; buffer = "" ; for ( DataObject o : model . getDataObjects ( ) ) { <START_BUG> if ( ( o . getProcessOwner ( ) ) != null ) { <END_BUG> if ( ( o . getObjectOwner ( ) ) instanceof Sequence ) { String left = "c_" + ( o . getId ( ) ) ; String right = "c_" + ( ( ( Sequence ) ( o . getObjectOwner ( ) ) ) . getSink ( ) . getId ( ) ) ; buffer += ( ( ( "\t" + left ) + "<seq2seq4repair_space>-><seq2seq4repair_space>" ) + right ) + ";\n" ; } else { String left = "c_" + ( o . getObjectOwner ( ) . getId ( ) ) ; String right = "c_" + ( o . getId ( ) ) ; buffer += ( ( ( "\t" + left ) + "<seq2seq4repair_space>-><seq2seq4repair_space>" ) + right ) + ";\n" ; } } } basic = basic . replace ( "###<seq2seq4repair_space>DATAOBJECTSCONNECTIONS<seq2seq4repair_space>###" , buffer ) ; } }

Fix:
if ( ( o . getObjectOwner ( ) ) != null ) {