<?xml version="1.0"?>
<!--

    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 filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.0//EN" "http://www.netbeans.org/dtds/filesystem-1_0.dtd">

<filesystem>
    <folder name="Editors">
        <folder name="Popup">
            <file name="org-openide-actions-CutAction.instance"/>
            <attr name="org-openide-actions-CutAction.instance/org-openide-actions-CopyAction.instance" boolvalue="true"/>
            <file name="org-openide-actions-CopyAction.instance"/>
            <attr name="org-openide-actions-CopyAction.instance/org-openide-actions-PasteAction.instance" boolvalue="true"/>
            <file name="org-openide-actions-PasteAction.instance"/>
        </folder>
        
        <!-- issue #61245 testing -->
        <folder name="application">
            <folder name="xml">
                <file name="org-openide-actions-FindAction.instance"/>
            </folder>
            <folder name="xhtml+xml">
                <file name="org-openide-actions-CutAction.instance"/>
            </folder>
        </folder>
        
        <folder name="text">
            
            <folder name="xml">
                <folder name="Popup">
                    <file name="org-openide-actions-ReplaceAction.instance"/>
                    <attr name="org-openide-actions-PasteAction.instance/org-openide-actions-ReplaceAction.instance" boolvalue="true"/>
                </folder>
                <file name="org-openide-actions-CopyAction.instance"/>
                <file name="org-openide-actions-PasteAction.instance_hidden"/>
                <file name="org-openide-actions-ReplaceAction.instance"/>
            </folder>
            <folder name="x-ant+xml">
                <folder name="Popup">
                    <file name="org-openide-actions-FindAction.instance"/>
                    <attr name="org-openide-actions-ReplaceAction.instance/org-openide-actions-FindAction.instance" boolvalue="true"/>
                </folder>
                <file name="org-openide-actions-CutAction.instance"/>
                <file name="org-openide-actions-CopyAction.instance">
                    <attr name="hidden" boolvalue="true" />
                </file>
                <file name="org-openide-actions-PasteAction.instance"/>
                <file name="org-openide-actions-ReplaceAction.instance">
                    <attr name="hidden" boolvalue="true" />
                </file>
            </folder>
            
            <folder name="x-java">
                <folder name="text">
                    <folder name="html">
                        <folder name="text">
                            <folder name="xml">
                                <folder name="Popup">
                                    <file name="format"/>
                                    <file name="Separator0.instance">
                                        <attr name="instanceClass" stringvalue="javax.swing.JSeparator"/>
                                    </file>
                                    <attr name="org-openide-actions-ReplaceAction.instance/format" boolvalue="true"/>
                                    <attr name="Separator0.instance/format" boolvalue="true"/>
                                    <attr name="org-openide-actions-ReplaceAction.instance/Separator0.instance" boolvalue="true"/>
                                </folder>
                            </folder>
                        </folder>
                        <folder name="Popup">
                            <file name="org-openide-actions-NewAction.instance"/>
                            <attr name="org-openide-actions-CopyAction.instance/org-openide-actions-NewAction.instance" boolvalue="true"/>
                            <attr name="org-openide-actions-NewAction.instance/org-openide-actions-PasteAction.instance" boolvalue="true"/>
                        </folder>
                    </folder>
                </folder>
                <folder name="Popup">    
                    <file name="org-openide-actions-DeleteAction.instance"/>
                    <attr name="org-openide-actions-CutAction.instance/org-openide-actions-DeleteAction.instance" boolvalue="true"/>
                    <attr name="org-openide-actions-DeleteAction.instance/org-openide-actions-CopyAction.instance" boolvalue="true"/>
                </folder>                    
            </folder>
        </folder>
    </folder>

    <folder name="Tmp">
        <folder name="PathFolderLookupTest">
            <folder name="testInstanceOf">
                <file name="ifaceA-impl.instance">
                    <attr name="instanceOf" stringvalue="org.netbeans.modules.editor.mimelookup.impl.FolderPathLookupTest$IfaceA"/>
                    <attr name="instanceCreate" methodvalue="org.netbeans.modules.editor.mimelookup.impl.FolderPathLookupTest.createIfacesImpl"/>
                </file>
                <file name="ifaceB-impl.instance">
                    <attr name="instanceOf" stringvalue="org.netbeans.modules.editor.mimelookup.impl.FolderPathLookupTest$IfaceB"/>
                    <attr name="instanceCreate" methodvalue="org.netbeans.modules.editor.mimelookup.impl.FolderPathLookupTest.createIfacesImpl"/>
                </file>
            </folder>
        </folder>
    </folder>
</filesystem>
