<?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 filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">
<filesystem>
    <folder name="TaskList">
        <folder name="Groups">
            <file name="todo.instance">
                <attr name="instanceCreate" methodvalue="org.netbeans.spi.tasklist.Task.createGroup"/>

                <attr name="localizingBundle" stringvalue="org.netbeans.modules.tasklist.todo.Bundle"/>
                <attr name="groupName" stringvalue="nb-tasklist-todo"/>
                <attr name="diplayNameKey" stringvalue="LBL_todo_group"/>
                <attr name="descriptionKey" stringvalue="HINT_todo_group"/>
                <attr name="iconKey" stringvalue="ICON_todo"/>
                <attr name="position" intvalue="300"/>
            </file>

            </folder>

        <folder name="Scanners">
            <file name="TodoScanner.instance">
                <attr name="instanceOf" stringvalue="org.netbeans.spi.tasklist.FileTaskScanner"/>
                <attr name="instanceCreate" methodvalue="org.netbeans.modules.tasklist.todo.TodoTaskScanner.create"/>
            </file>
            
            <!--<attr name="WarningsProvider.instance/TodoProvider.instance" boolvalue="true"/> -->
        </folder>
    </folder>
</filesystem>
