This should return a plain struct, not a pointer, or else callers may try to `free` it.