in.mark(signature.length);
try {
int signatureLength = in.read(signature);
in.reset();
if (ZipArchiveInputStream.matches(signature, signatureLength)) {
return new ZipArchiveInputStream(in);
} else if (JarArchiveInputStream.matches(signature, signatureLength)) {
return new JarArchiveInputStream(in);
} else if (ArArchiveInputStream.matches(signature, signatureLength)) {
return new ArArchiveInputStream(in);
} else if (CpioArchiveInputStream.matches(signature, signatureLength)) {