@SuppressWarnings("ResultOfMethodCallIgnored")
    public static File unArchiveTarGZFile(final File archiveFile, File outputDir) throws IOException {
        InputStream inputStream = null;
        OutputStream fileOutputStream;
        TarInputStream tarInputStream = null;

        outputDir=SystemUtil.createASubDirFromFileName(archiveFile, outputDir);
        outputDir.mkdir();

        try {
            inputStream = new FileInputStream(archiveFile);
            inputStream = new GZIPInputStream(inputStream);
            tarInputStream = new TarInputStream(inputStream);
            TarEntry tarEntry;
            byte[] buff = new byte[1024];
            while (null != (tarEntry = tarInputStream.getNextEntry())) {
                final File next = new File(outputDir, tarEntry.getName());
                int bytesRead;
                if (tarEntry.isDirectory()) {
                    if (!next.exists()) {
                        if (!next.mkdirs()) {
                            throw new IllegalStateException("Could not create a directory..");
                        }
                    }
                } else {   //TODO: correct this to IOUtils copy
                    fileOutputStream = new FileOutputStream(next);
                    while ((bytesRead = tarInputStream.read(buff, 0, 1024)) > -1) {
                        fileOutputStream.write(buff, 0, 1024);
                    }
                }
            }
        }  finally {
            if (inputStream != null) {
                inputStream.close();
            }
            if (tarInputStream != null) {
                tarInputStream.close();
            }

        }
        return outputDir;
    }