1f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch# [Google Closure Compiler](https://developers.google.com/closure/compiler/)
2f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
3f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch[![Build Status](https://travis-ci.org/google/closure-compiler.svg?branch=master)](https://travis-ci.org/google/closure-compiler)
4f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
5f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben MurdochThe [Closure Compiler](https://developers.google.com/closure/compiler/) is a tool for making JavaScript download and run faster. It is a true compiler for JavaScript. Instead of compiling from a source language to machine code, it compiles from JavaScript to better JavaScript. It parses your JavaScript, analyzes it, removes dead code and rewrites and minimizes what's left. It also checks syntax, variable references, and types, and warns about common JavaScript pitfalls.
6f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
7f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch## Getting Started
8f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch * [Download the latest version](http://dl.google.com/closure-compiler/compiler-latest.zip) ([Release details here](https://github.com/google/closure-compiler/wiki/Releases))
9f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch * [Download a specific version](https://github.com/google/closure-compiler/wiki/Binary-Downloads). Also available via:
10f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch   - [Maven](https://github.com/google/closure-compiler/wiki/Maven)
11f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch   - [NPM](https://www.npmjs.com/package/google-closure-compiler)
12f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch * See the [Google Developers Site](https://developers.google.com/closure/compiler/docs/gettingstarted_app) for documentation including instructions for running the compiler from the command line.
13f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
14f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch## Options for Getting Help
15f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch1. Post in the [Closure Compiler Discuss Group](https://groups.google.com/forum/#!forum/closure-compiler-discuss)
16f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch2. Ask a question on [Stack Overflow](http://stackoverflow.com/questions/tagged/google-closure-compiler)
17f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch3. Consult the [FAQ](https://github.com/google/closure-compiler/wiki/FAQ)
18f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
19f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch## Building it Yourself
20f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
21f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben MurdochNote: The Closure Compiler requires [Java 7 or higher](http://www.java.com/).
22f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
23f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch### Using [Maven](http://maven.apache.org/)
24f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
25f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch1. Download [Maven](http://maven.apache.org/download.cgi).
26f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
27f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch2. Add sonatype snapshots repository to `~/.m2/settings.xml`:
28f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch   ```
29f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch   <profile>
30f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch     <id>allow-snapshots</id>
31f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch        <activation><activeByDefault>true</activeByDefault></activation>
32f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch     <repositories>
33f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch       <repository>
34f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch         <id>snapshots-repo</id>
35f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch         <url>https://oss.sonatype.org/content/repositories/snapshots</url>
36f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch         <releases><enabled>false</enabled></releases>
37f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch         <snapshots><enabled>true</enabled></snapshots>
38f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch       </repository>
39f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch     </repositories>
40f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch   </profile>
41f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch   ```
42f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
43f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch3. Run `mvn -DskipTests` (omit the `-DskipTests` if you want to run all the
44f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochunit tests too).
45f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
46f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    This will produce a jar file called `target/closure-compiler-1.0-SNAPSHOT.jar`.
47f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
48f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch### Using [Eclipse](http://www.eclipse.org/)
49f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
50f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch1. Download and open the [Eclipse IDE](http://www.eclipse.org/).
51f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch2. Navigate to `File > New > Project ...` and create a Java Project. Give
52f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch   the project a name.
53f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch3. Select `Create project from existing source` and choose the root of the
54f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch   checked-out source tree as the existing directory.
55f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch3. Navigate to the `build.xml` file. You will see all the build rules in
56f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch   the Outline pane. Run the `jar` rule to build the compiler in
57f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch   `build/compiler.jar`.
58f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
59f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch## Running
60f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
61f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben MurdochOn the command line, at the root of this project, type
62f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
63f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch```
64f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochjava -jar target/closure-compiler-1.0-SNAPSHOT.jar
65f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch```
66f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
67f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben MurdochThis starts the compiler in interactive mode. Type
68f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
69f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch```javascript
70f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochvar x = 17 + 25;
71f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch```
72f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
73f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochthen hit "Enter", then hit "Ctrl-Z" (on Windows) or "Ctrl-D" (on Mac or Linux)
74f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochand "Enter" again. The Compiler will respond:
75f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
76f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch```javascript
77f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochvar x=42;
78f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch```
79f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
80f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben MurdochThe Closure Compiler has many options for reading input from a file, writing
81f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochoutput to a file, checking your code, and running optimizations. To learn more,
82f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochtype
83f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
84f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch```
85f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochjava -jar compiler.jar --help
86f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch```
87f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
88f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben MurdochMore detailed information about running the Closure Compiler is available in the
89f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch[documentation](http://code.google.com/closure/compiler/docs/gettingstarted_app.html).
90f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
91f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch## Compiling Multiple Scripts
92f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
93f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben MurdochIf you have multiple scripts, you should compile them all together with one
94f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochcompile command.
95f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
96f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch```bash
97f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochjava -jar compiler.jar --js_output_file=out.js in1.js in2.js in3.js ...
98f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch```
99f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
100f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben MurdochYou can also use minimatch-style globs.
101f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
102f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch```bash
103f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch# Recursively include all js files in subdirs
104f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochjava -jar compiler.jar --js_output_file=out.js 'src/**.js'
105f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
106f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch# Recursively include all js files in subdirs, excluding test files.
107f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch# Use single-quotes, so that bash doesn't try to expand the '!'
108f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochjava -jar compiler.jar --js_output_file=out.js 'src/**.js' '!**_test.js'
109f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch```
110f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
111f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben MurdochThe Closure Compiler will concatenate the files in the order they're passed at
112f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochthe command line.
113f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
114f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben MurdochIf you're using globs or many files, you may start to run into
115f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochproblems with managing dependencies between scripts. In this case, you should
116f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochuse the [Closure Library](https://developers.google.com/closure/library/). It
117f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochcontains functions for enforcing dependencies between scripts, and Closure Compiler
118f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochwill re-order the inputs automatically.
119f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
120f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch## How to Contribute
121f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch### Reporting a bug
122f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch1. First make sure that it is really a bug and not simply the way that Closure Compiler works (especially true for ADVANCED_OPTIMIZATIONS).
123f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch * Check the [official documentation](https://developers.google.com/closure/compiler/)
124f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch * Consult the [FAQ](https://github.com/google/closure-compiler/wiki/FAQ)
125f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch * Search on [Stack Overflow](http://stackoverflow.com/questions/tagged/google-closure-compiler) and in the [Closure Compiler Discuss Group](https://groups.google.com/forum/#!forum/closure-compiler-discuss)
126f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch2. If you still think you have found a bug, make sure someone hasn't already reported it. See the list of [known issues](https://github.com/google/closure-compiler/issues).
127f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch3. If it hasn't been reported yet, post a new issue. Make sure to add enough detail so that the bug can be recreated. The smaller the reproduction code, the better.
128f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
129f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch### Suggesting a Feature
130f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch1. Consult the [FAQ](https://github.com/google/closure-compiler/wiki/FAQ) to make sure that the behaviour you would like isn't specifically excluded (such as string inlining).
131f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch2. Make sure someone hasn't requested the same thing. See the list of [known issues](https://github.com/google/closure-compiler/issues).
132f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch3. Read up on [what type of feature requests are accepted](https://github.com/google/closure-compiler/wiki/FAQ#how-do-i-submit-a-feature-request-for-a-new-type-of-optimization).
133f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch4. Submit your request as an issue.
134f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
135f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch### Submitting patches
136f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch1. All contributors must sign a contributor license agreement (CLA).
137f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch   A CLA basically says that you own the rights to any code you contribute,
138f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch   and that you give us permission to use that code in Closure Compiler.
139f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch   You maintain the copyright on that code.
140f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch   If you own all the rights to your code, you can fill out an
141f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch   [individual CLA](http://code.google.com/legal/individual-cla-v1.0.html).
142f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch   If your employer has any rights to your code, then they also need to fill out
143f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch   a [corporate CLA](http://code.google.com/legal/corporate-cla-v1.0.html).
144f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch   If you don't know if your employer has any rights to your code, you should
145f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch   ask before signing anything.
146f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch   By default, anyone with an @google.com email address already has a CLA
147f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch   signed for them.
148f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch2. To make sure your changes are of the type that will be accepted, ask about your patch on the [Closure Compiler Discuss Group](https://groups.google.com/forum/#!forum/closure-compiler-discuss)
149f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch3. Fork the repository.
150f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch4. Make your changes.
151f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch5. Submit a pull request for your changes. A project developer will review your work and then merge your request into the project.
152f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
153f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch## Closure Compiler License
154f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
155f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben MurdochCopyright 2009 The Closure Compiler Authors.
156f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
157f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben MurdochLicensed under the Apache License, Version 2.0 (the "License");
158f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochyou may not use this file except in compliance with the License.
159f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben MurdochYou may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
160f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
161f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben MurdochUnless required by applicable law or agreed to in writing, software
162f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochdistributed under the License is distributed on an "AS IS" BASIS,
163f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben MurdochWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
164f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben MurdochSee the License for the specific language governing permissions and
165f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochlimitations under the License.
166f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
167f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch## Dependency Licenses
168f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
169f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch### Rhino
170f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
171f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch<table>
172f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
173f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Code Path</td>
174f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>
175f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch      <code>src/com/google/javascript/rhino</code>, <code>test/com/google/javascript/rhino</code>
176f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    </td>
177f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
178f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
179f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
180f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>URL</td>
181f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>http://www.mozilla.org/rhino</td>
182f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
183f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
184f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
185f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Version</td>
186f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>1.5R3, with heavy modifications</td>
187f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
188f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
189f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
190f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>License</td>
191f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Netscape Public License and MPL / GPL dual license</td>
192f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
193f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
194f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
195f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Description</td>
196f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>A partial copy of Mozilla Rhino. Mozilla Rhino is an
197f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochimplementation of JavaScript for the JVM.  The JavaScript
198f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochparse tree data structures were extracted and modified
199f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochsignificantly for use by Google's JavaScript compiler.</td>
200f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
201f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
202f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
203f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Local Modifications</td>
204f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>The packages have been renamespaced. All code not
205f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochrelevant to the parse tree has been removed. A JsDoc parser and static typing
206f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochsystem have been added.</td>
207f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
208f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch</table>
209f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
210f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch### Args4j
211f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
212f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch<table>
213f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
214f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Code Path</td>
215f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td><code>lib/args4j.jar</code></td>
216f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
217f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
218f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
219f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>URL</td>
220f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>https://args4j.dev.java.net/</td>
221f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
222f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
223f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
224f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Version</td>
225f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>2.0.26</td>
226f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
227f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
228f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
229f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>License</td>
230f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>MIT</td>
231f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
232f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
233f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
234f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Description</td>
235f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>args4j is a small Java class library that makes it easy to parse command line
236f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochoptions/arguments in your CUI application.</td>
237f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
238f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
239f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
240f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Local Modifications</td>
241f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>None</td>
242f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
243f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch</table>
244f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
245f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch### Guava Libraries
246f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
247f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch<table>
248f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
249f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Code Path</td>
250f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td><code>lib/guava.jar</code></td>
251f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
252f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
253f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
254f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>URL</td>
255f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>https://github.com/google/guava</td>
256f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
257f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
258f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
259f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Version</td>
260f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>20.0</td>
261f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
262f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
263f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
264f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>License</td>
265f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Apache License 2.0</td>
266f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
267f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
268f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
269f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Description</td>
270f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Google's core Java libraries.</td>
271f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
272f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
273f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
274f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Local Modifications</td>
275f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>None</td>
276f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
277f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch</table>
278f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
279f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch### JSR 305
280f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
281f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch<table>
282f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
283f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Code Path</td>
284f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td><code>lib/jsr305.jar</code></td>
285f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
286f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
287f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
288f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>URL</td>
289f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>http://code.google.com/p/jsr-305/</td>
290f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
291f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
292f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
293f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Version</td>
294f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>svn revision 47</td>
295f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
296f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
297f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
298f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>License</td>
299f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>BSD License</td>
300f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
301f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
302f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
303f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Description</td>
304f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Annotations for software defect detection.</td>
305f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
306f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
307f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
308f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Local Modifications</td>
309f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>None</td>
310f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
311f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch</table>
312f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
313f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch### JUnit
314f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
315f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch<table>
316f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
317f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Code Path</td>
318f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td><code>lib/junit.jar</code></td>
319f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
320f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
321f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
322f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>URL</td>
323f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>http://sourceforge.net/projects/junit/</td>
324f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
325f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
326f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
327f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Version</td>
328f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>4.11</td>
329f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
330f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
331f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
332f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>License</td>
333f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Common Public License 1.0</td>
334f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
335f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
336f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
337f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Description</td>
338f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>A framework for writing and running automated tests in Java.</td>
339f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
340f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
341f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
342f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Local Modifications</td>
343f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>None</td>
344f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
345f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch</table>
346f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
347f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch### Protocol Buffers
348f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
349f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch<table>
350f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
351f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Code Path</td>
352f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td><code>lib/protobuf-java.jar</code></td>
353f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
354f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
355f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
356f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>URL</td>
357f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>https://github.com/google/protobuf</td>
358f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
359f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
360f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
361f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Version</td>
362f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>2.5.0</td>
363f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
364f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
365f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
366f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>License</td>
367f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>New BSD License</td>
368f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
369f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
370f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
371f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Description</td>
372f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Supporting libraries for protocol buffers,
373f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochan encoding of structured data.</td>
374f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
375f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
376f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
377f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Local Modifications</td>
378f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>None</td>
379f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
380f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch</table>
381f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
382f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch### Truth
383f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
384f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch<table>
385f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
386f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Code Path</td>
387f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td><code>lib/truth.jar</code></td>
388f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
389f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
390f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
391f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>URL</td>
392f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>https://github.com/google/truth</td>
393f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
394f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
395f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
396f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Version</td>
397f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>0.24</td>
398f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
399f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
400f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
401f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>License</td>
402f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Apache License 2.0</td>
403f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
404f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
405f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
406f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Description</td>
407f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Assertion/Proposition framework for Java unit tests</td>
408f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
409f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
410f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
411f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Local Modifications</td>
412f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>None</td>
413f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
414f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch</table>
415f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
416f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch### Ant
417f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
418f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch<table>
419f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
420f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Code Path</td>
421f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>
422f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch      <code>lib/ant.jar</code>, <code>lib/ant-launcher.jar</code>
423f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    </td>
424f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
425f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
426f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
427f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>URL</td>
428f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>http://ant.apache.org/bindownload.cgi</td>
429f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
430f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
431f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
432f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Version</td>
433f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>1.8.1</td>
434f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
435f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
436f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
437f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>License</td>
438f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Apache License 2.0</td>
439f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
440f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
441f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
442f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Description</td>
443f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Ant is a Java based build tool. In theory it is kind of like "make"
444f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochwithout make's wrinkles and with the full portability of pure java code.</td>
445f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
446f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
447f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
448f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Local Modifications</td>
449f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>None</td>
450f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
451f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch</table>
452f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
453f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch### GSON
454f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
455f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch<table>
456f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
457f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Code Path</td>
458f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td><code>lib/gson.jar</code></td>
459f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
460f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
461f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
462f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>URL</td>
463f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>https://github.com/google/gson</td>
464f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
465f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
466f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
467f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Version</td>
468f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>2.2.4</td>
469f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
470f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
471f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
472f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>License</td>
473f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Apache license 2.0</td>
474f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
475f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
476f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
477f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Description</td>
478f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>A Java library to convert JSON to Java objects and vice-versa</td>
479f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
480f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
481f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
482f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Local Modifications</td>
483f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>None</td>
484f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
485f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch</table>
486f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
487f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch### Node.js Closure Compiler Externs
488f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
489f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch<table>
490f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
491f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Code Path</td>
492f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td><code>contrib/nodejs</code></td>
493f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
494f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
495f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
496f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>URL</td>
497f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>https://github.com/dcodeIO/node.js-closure-compiler-externs</td>
498f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
499f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
500f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
501f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Version</td>
502f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>e891b4fbcf5f466cc4307b0fa842a7d8163a073a</td>
503f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
504f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
505f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
506f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>License</td>
507f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Apache 2.0 license</td>
508f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
509f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
510f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
511f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Description</td>
512f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Type contracts for NodeJS APIs</td>
513f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
514f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
515f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  <tr>
516f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Local Modifications</td>
517f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    <td>Substantial changes to make them compatible with NpmCommandLineRunner.</td>
518f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  </tr>
519f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch</table>
520