OROMatcher library (bundled in lib/oromatcher.jar under IntelliJ IDEA installation home) license is attached below:

----------------------------------------------------------------------------
Original Reusable Objects, Inc.

--------------------------------------------------------------------------------

Copyright (c) 1996, 1997 Original Reusable Objects, Inc. 


Copyright in this document and the software accompanying this document is owned by Original Reusable Objects, Inc. All rights reserved. 

OROMatcher License 

Original Reusable Objects, Inc., hereinafter referred to as ORO, grants you a non-exclusive, non-transferable limited license to use the Software Components comprising the OROMatcher Java class package. There is no fee for this license. You may not redistribute any of the Software Components except as follows: 

You may reproduce and redistribute the Software Components in object code form only (Java .class files) and only when incorporated into your software product which adds substantial and primary functionality to the Software Components. 
You may not permit further redistribution of the Software Components by your end users except as part of a new software product you develop that meets the restricions of item 1. 
To clarify, you may use the Software Components only to build new software you develop, and you may only distribute the Software Components as part of this new software. Except as permitted by applicable law and this License, you may not decompile, reverse engineer, disassemble, modify, rent, lease, loan, distribute, create derivative works from the Software or transmit the Software over a network. 
You may not use or otherwise export or reexport the Software Components except as authorized by United States law and the laws of the jurisdiction in which the Software was obtained. In particular, but without limitation, the Software may not be used or otherwise exported or reexported (1) into (or to a national or resident of) any United States embargoed country or (2) to anyone on the U.S. Treasury Department't list of Specially Designated Nationals or the U.S. Department of Commerce's Table of Denial Orders. By using the Software, you represent and warrant that you are not located in, under control of, or a national or resident of any such country or on any such list. 

ORO MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. ORO SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. THE SOFTWARE IS NOT DESIGNED FOR USE IN HIGH RISK ACTIVITIES REQUIRING FAIL-SAFE PERFORMANCE. ORO DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR HIGH RISK ACTIVITIES. 

Restricted Rights Legend 
This software and documentation is a "commercial item," as defined in 48 C.F.R. 2.101 (10/95), consisting of "commercial computer software" and "commercial computer software documentation," as defined in 48 C.F.R. 12.212 (9/95). Use, duplication, or disclosure by the U.S. Government is subject to the restrictions of U.S. GOVERNMENT END USERS consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (6/95). 

Trademarks 
ORO, the ORO logo, Original Reusable Objects, Component software for the Internet, and OROMatcher are trademarks or registered trademarks of Original Reusable Objects, Inc. in the United States and other countries. 
Java is trademark of Sun Microsystems, Inc. Netscape is a trademark of Netscape Communications Corporation. All other product names mentioned are the trademarks of their respective owners. 

--------------------------------------------------------------------------------
