License,Software,Version,Location,Usage

ICU4J + Unicode,ICU ,3.4.4.1,com.ibm.icu,
ICU4J + Unicode,ICU (API only),3.4.4.1,com.ibm.icu.base,
BSD-style,JSch,0.1.28,org.jcraft.jsch,
Apache 2.0,Ant,1.6.5,org.apache.ant,
W3C Software,  DOM,2,,
Abandoned rights statement,  SAX,2,,
Apache 2.0,Ant,1.6.5,org.eclipse.ant.ui (derivative of two classes),
Apache 2.0,Ant,1.6.5,org.eclipse.ant.core (derivative of two classes),
Apache 2.0,Ant,1.6.1,org.eclipse.team.cvs.core,
Apache 2.0,Lucene,1.4.3,org.apache.lucene,
Apache 2.0,Commons Collections,2.1.1,org.eclipse.core.runtime (derivative of one class),
,ENCRYPTION,,org.eclipse.core.runtime.compatibility.auth,
CPL 1.0,Junit,3.8.1,org.eclipse.jdt.ui.examples.projects,
CPL 1.0,,3.8.1,org.junit,
CPL 1.0,,4.1.0,org.junit4
EPL (notice),OSGi Materials,4,org.eclipse.osgi.services
,,,org.eclipse.osgi.util
,,,org.eclipse.osgi
LGPL 2.1,GTK+ Binding,,org.eclipse.swt.gtk.linux.*
,,,org.eclipse.swt.gtk.solaris.sparc
LGPL 2.1,GNOME Binding,,org.eclipse.swt.gtk.linux.*
,,,org.eclipse.swt.motif.linux.x86
LGPL 2.1,GTK+ Binding for Mozilla,,org.eclipse.swt.motif.linux
MPL 1.1,Mozilla Binding,,org.eclipse.swt.gtk.*
,,,org.eclipse.swt.motif.linux.x86
MPL 1.1,Cairo Binding,,org.eclipse.swt.gtk.*
,,,org.eclipse.swt.motif.linux.x86
MPL 1.1,Cairo Library,1.0.2,(libcairo-swt.so) org.eclipse.swt.gtk.* and  org.eclipse.swt.motif.linux.x86
MIT-style,      pixman, 0.1.6,(libcairo-swt.so) org.eclipse.swt.gtk.* and  org.eclipse.swt.motif.linux.x86

IJG,Independent JPEG Group's (LIBJPEG) (derivative of subset),Release 6b,org.eclipse.swt.* (BUT NOT org.eclipse.swt),derivative of subset
,,,org.eclipse.swt.* (BUT NOT org.eclipse.swt),
Free,Java Ssh Applet (ENCRYPTION),,org.eclipse.team.cvs.ssh,
ASL 1.1,Tomcat,4.1.30,org.eclipse.tomcat,
,MX4J,1.1.1,,
W3C Software,XHTML DTDs,,org.eclipse.ui.intro,
Sun,Java Mirror API,,org.eclipse.jdt.apt.core,
