¿Cómo clonar un InputStream?

Tengo un InputStream que paso a un método para hacer algún procesamiento. Usaré el mismo InputStream en otro método, pero después del primer procesamiento, el InputStream parece estar cerrado dentro del método.

¿Cómo puedo clonar el InputStream para enviarlo al método que lo cierra? ¿Hay otra solución?

EDIT: los métodos que cierran InputStream es un método externo de una lib. No tengo control sobre el cierre o no.

private String getContent(HttpURLConnection con) {
    InputStream content = null;
    String charset = "";
    try {
        content = con.getInputStream();
        CloseShieldInputStream csContent = new CloseShieldInputStream(content);
        charset = getCharset(csContent);            
        return  IOUtils.toString(content,charset);
    } catch (Exception e) {
        System.out.println("Error downloading page: " + e);
        return null;
    }
}

private String getCharset(InputStream content) {
    try {
        Source parser = new Source(content);
        return parser.getEncoding();
    } catch (Exception e) {
        System.out.println("Error determining charset: " + e);
        return "UTF-8";
    }
}

Respuestas a la pregunta(9)

Su respuesta a la pregunta