question: public String [ ] addInitNextForTE ( List < SimpleTLCState > trace , TraceExpressionInformationHolder [ ] expressionData ) { String initId = getValidIdentifier ( INIT_SCHEME ) ; String nextId = getValidIdentifier ( NEXT_SCHEME ) ; addInitNextForTE ( trace , expressionData , initId , nextId ) ; return new String [ ] { initId , nextId } ; }
target:  This will generate two identifiers equal to the initial and next state predicate for the trace. If expressionData is not null, it should contain information about trace explorer expressions. This information is used to appropriately put the variables representing trace explorer expressions in the trace. In the following example, trace explorer expressions are used, but if expressionData is null, those variables will not appear in the init and next definitions, but everything else will be the same. Note: In the following example, the expressions expr1,...,expr6, texpr1, texpr2 can take up multiple lines. Consider the following trace: <Initial predicate> <State num 1> var1=expr1 var2=expr2 <Action...> <State num 2> var1=expr3 var2=expr4 <Action...> <State num 3> var1=expr5 var2=expr6 The user has defined two expressions in the trace explorer: texpr1 (level 2 represented by var3) texpr2 (level 1 represented by var4) This method defines the following identifiers: init_4123123123 == var1=( expr1 )/\ var2=( expr2 )/\ var3=( "--" )/\ var4=( texpr2 ) next_12312312312 == (var1=( expr1 )/\ var2=( expr2 )/\ var1'=( expr3 )/\ var2'=( expr4 )/\ var3'=( texpr1 )/\ var4'=( texpr2 )') \/ (var1=( expr3 )/\ var2=( expr4 )/\ var1'=( expr5 )/\ var2'=( expr6 )/\ var3'=( texpr1 )/\ var4'=( texpr2 )') If the last state is back to state i, then this method treats the trace as if it has the state labeled "Back to state i" removed and replaced with a copy of state i. If the last state is stuttering, then this method treats the trace as if it has the state labeled "Stuttering" removed and replaced with a copy of the state before the state labeled "Stuttering".