package innovimax.mixthem.operation;

import innovimax.mixthem.arguments.FileMode;
import innovimax.mixthem.arguments.RuleParam;
import innovimax.mixthem.arguments.ParamValue;

import java.util.Map;

public class CopyFactory {
  
  	/**
    * @param fileMode The file mode for reading files
    * @see innovimax.mixthem.arguments.RulePara
    * @see innovimax.mixthem.arguments.ParamValue
    */
    public static ICopyOperation newInstance(final FileMode fileMode, final Map<RuleParam, ParamValue> params) {
        return fileMode == FileMode.CHAR ? new DefaultCharCopy(params) : new DefaultByteCopy(params);
    }    
    
}

@@ -191,16 +191,38 @@
 til.Map;
+%0Aimport java.util.set;
 %0A%0Apublic
@@ -306,16 +306,73 @@
 g files%0A
+    * @param params The list of parameters (maybe empty)%0A
     * @s
@@ -537,16 +537,46 @@
 ileMode,
+ final Set%3CInteger%3E selection,
  final M
@@ -670,24 +670,35 @@
 ultCharCopy(
+selection, 
 params) : ne
@@ -715,16 +715,27 @@
 yteCopy(
+selection, 
 params);

Update CopyFactory.java