It's a bit weird, but I don't consider it cheating. The original author of this code, who also wrote all the other implementations, chose to omit the `gradients` and `origins` arrays from the context object here. It really doesn't make sense to carry around these as part of the context anyway, so I actually think our version makes more sense. And the only reason that it works in other languages is because they don't require all fields of a struct to be initialized.