.NET - Reemplazo de sentencias usando instrucciones anidadas con instrucciones de uso simple

Si se encontró con un código C # como este con instrucciones / recursos anidados:

using (var response = (HttpWebResponse)request.GetResponse())
{
    using (var responseStream = response.GetResponseStream())
    {
        using (var reader = new BinaryReader(responseStream))
        {
            // do something with reader
        }
    }
}

¿Es seguro reemplazarlo con algo como esto?

using (var reader = new BinaryReader(((HttpWebResponse)request.GetResponse()).GetResponseStream()))
{
    // do something with reader
}

El ejemplo anterior es solo un ejemplo de recursos desechables anidados, así que perdóname si no es exactamente el uso correcto. Tengo curiosidad si cuando eliminas el recurso más externo (el BinaryReader en este caso), si eliminará recursivamente a sus hijos por ti, o si necesitas eliminar explícitamente cada "capa" con instrucciones de uso separadas. P.ej. si elimina el BinaryReader, ¿se supone que elimina el flujo de respuesta, que a su vez elimina la respuesta? Pensar en esa última oración me hace pensar que realmente necesitas las declaraciones de uso por separado, porque no hay forma de garantizar que un objeto contenedor elimine el objeto interno. ¿Está bien?