Apache Tephra
Copyright 2016 The Apache Software Foundation

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).

Apache Tephra - notice for binary distribution
==============================================
Apache Tephra includes Guice v3.0 and Guice Assisted Inject v3.0. Tephra
elects to include this software in this distribution under the Apache License.
You can obtain a copy of the License at:
http://apache.org/licenses/LICENSE-2.0

Apache Tephra includes Guava v13.0.1. Tephra elects to include this software
in this distribution under the Apache License.
You can obtain a copy of the License at:
http://apache.org/licenses/LICENSE-2.0

Apache Tephra includes Gson v2.2.4. Tephra elects to include this software
in this distribution under the Apache License.
You can obtain a copy of the License at:
http://apache.org/licenses/LICENSE-2.0

Apache Tephra includes javax.inject v1. Tephra elects to include this software
in this distribution under the Apache License.
You can obtain a copy of the License at:
http://apache.org/licenses/LICENSE-2.0
