Apache Pig
Copyright 2008 The Apache Software Foundation

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

This product includes/uses the JavaCC (https://javacc.dev.java.net/),
Copyright (c) 2003 Sun Microsystems, Inc.

This product includes/uses Jetty (http://jetty.mortbay.org/),
Copyright (c) Mort Bay Consulting Pty. Ltd. (Australia) 

This product includes/uses Jsch (http://www.jcraft.com/jsch/),
Copyright (c) 2002,2003,2004,2005,2006,2007,2008 Atsuhiko Yamanaka,
JCraft,Inc. All rights reserved.
