Buggy code:
public class EpiModelInputEditor extends InputEditor . Base { EpidemicModel epidemicModel ; String [ ] modelNames = new String [ ] { "Linear<seq2seq4repair_space>birth-death" , "SIS" , "SIR" } ; IntegerParameter S0 ; RealParameter infectionRate ; RealParameter recoveryRate ; RealParameter psiSamplingVariable ; RealParameter removalProb ; RealParameter rhoSamplingProb ; RealParameter rhoSamplingTime ; RealParameter infectionRateChangeTimes ; RealParameter recoveryRateChangeTimes ; RealParameter psiSamplingVariableChangeTimes ; RealParameter removalProbChangeTimes ; RealParameter epiOrigin ; ComboBoxModel < String > emSelectorModel ; DefaultTableModel infectionRateModel ; DefaultTableModel infectionRateChangeTimesModel ; JTable infectionRateTable ; JTable infectionRateChangeTimesTable ; JLabel infectionRateChangeTimesLabel ; DefaultTableModel recoveryRateModel ; DefaultTableModel recoveryRateChangeTimesModel ; JTable recoveryRateTable ; JTable recoveryRateChangeTimesTable ; JLabel recoveryRateChangeTimesLabel ; DefaultTableModel psiSamplingVariableModel ; DefaultTableModel psiSamplingVariableChangeTimesModel ; JTable psiSamplingVariableTable ; JTable psiSamplingVariableChangeTimesTable ; JLabel psiSamplingVariableChangeTimesLabel ; JCheckBox useSamplingProportionCheckBox ; DefaultTableModel removalProbModel ; DefaultTableModel removalProbChangeTimesModel ; JTable removalProbTable ; JTable removalProbChangeTimesTable ; JLabel removalProbChangeTimesLabel ; SpinnerNumberModel nInfectionRateShiftsModel ; SpinnerNumberModel nRecoveryRateShiftsModel ; SpinnerNumberModel nPsiSamplingVariableShiftsModel ; SpinnerNumberModel nRemovalProbShiftsModel ; JSpinner nInfectionRateShiftsSpinner ; JSpinner nRecoveryRateShiftsSpinner ; JSpinner nPsiSamplingVariableShiftsSpinner ; JSpinner nRemovalProbShiftsSpinner ; JTextField S0TextField ; JTextField rhoSamplingProbTextField ; JTextField originTextField ; JCheckBox estimateS0 ; JCheckBox estimateInfectionRate ; JCheckBox estimateRecoveryRate ; JCheckBox estimateInfectionRateShiftTimes ; JCheckBox estimateRecoveryRateShiftTimes ; JCheckBox estimatePsiSamplingVariable ; JCheckBox estimatePsiSamplingVariableShiftTimes ; JCheckBox estimateRemovalProb ; JCheckBox estimateRemovalProbShiftTimes ; JCheckBox estimateRhoSamplingProb ; JCheckBox estimateOrigin ; EpiTrajPanel epiTrajPanel ; boolean modelSaveInProgress = false ; public EpiModelInputEditor ( BeautiDoc doc ) { } @ Override public Class < ? > type ( ) { } @ Override public void init ( Input < ? > input , BEASTInterface beastObject , int itemNr , ExpandOption bExpandOption , boolean bAddButtons ) { } public void loadFromModel ( ) { } protected void loadModelRateParameters ( RealParameter rate , DefaultTableModel rateModel , JCheckBox estimateRate , SpinnerModel nRateShiftsModel , RealParameter rateChangeTimes , JLabel rateChangeTimesLabel , DefaultTableModel rateChangeTimesModel , JCheckBox estimateRateShiftTimes ) { } public void saveToModel ( ) { if ( modelSaveInProgress ) return ; modelSaveInProgress = true ; PartitionContext partitionContext = doc . getContextFor ( m_beastObject ) ; String partitionID = ".t:" + ( partitionContext . tree ) ; try { switch ( ( ( String ) ( emSelectorModel . getSelectedItem ( ) ) ) ) { case "SIS" : epidemicModel = new SISModel ( ) ; break ; case "SIR" : epidemicModel = new SIRModel ( ) ; break ; case "Linear<seq2seq4repair_space>birth-death" : epidemicModel = new BirthDeathModel ( ) ; break ; default : throw new RuntimeException ( "Incompatible<seq2seq4repair_space>epidemic<seq2seq4repair_space>model." ) ; } if ( ( ( epidemicModel ) instanceof SISModel ) || ( ( epidemicModel ) instanceof SIRModel ) ) { if ( ( S0 ) == null ) { try { String S0id = "S0" + partitionID ; if ( pluginmap . containsKey ( S0id ) ) S0 = ( ( IntegerParameter ) ( pluginmap . get ( S0id ) ) ) ; else { S0 = new IntegerParameter ( "199" ) ; S0 . setID ( S0id ) ; } } catch ( Exception e ) { e . printStackTrace ( ) ; } } if ( ! ( S0TextField . getText ( ) . trim ( ) . isEmpty ( ) ) ) S0 . valuesInput . setValue ( S0TextField . getText ( ) , S0 ) ; S0 . isEstimatedInput . setValue ( estimateS0 . isSelected ( ) , S0 ) ; epidemicModel . setInputValue ( "S0" , S0 ) ; S0 . initAndValidate ( ) ; } else { if ( ( S0 ) != null ) { S0 . isEstimatedInput . setValue ( false , S0 ) ; } } saveModelRateParameters ( "infectionRate" , infectionRate , infectionRateModel , estimateInfectionRate , nInfectionRateShiftsModel , infectionRateChangeTimes , infectionRateChangeTimesModel , estimateInfectionRateShiftTimes , epidemicModel , partitionID ) ; saveModelRateParameters ( "recoveryRate" , recoveryRate , recoveryRateModel , estimateRecoveryRate , nRecoveryRateShiftsModel , recoveryRateChangeTimes , recoveryRateChangeTimesModel , estimateRecoveryRateShiftTimes , epidemicModel , partitionID ) ; saveModelRateParameters ( "psiSamplingVariable" , psiSamplingVariable , psiSamplingVariableModel , estimatePsiSamplingVariable , nPsiSamplingVariableShiftsModel , psiSamplingVariableChangeTimes , psiSamplingVariableChangeTimesModel , estimatePsiSamplingVariableShiftTimes , epidemicModel , partitionID ) ; epidemicModel . usePsiSamplingProportionInput . setValue ( useSamplingProportionCheckBox . isSelected ( ) , epidemicModel ) ; saveModelRateParameters ( "removalProb" , removalProb , removalProbModel , estimateRemovalProb , nRemovalProbShiftsModel , removalProbChangeTimes , removalProbChangeTimesModel , estimateRemovalProbShiftTimes , epidemicModel , partitionID ) ; rhoSamplingProb . valuesInput . setValue ( rhoSamplingProbTextField . getText ( ) , rhoSamplingProb ) ; rhoSamplingProb . isEstimatedInput . setValue ( estimateRhoSamplingProb . isSelected ( ) , rhoSamplingProb ) ; epidemicModel . setInputValue ( "rhoSamplingProb" , rhoSamplingProb ) ; rhoSamplingProb . initAndValidate ( ) ; epidemicModel . setInputValue ( "rhoSamplingTime" , rhoSamplingTime ) ; epidemicModel . setInputValue ( "rhoSamplingTimesBackward" , true ) ; epiOrigin . valuesInput . setValue ( originTextField . getText ( ) , epiOrigin ) ; epiOrigin . isEstimatedInput . setValue ( estimateOrigin . isSelected ( ) , epiOrigin ) ; <START_BUG> epidemicModel . setInputValue ( "treeOrigin" , epiOrigin ) ; <END_BUG> epiOrigin . initAndValidate ( ) ; epidemicModel . initAndValidate ( ) ; m_input . setValue ( epidemicModel , m_beastObject ) ; BEASTObjectPanel . addPluginToMap ( epidemicModel , doc ) ; } catch ( Exception e ) { System . err . println ( "Error<seq2seq4repair_space>updating<seq2seq4repair_space>epidemic<seq2seq4repair_space>model." ) ; e . printStackTrace ( ) ; } modelSaveInProgress = false ; refreshPanel ( ) ; } protected void saveModelRateParameters ( String paramName , RealParameter rate , DefaultTableModel rateModel , JCheckBox estimateRate , SpinnerModel nRateShiftsModel , RealParameter rateChangeTimes , DefaultTableModel rateChangeTimesModel , JCheckBox estimateRateShiftTimes , EpidemicModel epidemicModel , String partionID ) throws Exception { } }

Fix:
epidemicModel . setInputValue ( "origin" , epiOrigin ) ;