I feel like this API is quite weird.  "Either assign the whole thing, or the nth thing in some cases", yet all callers specify n.  I think this won't even work in all cases.

I might have misunderstood its original meaning when I added the new functionality.