+ \r
+ /**\r
+ * Adds an expression to an ordered list of expressions on a given parameter\r
+ * and notifies the state manager of the change\r
+ * \r
+ * @param parameterName name of the parameter to add the expression to\r
+ * @param expression\r
+ */\r
+ public void addExpression(String parameterName, Expression expression) {\r
+ Pazpar2Command copy = this.copy();\r
+ copy.getParameter(parameterName).addExpression(expression);\r
+ checkInState(copy);\r
+ }\r
+ \r
+ public void removeExpression(String parameterName, Expression expression) {\r
+ Pazpar2Command copy = this.copy();\r
+ copy.getParameter(parameterName).removeExpression(expression);\r
+ checkInState(copy); \r
+ }\r
+ \r
+ public void removeExpressionsAfter(String parameterName, Expression expression,String... expressionFields) {\r
+ Pazpar2Command copy = this.copy();\r
+ copy.getParameter(parameterName).removeExpressionsAfter(expression,expressionFields);\r
+ checkInState(copy); \r
+ }\r
+ \r
+ public void removeExpressions(String parameterName, String... expressionFields) {\r
+ Pazpar2Command copy = this.copy(); \r
+ copy.getParameter(parameterName).removeExpressions(expressionFields); \r
+ if (!getParameter(parameterName).hasValue() && !getParameter(parameterName).hasExpressions()) {\r
+ copy.parameters.remove(parameterName);\r
+ }\r
+ checkInState(copy); \r
+ }\r