Avoid native arrays when possible

* this doesn't use ImmutableList because its possible that null values
will be acceptable for some of these calls