This is why I dislike the term 'Private API'; there's a big difference between using internal functions of a library, and using public functions which aren't properly documented.
In this case, there was a public method that took the public object Firefox needed, but wasn't documented as doing so.
In this case, there was a public method that took the public object Firefox needed, but wasn't documented as doing so.