package innovimax.mixthem.operation;

import innovimax.mixthem.io.DefaultByteReader;
import innovimax.mixthem.io.DefaultByteWriter;
import innovimax.mixthem.io.IByteInput;
import innovimax.mixthem.io.IByteOutput;
import innovimax.mixthem.io.InputResource;

import java.io.IOException;
import java.io.OutputStream;

/**
* <p>Copy all bytes.</p>
* @author Innovimax
* @version 1.0
*/
public class DefaultByteCopy implements ICopy {

    private final static int BYTE_BUFFER_SIZE = 1024;
    
    public void processFile(InputResource input, OutputStream out) throws IOException {
        byte[] buffer = new byte[BYTE_BUFFER_SIZE];
        IByteInput reader = new DefaultByteReader(input);
        IByteOutput writer = new DefaultByteWriter(out);
        while (reader.hasByte()) {
            final int len = reader.nextBytes(buffer, BYTE_BUFFER_SIZE);
            writer.writeBytes(buffer, len);
        }
        reader.close();
        writer.close();
    }    
    
}

@@ -408,20 +408,24 @@
 opy 
-implements I
+extends Abstract
 Copy
@@ -483,24 +483,308 @@
  1024;%0A    %0A
+    /**%0A%09* Constructor%09%0A %09* @param params The list of parameters (maybe empty)%0A%09* @see innovimax.mixthem.arguments.RuleParam%0A%09* @see innovimax.mixthem.arguments.ParamValue%0A%09*/%0A%09public DefaultByteCopy(final Map%3CRuleParam, ParamValue%3E params) %7B%0A%09%09super(params);%09%09%0A%09%7D%0A    %0A    @Override%0A
     public v

Update DefaultByteCopy.java