   Apache Axiom
   Copyright 2004-2018 The Apache Software Foundation

   This product includes software developed by
   The Apache Software Foundation (http://www.apache.org/).
   Portions Copyright 2006 International Business Machines Corp.

   This product includes unmodified, binary redistributions of software (AspectJ)
   developed for the Eclipse Foundation (http://www.eclipse.org/aspectj), which
   is licensed under the Eclipse Public License 1.0. Source code for this project
   can be found at http://git.eclipse.org/c/aspectj/org.aspectj.git. An original
   copy of the license can be found at http://eclipse.org/legal/epl-v10.html.
