Apache Groovy
Copyright 2003-2019 The Apache Software Foundation

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

This product includes/uses ANTLR2 (http://www.antlr2.org/)
developed by Terence Parr 1989-2006

This product includes/uses ANTLR4 (https://github.com/antlr/antlr4)
Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.

This product bundles the JUnit4 jar (junit.org)
which is available under the terms of the Eclipse Public License v1.0

This product bundles several of the JUnit5 jars (junit.org)
which are available under the terms of the Eclipse Public License v2.0

This product embeds the OpenBeans jar within its grooid jar artifacts
OpenBeans includes/uses files from Apache Harmony and the following notice applies
Copyright 2006, 2010 The Apache Software Foundation.
Portions of Apache Harmony were originally developed by Intel Corporation and are
licensed to the Apache Software Foundation under the "Software Grant and Corporate
Contribution License Agreement" and for which the following copyright notices apply
    (C) Copyright 2005 Intel Corporation
    (C) Copyright 2005-2006 Intel Corporation
    (C) Copyright 2006 Intel Corporation

This product bundles icons from the famfamfam.com silk icons set
http://www.famfamfam.com/lab/icons/silk/
Licensed under the Creative Commons Attribution Licence v2.5
http://creativecommons.org/licenses/by/2.5/