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

-->
<?xml-stylesheet type="text/xml" href="../../nbbuild/javadoctools/apichanges.xsl"?>
<!DOCTYPE apichanges PUBLIC "-//NetBeans//DTD API changes list 1.0//EN" "../../nbbuild/javadoctools/apichanges.dtd">

<!--

INFO FOR PEOPLE ADDING CHANGES:

Check the DTD (apichanges.dtd) for details on the syntax. You do not
need to regenerate the HTML, as this is part of Javadoc generation; just
change the XML. Rough syntax of a change (several parts optional):

<change>
    <api name="compiler"/>
    <summary>Some brief description here, can use <b>XHTML</b></summary>
    <version major="1" minor="99"/>
    <date day="13" month="6" year="2001"/>
    <author login="jrhacker"/>
    <compatibility addition="yes"/>
    <description>
        The main description of the change here.
        Again can use full <b>XHTML</b> as needed.
    </description>
    <class package="org.openide.compiler" name="DoWhatIWantCompiler"/>
    <issue number="14309"/>
</change>

Also permitted elements: <package>, <branch>. <version> is API spec
version, recommended for all new changes. <compatibility> should say
if things were added/modified/deprecated/etc. and give all information
related to upgrading old code. List affected top-level classes and
link to issue numbers if applicable. See the DTD for more details.

Changes need not be in any particular order, they are sorted in various
ways by the stylesheet anyway.

Dates are assumed to mean "on the trunk". If you *also* make the same
change on a stabilization branch, use the <branch> tag to indicate this
and explain why the change was made on a branch in the <description>.

Please only change this file on the trunk! Rather: you can change it
on branches if you want, but these changes will be ignored; only the
trunk version of this file is important.

Deprecations do not count as incompatible, assuming that code using the
deprecated calls continues to see their documented behavior. But do
specify deprecation="yes" in <compatibility>.

This file is not a replacement for Javadoc: it is intended to list changes,
not describe the complete current behavior, for which ordinary documentation
is the proper place.

-->

