Yeah, these lazily computed properties are a bit contorted.  Since we always want to know all of `provides`, `requires`, and `addsDependencies` for all scripts, it would be more efficient to scan the AST once and compute them all.  Initially, I was thinking the lazy method would be more useful, but it feels more awkward now.