[Tex] Change TexCommand.parameters to immutable

Change-Id: I48198596b6b152a04f46735359ff2eeafcba351e
diff --git a/docmlet/org.eclipse.statet.docmlet.tex.core/src/org/eclipse/statet/docmlet/tex/core/ast/LtxParser.java b/docmlet/org.eclipse.statet.docmlet.tex.core/src/org/eclipse/statet/docmlet/tex/core/ast/LtxParser.java
index 91865b2..e7a888d 100644
--- a/docmlet/org.eclipse.statet.docmlet.tex.core/src/org/eclipse/statet/docmlet/tex/core/ast/LtxParser.java
+++ b/docmlet/org.eclipse.statet.docmlet.tex.core/src/org/eclipse/statet/docmlet/tex/core/ast/LtxParser.java
@@ -784,7 +784,7 @@
 			}
 			this.lexer.setReportAsterisk(false);
 		}
-		List<Parameter> parameters;
+		List<? extends Parameter> parameters;
 		if (!(parameters= command.getParameters()).isEmpty()) {
 			int nextArg= 0;
 			final List<TexAstNode> children= new ArrayList<>();
diff --git a/docmlet/org.eclipse.statet.docmlet.tex.core/src/org/eclipse/statet/docmlet/tex/core/ast/TexAsts.java b/docmlet/org.eclipse.statet.docmlet.tex.core/src/org/eclipse/statet/docmlet/tex/core/ast/TexAsts.java
index a9a7ec2..b108d7d 100644
--- a/docmlet/org.eclipse.statet.docmlet.tex.core/src/org/eclipse/statet/docmlet/tex/core/ast/TexAsts.java
+++ b/docmlet/org.eclipse.statet.docmlet.tex.core/src/org/eclipse/statet/docmlet/tex/core/ast/TexAsts.java
@@ -18,8 +18,6 @@
 
 import static org.eclipse.statet.docmlet.tex.core.ast.TexAstStatusConstants.TYPE123_GROUP_NOT_CLOSED;
 
-import java.util.List;
-
 import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 import org.eclipse.statet.jcommons.lang.Nullable;
 import org.eclipse.statet.jcommons.text.core.BasicTextRegion;
@@ -43,7 +41,7 @@
 	 * @return array with the resolved arguments (items can be <code>null</code>)
 	 */
 	public static @Nullable TexAstNode[] resolveArguments(final ControlNode node) {
-		final List<Parameter> parameters= nonNullAssert(node.getCommand()).getParameters();
+		final var parameters= nonNullAssert(node.getCommand()).getParameters();
 		final @Nullable TexAstNode[] resolved= new @Nullable TexAstNode[parameters.size()];
 		int idxArgs= 0, idxValues= 0;
 		while (idxArgs < resolved.length && idxValues < node.getChildCount()) {
diff --git a/docmlet/org.eclipse.statet.docmlet.tex.core/src/org/eclipse/statet/docmlet/tex/core/commands/LtxFontCommand.java b/docmlet/org.eclipse.statet.docmlet.tex.core/src/org/eclipse/statet/docmlet/tex/core/commands/LtxFontCommand.java
index 609331e..97bd09f 100644
--- a/docmlet/org.eclipse.statet.docmlet.tex.core/src/org/eclipse/statet/docmlet/tex/core/commands/LtxFontCommand.java
+++ b/docmlet/org.eclipse.statet.docmlet.tex.core/src/org/eclipse/statet/docmlet/tex/core/commands/LtxFontCommand.java
@@ -14,8 +14,7 @@
 
 package org.eclipse.statet.docmlet.tex.core.commands;
 
-import java.util.List;
-
+import org.eclipse.statet.jcommons.collections.ImList;
 import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 
 
@@ -23,13 +22,16 @@
 public class LtxFontCommand extends TexCommand {
 	
 	
-	public LtxFontCommand(final int type, final String word, final String description) {
-		super(type, word, description);
-	}
-	
-	public LtxFontCommand(final int type, final String word, final List<Parameter> parameters,
+	public LtxFontCommand(final int type,
+			final String word, final ImList<? extends Parameter> parameters,
 			final String description) {
 		super(type, word, false, parameters, description);
 	}
 	
+	public LtxFontCommand(final int type,
+			final String word,
+			final String description) {
+		super(type, word, description);
+	}
+	
 }
diff --git a/docmlet/org.eclipse.statet.docmlet.tex.core/src/org/eclipse/statet/docmlet/tex/core/commands/LtxPrintCommand.java b/docmlet/org.eclipse.statet.docmlet.tex.core/src/org/eclipse/statet/docmlet/tex/core/commands/LtxPrintCommand.java
index 1a858ab..c0df853 100644
--- a/docmlet/org.eclipse.statet.docmlet.tex.core/src/org/eclipse/statet/docmlet/tex/core/commands/LtxPrintCommand.java
+++ b/docmlet/org.eclipse.statet.docmlet.tex.core/src/org/eclipse/statet/docmlet/tex/core/commands/LtxPrintCommand.java
@@ -14,8 +14,7 @@
 
 package org.eclipse.statet.docmlet.tex.core.commands;
 
-import java.util.List;
-
+import org.eclipse.statet.jcommons.collections.ImList;
 import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 
 
@@ -26,13 +25,16 @@
 	private final String unicode;
 	
 	
-	public LtxPrintCommand(final int type, final String word, final String description,
+	public LtxPrintCommand(final int type,
+			final String word,
+			final String description,
 			final String unicode) {
 		super(type, word, description);
 		this.unicode= unicode;
 	}
 	
-	public LtxPrintCommand(final int type, final String word, final List<Parameter> parameters,
+	public LtxPrintCommand(final int type,
+			final String word, final ImList<? extends Parameter> parameters,
 			final String description,
 			final String unicode) {
 		super(type, word, false, parameters, description);
diff --git a/docmlet/org.eclipse.statet.docmlet.tex.core/src/org/eclipse/statet/docmlet/tex/core/commands/TexCommand.java b/docmlet/org.eclipse.statet.docmlet.tex.core/src/org/eclipse/statet/docmlet/tex/core/commands/TexCommand.java
index b286ffb..447f2ef 100644
--- a/docmlet/org.eclipse.statet.docmlet.tex.core/src/org/eclipse/statet/docmlet/tex/core/commands/TexCommand.java
+++ b/docmlet/org.eclipse.statet.docmlet.tex.core/src/org/eclipse/statet/docmlet/tex/core/commands/TexCommand.java
@@ -14,13 +14,13 @@
 
 package org.eclipse.statet.docmlet.tex.core.commands;
 
-import java.util.Collections;
-import java.util.List;
 import java.util.Locale;
 
 import com.ibm.icu.text.Collator;
 import com.ibm.icu.text.RuleBasedCollator;
 
+import org.eclipse.statet.jcommons.collections.ImCollections;
+import org.eclipse.statet.jcommons.collections.ImList;
 import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 import org.eclipse.statet.jcommons.lang.Nullable;
 
@@ -226,7 +226,7 @@
 	}
 	
 	
-	private static final List<Parameter> NO_PARAMS= Collections.emptyList();
+	private static final ImList<? extends Parameter> NO_PARAMS= ImCollections.emptyList();
 	
 	/*package*/ static final Collator COLLATOR= Collator.getInstance(Locale.ENGLISH);
 	static {
@@ -237,7 +237,7 @@
 	private final int type;
 	private final String word;
 	private final boolean supportAserisk;
-	private final List<Parameter> parameters;
+	private final ImList<? extends Parameter> parameters;
 	
 	private final String description;
 	
@@ -245,8 +245,9 @@
 	
 	
 	public TexCommand(final int type,
-			final String word, final boolean asterisk, final List<Parameter> parameters,
-			final @Nullable TexPackage texPackage, final String description) {
+			final String word, final boolean asterisk, final ImList<? extends Parameter> parameters,
+			final @Nullable TexPackage texPackage,
+			final String description) {
 		this.type= type;
 		this.word= word;
 		this.supportAserisk= asterisk;
@@ -256,12 +257,14 @@
 	}
 	
 	public TexCommand(final int type,
-			final String word, final boolean asterisk, final List<Parameter> parameters,
+			final String word, final boolean asterisk, final ImList<? extends Parameter> parameters,
 			final String description) {
 		this(type, word, asterisk, parameters, null, description);
 	}
 	
-	public TexCommand(final int type, final String word, final String description) {
+	public TexCommand(final int type,
+			final String word,
+			final String description) {
 		this(type, word, false, NO_PARAMS, null, description);
 	}
 	
@@ -278,7 +281,7 @@
 		return this.supportAserisk;
 	}
 	
-	public List<Parameter> getParameters() {
+	public ImList<? extends Parameter> getParameters() {
 		return this.parameters;
 	}
 	
diff --git a/docmlet/org.eclipse.statet.docmlet.tex.core/src/org/eclipse/statet/docmlet/tex/core/commands/TexEmbedCommand.java b/docmlet/org.eclipse.statet.docmlet.tex.core/src/org/eclipse/statet/docmlet/tex/core/commands/TexEmbedCommand.java
index 776763e..fe89521 100644
--- a/docmlet/org.eclipse.statet.docmlet.tex.core/src/org/eclipse/statet/docmlet/tex/core/commands/TexEmbedCommand.java
+++ b/docmlet/org.eclipse.statet.docmlet.tex.core/src/org/eclipse/statet/docmlet/tex/core/commands/TexEmbedCommand.java
@@ -14,8 +14,7 @@
 
 package org.eclipse.statet.docmlet.tex.core.commands;
 
-import java.util.List;
-
+import org.eclipse.statet.jcommons.collections.ImList;
 import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 import org.eclipse.statet.jcommons.lang.Nullable;
 
@@ -30,7 +29,7 @@
 	
 	
 	public TexEmbedCommand(final int type, final String embeddedType,
-			final String word, final boolean asterisk, final List<Parameter> parameters,
+			final String word, final boolean asterisk, final ImList<? extends Parameter> parameters,
 			final String description) {
 		super(type, word, asterisk, parameters, description);
 		this.embeddedType= embeddedType;
diff --git a/docmlet/org.eclipse.statet.docmlet.tex.ui/src/org/eclipse/statet/internal/docmlet/tex/ui/editors/LtxCommandCompletionProposal.java b/docmlet/org.eclipse.statet.docmlet.tex.ui/src/org/eclipse/statet/internal/docmlet/tex/ui/editors/LtxCommandCompletionProposal.java
index f9597cd..a5bf41b 100644
--- a/docmlet/org.eclipse.statet.docmlet.tex.ui/src/org/eclipse/statet/internal/docmlet/tex/ui/editors/LtxCommandCompletionProposal.java
+++ b/docmlet/org.eclipse.statet.docmlet.tex.ui/src/org/eclipse/statet/internal/docmlet/tex/ui/editors/LtxCommandCompletionProposal.java
@@ -405,7 +405,7 @@
 			mode= 201;
 		}
 		else if ((this.command.getType() & TexCommand.MASK_MAIN) != TexCommand.ENV) {
-			final List<Parameter> parameters= this.command.getParameters();
+			final var parameters= this.command.getParameters();
 			if (parameters != null && !parameters.isEmpty()) {
 				final boolean isFirstOptional= parameters.get(0).isOptional();
 				int idxFirstRequired= -1;