@@ -0,0 +1,1267 @@
+package com.github.sparkcaller;%0A%0Aimport org.broadinstitute.gatk.engine.CommandLineGATK;%0A%0Aimport java.io.Serializable;%0Aimport java.util.ArrayList;%0A%0Apublic class BaseGATKProgram implements Serializable %7B%0A    final protected ArrayList%3CString%3E extraArgs;%0A    private ArrayList%3CString%3E programArgs;%0A%0A    public BaseGATKProgram(String toolkit, String extraArgsString) %7B%0A        this.extraArgs = Utils.possibleStringToArgs(extraArgsString);%0A        this.programArgs = new ArrayList%3CString%3E();%0A%0A        addArgument(%22-T%22, toolkit);%0A%0A        if (this.extraArgs != null) %7B%0A            programArgs.addAll(extraArgs);%0A        %7D%0A    %7D%0A%0A    protected void executeProgram() throws Exception %7B%0A        CommandLineGATK.start(new CommandLineGATK(), this.programArgs.toArray(new String%5B0%5D));%0A    %7D%0A%0A    protected void setInputFile(String inputFilepath) %7B%0A        addArgument(%22-I%22, inputFilepath);%0A    %7D%0A%0A    protected void setReference(String pathToReference) %7B%0A        addArgument(%22-R%22, pathToReference);%0A    %7D%0A%0A    protected void setOutputFile(String outputPath) %7B%0A        addArgument(%22-o%22, outputPath);%0A    %7D%0A%0A    protected void addArgument(String flag, String value) %7B%0A        programArgs.add(flag);%0A        if (value != null) %7B%0A            programArgs.add(value);%0A        %7D%0A    %7D%0A%7D%0A

Create the class which will be used as the base for all the GATK programs used in the pipeline.