Arraylist é passada para funções por referência no PowerShell

Descobri hoje que um arraylist que eu passei para uma função é alterado quando removo um valor do arraylist dentro da função. O código abaixo parece sugerir que a passagem está acontecendo por referência. Por que isso seria? Isso ocorre por design ou algum tipo de bug? (Estou usando a v4 no Windows 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

questionAnswers(3)

yourAnswerToTheQuestion