The purpose of this file is to describe the licenses for project dependencies which 
were identified as having unknown licenses via "mvn site".

In this release, the following dependencies have unknown licenses:

Unknown:

Unnamed - com.twitter:xrayspecs_2.8.0:jar:2.0
Unnamed - javax.servlet:servlet-api:jar:2.5,
asm
cglib

We've tracked down the licenses for these dependents accordingly: 
 
xrayspecs is also Apache 2.0 but you have to look in the source to see the license, at
http://github.com/twitter/xrayspecs/blob/master/src/main/scala/com/twitter/xrayspecs/Time.scala

cglib is Apache 2.0 License - http://mvnrepository.com/artifact/cglib/cglib/2.2

asm is a BSD license -  http://forge.ow2.org/projects/asm 