<apichanges>

    <!-- First, a list of API names you may use: -->
    <apidefs>
        <apidef name="general">General</apidef>
        <!-- etc. -->
    </apidefs>

    <!-- ACTUAL CHANGES BEGIN HERE: -->

    <changes>
        <change id="TypedTextInterceptorIndent">
            <summary>Ability to indent text set to TypedTextInterceptor</summary>
            <version major="2" minor="26"/>
            <date day="15" month="9" year="2019"/>
            <author login="jlahoda"/>
            <compatibility binary="compatible" source="compatible" semantic="compatible" addition="yes" deprecation="no" deletion="no" modification="no" />
            <description>
                <p>Added TypedTextInterceptor.MutableContext.setText overload, which
                   optionally re-indents the provided text.</p>
            </description>
            <class name="TypedTextInterceptor" package="org.netbeans.spi.editor.typinghooks"/>
        </change>
        <change id="PrependedTextOpt">
            <summary>Prepended text for highlights</summary>
            <version major="2" minor="24"/>
            <date day="14" month="5" year="2019"/>
            <author login="jlahoda"/>
            <compatibility binary="compatible" source="compatible" semantic="compatible" addition="yes" deprecation="no" deletion="no" modification="no" />
            <description>
                <p>If AttributeSet returned from HighlightsSequence contains key "virtual-text-prepend"
                   with a value of type String, the UI may optionally render the value as a
                   virtual text before the text of the highlight. It is recommended to make the
                   span of length 1, to avoid problems when the AttributeSet with "virtual-text-prepend"
                   is merged with other AttributeSets, which could lead to duplication.</p>
            </description>
            <class name="HighlightsSequence" package="org.netbeans.spi.editor.highlighting"/>
        </change>
        <change id="EditorActionRegistration.category">
            <summary>Added category to EditorActionRegistration</summary>
            <version major="2" minor="15"/>
            <date day="16" month="7" year="2016"/>
            <author login="markiewb"/>
            <compatibility binary="compatible" source="compatible" semantic="compatible" addition="yes" deprecation="no" deletion="no" modification="yes" />
            <description>
                <p>Allow to set the keymap-category for an action registered using @EditorActionRegistration.</p>
            </description>
            <class name="EditorActionRegistration" package="org.netbeans.api.editor"/>
            <issue number="171261"/>
        </change>
        <change id="EditorCaret-bias">
            <summary>Position.Bias support added to EditorCaret</summary>
            <version major="2" minor="14"/>
            <date day="25" month="5" year="2016"/>
            <author login="mmetelka"/>
            <compatibility binary="compatible" source="compatible" semantic="compatible" addition="yes" deprecation="no" deletion="no" modification="yes" />
            <description>
                <p>
                    CaretInfo.getDotBias() and CaretInfo.getMarkBias() added together
                    with other methods and parameters for bias manipulation to properly handle bidirectional text.
                </p>
            </description>
            <class name="EditorCaret" package="org.netbeans.api.editor.caret"/>
            <issue number="259023"/>
        </change>
      <change id="SplitOffsetHighlightsSequence">
          <summary>Renamed ShiftHighlightsSequence to SplitOffsetHighlightsSequence</summary>
          <version major="2" minor="13"/>
          <date day="23" month="5" year="2016"/>
          <author login="mmetelka"/>
          <compatibility source="compatible" binary="compatible" semantic="compatible" modification="yes"/>
          <description>
              <p>
                  Renamed ShiftHighlightsSequence to SplitOffsetHighlightsSequence
                  to and its getStartShift() to getStartSplitOffset() for better description
                  and getEndShift() to getEndSplitOffset().
              </p>
          </description>
          <class name="SplitOffsetHighlightsSequence" package="org.netbeans.spi.editor.highlighting"/>
          <issue number="257889"/>
      </change>
        <change id="EditorUtilities.addCaretUndoableEdit">
            <summary>EditorUtilities.addCaretUndoableEdit added</summary>
            <version major="2" minor="11"/>
            <date day="19" month="4" year="2016"/>
            <author login="mmetelka"/>
            <compatibility binary="compatible" source="compatible" semantic="compatible" addition="yes" deprecation="no" deletion="no" modification="no" />
            <description>
                <p>
                    EditorUtilities.addCaretUndoableEdit allows actions to remember caret position
                    during an atomic transaction over a document.
                </p>
            </description>
            <class name="EditorUtilities" package="org.netbeans.api.editor"/>
            <issue number="258798"/>
        </change>
        <change id="editor-caret-filters">
            <summary>Support for Navigation Filters, and caret move origins</summary>
            <version major="2" minor="10"/>
            <date day="14" month="4" year="2016"/>
            <author login="sdedic"/>
            <compatibility binary="compatible" semantic="compatible" source="compatible" addition="yes" deprecation="no" deletion="no"/>
            <description>
                <p>
                    Swing NavigationFilters implemented on top of the Caret API. Caret API caller may describe the operation which causes
                    the caret to be moved, so that filters and caret listeners can react on specific action groups.
                </p>
                <p>
                    A boilerplate NavigationFilter is provided, that supports chaining of filters on the caret
                </p>
            </description>
            <class name="CaretMoveContext" package="org.netbeans.api.editor.caret"/>
            <class name="EditorCaret" package="org.netbeans.api.editor.caret"/>
            <class name="EditorCaretEvent" package="org.netbeans.api.editor.caret"/>
            <class name="MoveCaretsOrigin" package="org.netbeans.api.editor.caret"/>
            <class name="NavigationFilterBypass" package="org.netbeans.spi.editor.caret"/>
            <class name="CascadingNavigationFilter" package="org.netbeans.spi.editor.caret"/>
            
            <issue number="258824"/>
        </change>
        <change id="StickyWindowSupport">
            <summary>Support for sticky windows in the editor</summary>
            <version major="2" minor="9"/>
            <date day="18" month="4" year="2016"/>
            <author login="ralphbenjamin"/>
            <compatibility binary="compatible" source="compatible" semantic="compatible" addition="yes" deprecation="no" deletion="no" modification="no" />
            <description>
                <p>
                    Support for Sticky Windows in the editor. JComponents can be
                    added to a layer on top of the editor. Components will
                    update their vertical position on editor changes.
                </p>
            </description>
            <class name="StickyWindowSupport" package="org.netbeans.api.editor"/>
            <issue number="258764"/>
        </change>
        <change id="editor-registry-find-component">
            <summary>Added EditorRegistry.findComponent</summary>
            <version major="2" minor="8"/>
            <date day="6" month="4" year="2016"/>
            <author login="mmetelka"/>
            <compatibility binary="compatible" semantic="compatible" source="compatible" addition="yes" deprecation="no" deletion="no"/>
            <description>
                <p>
                    The EditorRegistry.findComponent() allows caret related undo edits
                    to be undone in a focused component (for multiple views over a single document).
                </p>
                <p>
                    Also simplified naming of EditorActionNames.addCaretUp and addCaretDown.
                </p>
            </description>
            <class name="EditorRegistry" package="org.netbeans.api.editor" />
            <class name="EditorActionNames" package="org.netbeans.api.editor" />
            <issue number="258377"/>
        </change>
        <change id="editor-caret">
            <summary>Caret API introduced</summary>
            <version major="2" minor="7"/>
            <date day="22" month="2" year="2016"/>
            <author login="mmetelka"/>
            <author login="ralphbenjamin"/>
            <compatibility binary="compatible" semantic="compatible" source="compatible" addition="yes" deprecation="no" deletion="no"/>
            <description>
                <p>
                    The Caret API was introduced to allow working with multiple
                    carets within one document.
                </p>
            </description>
            <class name="EditorActionNames" package="org.netbeans.api.editor" />
            <class name="EditorUtilities" package="org.netbeans.api.editor" />
            <package name="org.netbeans.api.editor.caret" />
            <issue number="257893"/>
        </change>
        <change id="occurrences-names">
            <summary>Added IDs for goto prev/next occurrence actions</summary>
            <version major="2" minor="6"/>
            <date day="30" month="1" year="2016"/>
            <author login="sdedic"/>
           <compatibility binary="compatible" semantic="compatible" source="compatible" addition="yes"/>
            <description>
                <p>
                    Many languages define their own actions and support for navigating between symbol occurrences.
                    Common action name allows them to be presented and configured as one action in IDE configuration.
                </p>
           </description>
            <class name="EditorActionNames" package="org.netbeans.api.editor"/>
            <issue number="194356"/>
        </change>
        <change id="shift-highlights-sequence">
            <summary>Extended HightlightsSequence by ShiftHighlightsSequence</summary>
            <version major="2" minor="5"/>
            <date day="22" month="2" year="2016"/>
            <author login="mmetelka"/>
            <compatibility binary="compatible" semantic="compatible" source="compatible" addition="yes" deprecation="no" deletion="no"/>
            <description>
                <p>
        Highlights sequence that supports shifts in addition to regular offsets.
        This allows to color individual spaces within a tab character
        or to color extra virtual characters beyond a newline character.
                </p>
            </description>
            <issue number="257889"/>
        </change>
        <change id="releasable-highlights-container">
            <summary>ReleasableHighlightsContainer added</summary>
            <version major="2" minor="4"/>
            <date day="27" month="8" year="2015"/>
            <author login="mmetelka"/>
            <compatibility binary="compatible" semantic="compatible" source="compatible" addition="yes" deprecation="no" deletion="no"/>
            <description>
                <p>
                    Allows highlights containers to be notified that they are no longer being used by highlighting manager.
                </p>
            </description>
            <issue number="254701"/>
        </change>
        <change id="editor-document-split">
            <summary>Document handling split</summary>
            <version major="2" minor="0"/>
            <date day="20" month="5" year="2013"/>
            <author login="sdedic"/>
            <compatibility binary="compatible" semantic="compatible" source="incompatible" addition="no" deprecation="no" deletion="no"/>
            <description>
                <p>
                    Document data handling and implementation was separated into <code>editor.document</code> module
                </p>
            </description>
            <issue number="244679"/>
        </change>
        <change id="typinghooks-CamelCase-spi-added">
            <summary>Typing Hooks Camel Case SPI added</summary>
            <version major="1" minor="79"/>
            <date day="16" month="4" year="2013"/>
            <author login="mkristofic"/>
            <compatibility binary="compatible" source="compatible" semantic="compatible" addition="yes"/>
            <description>
                Typing Hooks Camel Case SPI is addition to Typing Hooks. it allows interception of various key events
                that are processed in the editor. The SPI is a replacement for
                subclassing editor actions such as <code>RemoveWordNextAction</code>, <code>PreviousCamelCasePosition</code>, etc.
            </description>
            <issue number="217163"/>
        </change>
        <change id="EditorLibDeprecation.SidebarFactory">
            <summary>SidebarFactory interface adopted</summary>
            <version major="1" minor="77"/>
            <date day="8" month="3" year="2013"/>
            <author login="sdedic"/>
            <compatibility binary="compatible" source="compatible" semantic="compatible" addition="yes"/>
            <description>
                <p>The interface <code>org.netbeans.spi.editor.SideBarFactory</code> was
                adopted from the legacy <code>editor.lib</code> module, with unchanged semantic.
                The original interface was deprecated.
                </p>
            </description>
            <class name="SideBarFactory" package="org.netbeans.spi.editor"/>
            <issue number="226877"/>
        </change>
        <change id="AbstractEditorAction.in.SPI">
            <summary>AbstractEditorAction made part of editor SPI</summary>
            <version major="1" minor="76"/>
            <date day="1" month="3" year="2013"/>
            <author login="mmetelka"/>
            <compatibility binary="compatible" source="compatible" semantic="compatible" addition="yes"/>
            <description>
                <p>
                    AbstractEditorAction made part of editor SPI by making org.netbeans.spi.editor a public package.
                </p>
            </description>
            <issue number="225792"/>
        </change>

        <change id="EditorActionRegistration.noKeyBinding.noIconInMenu">
            <summary>Added EditorActionRegistration.noKeyBinding and EditorActionRegistration.noIconInMenu</summary>
            <version major="1" minor="75"/>
            <date day="17" month="2" year="2013"/>
            <author login="mmetelka"/>
            <compatibility binary="compatible" source="compatible" semantic="compatible" addition="yes"/>
            <description>
                <p>
                    Added EditorActionRegistration.noKeyBinding and EditorActionRegistration.noIconInMenu fields
                    into EditorActionRegistration annotation.
                </p>
            </description>
            <issue number="226220"/>
        </change>

        <change id="NavigationHistoryClassAdded">
            <summary>NavigationHistory class added</summary>
            <version major="1" minor="74"/>
            <date day="15" month="2" year="2013"/>
            <author login="mkristofic"/>
            <compatibility binary="compatible" source="compatible" semantic="compatible" addition="yes"/>
            <description>
                <p>
                    Added NavigationHistory and NavigationHistory.Waypoint classes. It enables to add position to 
                    edit history. It also enables get edit history and look on last edits.
                </p>
            </description>
            <issue number="225808"/>
        </change>

        <change id="TypedTextInterceptor.getReplacedText">
            <summary>OnSaveTask interface added</summary>
            <version major="1" minor="73"/>
            <date day="30" month="1" year="2013"/>
            <author login="mkristofic"/>
            <compatibility binary="compatible" source="compatible" semantic="compatible" addition="yes"/>
            <description>
                <p>
                    Added method getReplacedText() in TypedTextInterceptor to get replaced text after it's removed.
                    This enables to use this text in some typing actions.
                </p>
            </description>
            <issue number="225293"/>
        </change>

        <change id="OnSaveTask">
            <summary>OnSaveTask interface added</summary>
            <version major="1" minor="66"/>
            <date day="5" month="9" year="2012"/>
            <author login="mmetelka"/>
            <compatibility binary="compatible" source="compatible" semantic="compatible" addition="yes"/>
            <description>
                <p>
                    Added OnSaveTask interface which allows modules to register
                    tasks into MimeLookup that will be performed right before document saving.
                </p>
            </description>
            <issue number="217904"/>
        </change>

        <change id="UndoableEditWrapper">
            <summary>UndoableEditWrapper interface added</summary>
            <version major="1" minor="60"/>
            <date day="24" month="4" year="2012"/>
            <author login="mmetelka"/>
            <compatibility binary="compatible" source="compatible" semantic="compatible" addition="yes"/>
            <description>
                <p>
                    Added UndoableEditWrapper interface which allows wrapping
                    of document-generated undoable edit by custom wrapping undoable edit(s).
                </p>
            </description>
            <issue number="204828"/>
        </change>

        <change id="EditorDocumentUtils.runExclusive">
            <summary>EditorDocumentUtils.runExclusive method added</summary>
            <version major="1" minor="58"/>
            <date day="27" month="3" year="2012"/>
            <author login="mmetelka"/>
            <compatibility binary="compatible" source="compatible" semantic="compatible" addition="yes"/>
            <description>
                <p>
                    Added EditorDocumentUtils.runExclusive(Runnable) method for gaining
                    exclusive access to document without making any document mutations.
                </p>
            </description>
            <issue number="206907"/>
        </change>

        <change id="EditorActionRegistration-weight">
            <summary>Add "weight" attribute to EditorActionRegistration.</summary>
            <version major="1" minor="53"/>
            <date day="14" month="11" year="2011"/>
            <author login="mmetelka"/>
            <compatibility binary="compatible" source="compatible" semantic="compatible" addition="yes"/>
            <description>
                <p>
                    Add "weight" attribute to EditorActionRegistration annotation
                    to allow for a clean actions overriding.
                </p>
            </description>
            <issue number="199823"/>
        </change>

        <change id="zoom-text-action-names-added">
            <summary>Zoom text actions added</summary>
            <version major="1" minor="45"/>
            <date day="16" month="7" year="2011"/>
            <author login="mmetelka"/>
            <compatibility binary="compatible" source="compatible" semantic="compatible" addition="yes"/>
            <description>
                Zoom text actions allow to increase/decrease default font size
                by Ctrl+Wheel or by actions (defined in editor.actions module).
            </description>
            <issue number="41807"/>
        </change>

        <change id="typinghooks-spi-added">
            <summary>Typing Hooks SPI added</summary>
            <version major="1" minor="31"/>
            <date day="5" month="8" year="2010"/>
            <author login="vstejskal"/>
            <compatibility binary="compatible" source="compatible" semantic="compatible" addition="yes"/>
            <description>
                Typing Hooks SPI allows interception of various key typed events
                that are processed in the editor. The SPI is a replacement for
                subclassing editor actions such as <code>DefaultKeyTypedAction</code>,
                <code>InsertBreakAction</code>, etc.
            </description>
            <issue number="152655"/>
        </change>

        <change id="added-line-column-based-dialog-bindings">
            <summary>Adding line/column based dialog bindings</summary>
            <version major="1" minor="24"/>
            <date day="26" month="3" year="2010"/>
            <author login="vstejskal"/>
            <compatibility binary="compatible" source="compatible" semantic="compatible" addition="yes"/>
            <description>
                Added <code>DialogBinding.bindComponentToFile(FileObject fileObject, int line, int column, int length, JTextComponent component)</code>
                and <code>DialogBinding.bindComponentToDocument(Document document, int line, int column, int length, JTextComponent component)</code>.
            </description>
            <issue number="181523"/>
        </change>

        <change id="added-toggleNonPrintableCharacters">
            <summary>EditorActionNames.toggleNonPrintableCharacters added.</summary>
            <version major="1" minor="20"/>
            <date day="4" month="3" year="2010"/>
            <author login="vstejskal"/>
            <compatibility binary="compatible" source="compatible" semantic="compatible" addition="yes"/>
            <description>
                Added EditorActionNames.toggleNonPrintableCharacters action name.
            </description>
            <issue number="4619"/>
        </change>

        <change id="added-component-removed-property">
            <summary>EditorRegistry.COMPONENT_REMOVED_PROPERTY added.</summary>
            <version major="1" minor="13"/>
            <date day="1" month="7" year="2009"/>
            <author login="dbalek"/>
            <compatibility binary="compatible" source="compatible" semantic="compatible" addition="yes"/>
            <description>EditorRegistry.COMPONENT_REMOVED_PROPERTY is fired when a component is removed from
            component hierarchy.
            </description>
        </change>

        <change id="added-dialogbinding">
            <summary>DialogBinding added</summary>
            <version major="1" minor="11"/>
            <date day="15" month="5" year="2009"/>
            <author login="dbalek"/>
            <compatibility binary="compatible" source="compatible" semantic="compatible" addition="yes"/>
            <description>DialogBinding allows for content of some text component to be virtually placed
                to the given offset inside of a file or document. This way, the necessary context is
                provided for code completion and similar features to work in any text component.
            </description>
            <class package="org.netbeans.api.editor" name="DialogBinding"/>
            <issue number="163769"/>
        </change>

        <change id="added-editoractionregistration">
            <summary>EditorActionRegistration annotation added</summary>
            <version major="1" minor="10"/>
            <date day="7" month="4" year="2009"/>
            <author login="mmetelka"/>
            <compatibility binary="compatible" source="compatible" semantic="compatible" addition="yes"/>
            <description>
                EditorActionRegistration allows to easily register an editor action
                into the list of actions of an editor kit. It also allows a lazy
                action's class loading (more details in javadoc).
            </description>
            <class package="org.netbeans.api.editor" name="EditorActionRegistration"/>
            <issue number="150875"/>
        </change>

        <change id="added-codegen-spi">
            <summary>Code Generation SPI added</summary>
            <version major="1" minor="8"/>
            <date day="30" month="4" year="2008"/>
            <author login="dbalek"/>
            <compatibility binary="compatible" source="compatible" semantic="compatible" addition="yes"/>
            <description>
                The Code Generation SPI consists of two interfaces.
                The <code>CodeGenerator</code> implementations registered for
                various mime types serve for creating code snippets and inserting
                them into documents on the Insert Code editor action invocation.
                The <code>CodeGeneratorContextProvider</code> implementations
                registered for the mime types could provide the respective
                CodeGenerators with an additional context information.
            </description>
            <issue number="134239"/>
        </change>

        <change id="added-HighlightAttributeValue">
            <summary>HighlightAttributeValue interface added</summary>
            <version major="1" minor="5"/>
            <date day="13" month="9" year="2007"/>
            <author login="vstejskal"/>
            <compatibility binary="compatible" source="compatible" semantic="compatible" addition="yes"/>
            <description>
                The <code>HighlightAttributeValue</code> allows specifying highlights
                with attributes, which value is lazily evaluated at the time when
                the attrbute is used. For example when specifying tooltips.
            </description>
            <issue number="107107"/>
        </change>

        <change id="added-EditorRegistry">
            <summary>EditorRegistry added</summary>
            <version major="1" minor="4"/>
            <date day="7" month="6" year="2007"/>
            <author login="mmetelka"/>
            <compatibility binary="compatible" source="compatible" semantic="compatible" addition="yes"/>
            <description>
                The <code>EditorRegistry</code> allows to get focused and last focused text component
                and list of all registered components and it allows to listen for currently focused
                component and changes of documents in it.
            </description>
            <issue number="103235"/>
        </change>

        <change id="removed-AttributesUtilities">
            <summary>AttributesUtilities removed</summary>
            <version major="1" minor="3"/>
            <date day="26" month="1" year="2007"/>
            <author login="vstejskal"/>
            <compatibility binary="incompatible" source="incompatible" semantic="incompatible" deletion="yes"/>
            <description>
                The <code>AttributesUtilities</code> class has been moved to
                <code>editor/settings</code> module.
            </description>
        </change>

        <change id="created">
            <summary>editor/lib2 was created.</summary>
            <version major="1" minor="0"/>
            <date day="1" month="8" year="2006"/>
            <author login="mmetelka"/>
            <compatibility binary="compatible" source="compatible" semantic="compatible"/>
            <description>
                The module was created.
            </description>
        </change>

    </changes>

    <!-- Now the surrounding HTML text and document structure: -->

    <htmlcontents>
<!-- Generated from apichanges.xml -->
    <head>
      <title>Change History for the Editor Library 2 API</title>
      <link rel="stylesheet" href="prose.css" type="text/css"/>
    </head>
    <body>

<p class="overviewlink"><a href="overview-summary.html">Overview</a></p>

<h1>Introduction</h1>

<p>This document lists changes made to the <a href="overview-summary.html">Editor Library 2 API</a>.</p>

<!-- The actual lists of changes, as summaries and details: -->
      <hr/>
      <standard-changelists module-code-name="org.netbeans.modules.editor.lib2/1"/>

      <hr/><p>@FOOTER@</p>

    </body>
  </htmlcontents>

</apichanges>
