Buggy code:
@ Description ( "Simulates<seq2seq4repair_space>an<seq2seq4repair_space>ARG<seq2seq4repair_space>under<seq2seq4repair_space>the<seq2seq4repair_space>full<seq2seq4repair_space>ClonalOrigin<seq2seq4repair_space>model<seq2seq4repair_space>-<seq2seq4repair_space>can<seq2seq4repair_space>be<seq2seq4repair_space>used" + "<seq2seq4repair_space>for<seq2seq4repair_space>chain<seq2seq4repair_space>initialization<seq2seq4repair_space>or<seq2seq4repair_space>for<seq2seq4repair_space>sampler<seq2seq4repair_space>validation." ) public class SimulatedACG extends ConversionGraph { public Input < Double > rhoInput = new Input ( "rho" , "Conversion<seq2seq4repair_space>rate<seq2seq4repair_space>parameter." , Validate . REQUIRED ) ; public Input < Double > deltaInput = new Input ( "delta" , "Tract<seq2seq4repair_space>length<seq2seq4repair_space>parameter." , Validate . REQUIRED ) ; public Input < PopulationFunction > popFuncInput = new Input ( "populationModel" , "Demographic<seq2seq4repair_space>model<seq2seq4repair_space>to<seq2seq4repair_space>use." , Validate . REQUIRED ) ; public Input < Tree > clonalFrameInput = new Input ( "clonalFrame" , "Optional<seq2seq4repair_space>tree<seq2seq4repair_space>specifying<seq2seq4repair_space>fixed<seq2seq4repair_space>clonal<seq2seq4repair_space>frame." ) ; public Input < String > outputFileNameInput = new Input ( "outputFileName" , "If<seq2seq4repair_space>provided,<seq2seq4repair_space>simulated<seq2seq4repair_space>ARG<seq2seq4repair_space>is<seq2seq4repair_space>additionally<seq2seq4repair_space>written<seq2seq4repair_space>to<seq2seq4repair_space>this<seq2seq4repair_space>file." ) ; private double rho ; private double delta ; private PopulationFunction popFunc ; public SimulatedACG ( ) { } @ Override public void initAndValidate ( ) throws Exception { } private void simulateClonalFrame ( ) { List < Node > leafNodes = Lists . newArrayList ( ) ; for ( int i = 0 ; i < ( m_taxonset . get ( ) . getTaxonCount ( ) ) ; i ++ ) { Node leaf = new Node ( ) ; leaf . setNr ( i ) ; <START_BUG> leaf . setID ( m_taxonset . get ( ) . asStringList ( ) . get ( i ) ) ; <END_BUG> if ( hasDateTrait ( ) ) leaf . setHeight ( getDateTrait ( ) . getValue ( leaf . getID ( ) ) ) ; else leaf . setHeight ( 0.0 ) ; leafNodes . add ( leaf ) ; } List < Node > inactiveNodes = Lists . newArrayList ( leafNodes ) ; Collections . sort ( inactiveNodes , ( Node n1 , Node n2 ) -> { if ( ( n1 . getHeight ( ) ) < ( n2 . getHeight ( ) ) ) return - 1 ; if ( ( n2 . getHeight ( ) ) > ( n1 . getHeight ( ) ) ) return 1 ; return 0 ; } ) ; List < Node > activeNodes = Lists . newArrayList ( ) ; double tau = 0.0 ; int nextNr = leafNodes . size ( ) ; while ( true ) { int k = activeNodes . size ( ) ; double chi = ( 0.5 * k ) * ( k - 1 ) ; if ( chi > 0.0 ) tau += Randomizer . nextExponential ( chi ) ; else tau = Double . POSITIVE_INFINITY ; double t = popFunc . getInverseIntensity ( tau ) ; if ( ( ! ( inactiveNodes . isEmpty ( ) ) ) && ( t > ( inactiveNodes . get ( 0 ) . getHeight ( ) ) ) ) { Node nextActive = inactiveNodes . remove ( 0 ) ; activeNodes . add ( nextActive ) ; tau = popFunc . getIntensity ( nextActive . getHeight ( ) ) ; continue ; } Node node1 = activeNodes . remove ( Randomizer . nextInt ( k ) ) ; Node node2 = activeNodes . remove ( Randomizer . nextInt ( ( k - 1 ) ) ) ; Node parent = new Node ( ) ; parent . addChild ( node1 ) ; parent . addChild ( node2 ) ; parent . setHeight ( t ) ; parent . setNr ( ( nextNr ++ ) ) ; activeNodes . add ( parent ) ; if ( ( inactiveNodes . isEmpty ( ) ) && ( ( activeNodes . size ( ) ) < 2 ) ) break ; } setRoot ( activeNodes . get ( 0 ) ) ; } private void generateConversions ( ) { } private void associateConversionWithCF ( Conversion conv ) { } }

Fix:
leaf . setID ( m_taxonset . get ( ) . getTaxonId ( i ) ) ;