Apache NetBeans Jackpot 3.0
Copyright 2017-2019 The Apache Software Foundation

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

The code is based on NetBeans Jackpot 3.0 Copyright (c) 2009-2017 Oracle Corp
and 1997-2015 Sun Microsystems, Inc. that has been kindly donated
to the Apache Software Foundation.
