¿Se pasa Arraylist a funciones por referencia en PowerShell?

Descubrí hoy que un arraylist al que pasé a una función se modifica cuando elimino un valor del arraylist dentro de la función. El código de abajo parece implicar que el pase se está haciendo por referencia. ¿Por qué sería eso? ¿Esto es por diseño o algún tipo de error? (Estoy usando v4 en Win 8.1)

function myfunction {
    param (
        [System.Collections.ArrayList]$local
    )
        "`$local: " + $local.count
        "removing 1 from `$local"
        $local.RemoveAt(0)     
        "`$local:" + $local.count       
}

[System.Collections.ArrayList]$names=(Get-Content c:\temp\names.txt)

"`$names: " + $names.count
 myfunction -local $names      
"`$names: " + $names.count

RESULTADO:

$names: 16
$local: 16
removing 1 from $local
$local:15
$names: 15

Respuestas a la pregunta(3)

Su respuesta a la pregunta