I had asked this question but I omitted some info as I (wrongly) assumed that the omitted info was not part of my problem.
When you emit an event like so:
event ChildCreated(address indexed creator, address child, uint length);
and decode it like so in ethers js
return ethers.utils.defaultAbiCoder.decode(["address","address","uint256"], log.data);
You get an error:
Exception: null: value out of range (argument="value", value=20, code=INVALID_ARGUMENT, version=bytes/5.4.0
Why?