diff --git a/vcell-core/src/main/java/cbit/vcell/mapping/StochMathMapping.java b/vcell-core/src/main/java/cbit/vcell/mapping/StochMathMapping.java index a332ecbbcb..aeea1906f6 100644 --- a/vcell-core/src/main/java/cbit/vcell/mapping/StochMathMapping.java +++ b/vcell-core/src/main/java/cbit/vcell/mapping/StochMathMapping.java @@ -142,7 +142,11 @@ private Expression getProbabilityRate(ReactionStep reactionStep, GeneralKinetics // collect symbolTableEntries for speciesContexts within netRateExpr and replace with concentration parameter netRateExpr = new Expression(netRateExpr); - for (String symbol : netRateExpr.getSymbols()) { + // Expression.getSymbols() returns null when the expression has no free symbols + // (e.g. a constant rate, or a rate that only references already-resolved values). + String[] symbols = netRateExpr.getSymbols(); + for (int i = 0; symbols != null && i < symbols.length; i++) { + String symbol = symbols[i]; SymbolTableEntry symbolTableEntry = netRateExpr.getSymbolBinding(symbol); if (symbolTableEntry instanceof Kinetics.KineticsProxyParameter proxyParameter && proxyParameter.getTarget() instanceof SpeciesContext sc) {