<?xml version="1.0" encoding="UTF-8"?>
    <!--
        Licensed to the Apache Software Foundation (ASF) under one or more
        contributor license agreements. See the NOTICE file distributed with
        this work for additional information regarding copyright ownership. The
        ASF licenses this file to you under the Apache License, Version 2.0 (the
        "License"); you may not use this file except in compliance with the
        License. You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable
        law or agreed to in writing, software distributed under the License is
        distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
        KIND, either express or implied. See the License for the specific
        language governing permissions and limitations under the License.
    -->
<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" 
    "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"[
    
    <!ENTITY % entities SYSTEM "../entities.ent" >
    %entities;
]>

<appendix id="legal.notes">
    <title>Legal notes</title>
    <para>
        <productname class="registered">&productnamecomplete;</productname> is a registered trademark.
    </para>
    <para>
        All rights, including in respect of the translation, printing and
        duplication of this document or parts thereof, are retained. 
        No part of this document may be reproduced or processed with or
        without electronic means, in any form, without the prior written permission of
        <orgname>&companyname;</orgname>.
        This includes for training purposes.
    </para>
    <para>
        <productname class="trade">Java</productname>
        and all Java-based trademarks and logos are trademarks or registered trademarks of
        <orgname>Sun Microsystems, Inc</orgname>.
        in the United States and other countries.
    </para>
    <para>
        All other brand names, designs, service marks and trademarks (whether or not registered)
        referenced or used herein are the property of their respective owners.	
	</para>
</appendix>

