All callers pass in a non-null filepath, require this as it's often expected to be set and useful in error messages.