<?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.

-->
<menus>
  <menu>
	<name>Tools</name>
	<menu-item>Setup</menu-item>
	<menu-item>Update Center</menu-item>
	<separator/>
	<menu>
	  <name>VCS</name>
	  <menu-item>Update</menu-item>
	  <menu-item>Commit</menu-item>
	  <separator/>
	  <menu-item>Revert</menu-item>
	</menu>
	<separator/>
	<menu-item>Help</menu-item>
  </menu>
	<foo>
		<name>name1-1</name>
		<name>name1-2</name>
		<separator/>
		<name>name2</name>
	    <name>name3</name>
	</foo>
</menus>
