You have experience writing Mozilla Firefox extensions. Your code will probably become part of the open source project (and extension) Greasemonkey, and your work possibly be credited with your name, if you want to.
The task at hand consists of extending Greasemonkey's user script sandbox environment with global identifiers that provide lazy read access to computed data, so a user script running in Greasemonkey will only cause the result to be generated once the identifier is dereferenced.
The present code base provides a GM_getHeaders() method, which passes the lazy computation criterion but not the access method. The deliverable changes this to an access method of dereferencing a GM_headers identifier's properties, so what would be accessed as GM_getHeaders().x instead be reached as GM_headers.x.
For convenience reference, [the complete code implementing GM_getHeaders()]. [This GM-dev message] may provide useful related research.
1. Complete and fully-functional working program(s) in executable form as well as complete source code of all work done, as follows:
* Introduced global names, if any, are prefixed "GM_".
* The diff towards Greasemonkey is relevant, and does not change whitespace, indentation style, file encodings and similar, of any unrelated code.
2. Deliverables must be in ready-to-run condition, as follows:
* A unidiff (as produced by svn diff, diff -ru or TortoiseSVN's diff feature, for instance) towards [this subversion branch].
* A software installation package that will install the software in ready-to-run condition on the platform(s) specified in this bid request.
3. All deliverables will be considered "work made for hire" under U.S. Copyright law. Buyer will receive exclusive and complete copyrights to all work purchased. (No GPL, GNU, 3rd party components, etc. unless all copyright ramifications are explained AND AGREED TO by the buyer on the site per the coder's Seller Legal Agreement).
Browser versions presently supported by the Greasemonkey extension (prominently, Mozilla Firefox). The deliverable is specifically not allowed to rely on end-of-lined APIs of the Firefox 1.5 or 2.0 branches, unless also providing solutions for the 2.0 and 3.0 branches, where such APIs may have gone missing or changed incompatibly.