This allows the components to be returned via out parameters, avoiding the need to allocate an array for most callers.