YAML Support Layer Code Cleanup
diff --git a/ide/languages.yaml/nbproject/project.xml b/ide/languages.yaml/nbproject/project.xml
index 09f58a9..d634621 100644
--- a/ide/languages.yaml/nbproject/project.xml
+++ b/ide/languages.yaml/nbproject/project.xml
@@ -142,6 +142,14 @@
                     </run-dependency>
                 </dependency>
                 <dependency>
+                    <code-name-base>org.openide.awt</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <specification-version>7.85</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
                     <code-name-base>org.openide.filesystems</code-name-base>
                     <build-prerequisite/>
                     <compile-dependency/>
@@ -150,30 +158,6 @@
                     </run-dependency>
                 </dependency>
                 <dependency>
-                    <code-name-base>org.openide.loaders</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.61</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.nodes</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.28</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.util.ui</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>9.3</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
                     <code-name-base>org.openide.util</code-name-base>
                     <build-prerequisite/>
                     <compile-dependency/>
@@ -190,6 +174,14 @@
                     </run-dependency>
                 </dependency>
                 <dependency>
+                    <code-name-base>org.openide.util.ui</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <specification-version>9.3</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
                     <code-name-base>org.openide.windows</code-name-base>
                     <build-prerequisite/>
                     <compile-dependency/>
diff --git a/ide/languages.yaml/src/org/netbeans/modules/languages/yaml/EmbeddedSectionsHighlighting.java b/ide/languages.yaml/src/org/netbeans/modules/languages/yaml/EmbeddedSectionsHighlighting.java
index 964f454..6711aad 100644
--- a/ide/languages.yaml/src/org/netbeans/modules/languages/yaml/EmbeddedSectionsHighlighting.java
+++ b/ide/languages.yaml/src/org/netbeans/modules/languages/yaml/EmbeddedSectionsHighlighting.java
@@ -27,6 +27,7 @@
 import javax.swing.text.Document;
 import javax.swing.text.StyleConstants;
 import org.netbeans.api.editor.mimelookup.MimeLookup;
+import org.netbeans.api.editor.mimelookup.MimeRegistration;
 import org.netbeans.api.editor.settings.AttributesUtilities;
 import org.netbeans.api.editor.settings.FontColorSettings;
 import org.netbeans.api.lexer.TokenHierarchy;
@@ -36,6 +37,7 @@
 import org.netbeans.editor.BaseDocument;
 import org.netbeans.editor.Utilities;
 import org.netbeans.lib.editor.util.swing.DocumentUtilities;
+import static org.netbeans.modules.languages.yaml.YamlTokenId.YAML_MIME_TYPE;
 import org.netbeans.spi.editor.highlighting.HighlightsLayer;
 import org.netbeans.spi.editor.highlighting.HighlightsLayerFactory;
 import org.netbeans.spi.editor.highlighting.HighlightsSequence;
@@ -255,6 +257,7 @@
         }
     } // End of Highlights class
 
+    @MimeRegistration(mimeType = YAML_MIME_TYPE, service = HighlightsLayerFactory.class)
     public static final class Factory implements HighlightsLayerFactory {
 
         @Override
diff --git a/ide/languages.yaml/src/org/netbeans/modules/languages/yaml/YamlDataObject.java b/ide/languages.yaml/src/org/netbeans/modules/languages/yaml/YamlDataObject.java
deleted file mode 100644
index d995063..0000000
--- a/ide/languages.yaml/src/org/netbeans/modules/languages/yaml/YamlDataObject.java
+++ /dev/null
@@ -1,69 +0,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.
- */
-package org.netbeans.modules.languages.yaml;
-
-import java.io.IOException;
-import org.netbeans.core.spi.multiview.MultiViewElement;
-import org.netbeans.core.spi.multiview.text.MultiViewEditorElement;
-import org.openide.filesystems.FileObject;
-import org.openide.loaders.DataNode;
-import org.openide.loaders.DataObjectExistsException;
-import org.openide.loaders.MultiDataObject;
-import org.openide.loaders.MultiFileLoader;
-import org.openide.nodes.Children;
-import org.openide.nodes.Node;
-import org.openide.util.Lookup;
-import org.openide.util.NbBundle;
-import org.openide.windows.TopComponent;
-
-/**
- *
- * @author Ondrej Brejla <obrejla@netbeans.org>
- */
-public class YamlDataObject extends MultiDataObject {
-
-    public YamlDataObject(FileObject pf, MultiFileLoader loader) throws DataObjectExistsException, IOException {
-        super(pf, loader);
-        registerEditor(YamlTokenId.YAML_MIME_TYPE, true);
-    }
-
-    @Override
-    protected Node createNodeDelegate() {
-        return new DataNode(this, Children.LEAF, getLookup());
-    }
-
-    @Override
-    protected int associateLookup() {
-        return 1;
-    }
-
-    @NbBundle.Messages("Source=&Source")
-    @MultiViewElement.Registration(
-            displayName="#Source",
-            iconBase="org/netbeans/modules/languages/yaml/yaml_files_16.png",
-            persistenceType=TopComponent.PERSISTENCE_ONLY_OPENED,
-            mimeType=YamlTokenId.YAML_MIME_TYPE,
-            preferredID="neon.source",
-            position=1
-    )
-    public static MultiViewEditorElement createMultiViewEditorElement(Lookup context) {
-        return new MultiViewEditorElement(context);
-    }
-
-}
diff --git a/ide/languages.yaml/src/org/netbeans/modules/languages/yaml/YamlLanguage.java b/ide/languages.yaml/src/org/netbeans/modules/languages/yaml/YamlLanguage.java
index 420a5ce..218e7e2 100644
--- a/ide/languages.yaml/src/org/netbeans/modules/languages/yaml/YamlLanguage.java
+++ b/ide/languages.yaml/src/org/netbeans/modules/languages/yaml/YamlLanguage.java
@@ -19,6 +19,8 @@
 package org.netbeans.modules.languages.yaml;
 
 import org.netbeans.api.lexer.Language;
+import org.netbeans.core.spi.multiview.MultiViewElement;
+import org.netbeans.core.spi.multiview.text.MultiViewEditorElement;
 import org.netbeans.modules.csl.api.CodeCompletionHandler;
 import org.netbeans.modules.csl.api.InstantRenamer;
 import org.netbeans.modules.csl.api.KeystrokeHandler;
@@ -27,7 +29,11 @@
 import org.netbeans.modules.csl.spi.DefaultLanguageConfig;
 import org.netbeans.modules.csl.spi.LanguageRegistration;
 import org.netbeans.modules.parsing.spi.Parser;
+import org.openide.awt.*;
 import org.openide.filesystems.MIMEResolver;
+import org.openide.util.Lookup;
+import org.openide.util.NbBundle;
+import org.openide.windows.TopComponent;
 
 /**
  * GSF Configuration for YAML
@@ -35,10 +41,68 @@
  * @author Tor Norbye
  */
 @MIMEResolver.ExtensionRegistration(displayName = "#YAMLResolver",
-extension = {"yml", "yaml"},
-mimeType = "text/x-yaml",
-position = 280)
-@LanguageRegistration(mimeType = "text/x-yaml") //NOI18N
+        extension = {"yml", "yaml"},
+        mimeType = "text/x-yaml",
+        position = 280
+)
+@ActionReferences({
+    @ActionReference(
+            path = "Loaders/text/x-yaml/Actions",
+            id = @ActionID(category = "System", id = "org.openide.actions.OpenAction"),
+            position = 100,
+            separatorAfter = 200
+    ),
+    @ActionReference(
+            path = "Loaders/text/x-yaml/Actions",
+            id = @ActionID(category = "Edit", id = "org.openide.actions.CutAction"),
+            position = 300
+    ),
+    @ActionReference(
+            path = "Loaders/text/x-yaml/Actions",
+            id = @ActionID(category = "Edit", id = "org.openide.actions.CopyAction"),
+            position = 400
+    ),
+    @ActionReference(
+            path = "Loaders/text/x-yaml/Actions",
+            id = @ActionID(category = "Edit", id = "org.openide.actions.PasteAction"),
+            position = 500,
+            separatorAfter = 600
+    ),
+    @ActionReference(
+            path = "Loaders/text/x-yaml/Actions",
+            id = @ActionID(category = "Edit", id = "org.openide.actions.DeleteAction"),
+            position = 700
+    ),
+    @ActionReference(
+            path = "Loaders/text/x-yaml/Actions",
+            id = @ActionID(category = "System", id = "org.openide.actions.RenameAction"),
+            position = 800,
+            separatorAfter = 900
+    ),
+    @ActionReference(
+            path = "Loaders/text/x-yaml/Actions",
+            id = @ActionID(category = "System", id = "org.openide.actions.SaveAsTemplateAction"),
+            position = 1000,
+            separatorAfter = 1100
+    ),
+    @ActionReference(
+            path = "Loaders/text/x-yaml/Actions",
+            id = @ActionID(category = "System", id = "org.openide.actions.FileSystemAction"),
+            position = 1200,
+            separatorAfter = 1300
+    ),
+    @ActionReference(
+            path = "Loaders/text/x-yaml/Actions",
+            id = @ActionID(category = "System", id = "org.openide.actions.ToolsAction"),
+            position = 1400
+    ),
+    @ActionReference(
+            path = "Loaders/text/x-yaml/Actions",
+            id = @ActionID(category = "System", id = "org.openide.actions.PropertiesAction"),
+            position = 1500
+    )
+})
+@LanguageRegistration(mimeType = "text/x-yaml", useMultiview = true) //NOI18N
 public class YamlLanguage extends DefaultLanguageConfig {
 
     @Override
@@ -90,4 +154,17 @@
     public InstantRenamer getInstantRenamer() {
         return null;
     }
+
+    @NbBundle.Messages("Source=&Source")
+    @MultiViewElement.Registration(
+            displayName="#Source",
+            iconBase="org/netbeans/modules/languages/yaml/yaml_files_16.png",
+            persistenceType=TopComponent.PERSISTENCE_ONLY_OPENED,
+            mimeType=YamlTokenId.YAML_MIME_TYPE,
+            preferredID="yaml.source",
+            position=100
+    )
+    public static MultiViewEditorElement createMultiViewEditorElement(Lookup context) {
+        return new MultiViewEditorElement(context);
+    }
 }
diff --git a/ide/languages.yaml/src/org/netbeans/modules/languages/yaml/YamlTokenId.java b/ide/languages.yaml/src/org/netbeans/modules/languages/yaml/YamlTokenId.java
index 32f9811..f0fd5f6 100644
--- a/ide/languages.yaml/src/org/netbeans/modules/languages/yaml/YamlTokenId.java
+++ b/ide/languages.yaml/src/org/netbeans/modules/languages/yaml/YamlTokenId.java
@@ -22,6 +22,7 @@
 import java.util.EnumSet;
 import java.util.HashMap;
 import java.util.Map;
+import org.netbeans.api.editor.mimelookup.MimeRegistration;
 
 import org.netbeans.api.lexer.InputAttributes;
 import org.netbeans.api.lexer.Language;
@@ -139,6 +140,7 @@
                 }
             }.language();
 
+    @MimeRegistration(mimeType = YAML_MIME_TYPE, service = Language.class)
     public static Language<YamlTokenId> language() {
         return language;
     }
diff --git a/ide/languages.yaml/src/org/netbeans/modules/languages/yaml/layer.xml b/ide/languages.yaml/src/org/netbeans/modules/languages/yaml/layer.xml
index ac3101a..30d90dc 100644
--- a/ide/languages.yaml/src/org/netbeans/modules/languages/yaml/layer.xml
+++ b/ide/languages.yaml/src/org/netbeans/modules/languages/yaml/layer.xml
@@ -26,19 +26,6 @@
             <folder name="x-yaml">
                 <attr name="SystemFileSystem.localizingBundle" stringvalue="org.netbeans.modules.languages.yaml.Bundle"/>
 
-                <file name="language.instance">
-                    <attr name="instanceCreate" methodvalue="org.netbeans.modules.languages.yaml.YamlTokenId.language"/>
-                    <attr name="instanceOf" stringvalue="org.netbeans.api.lexer.Language"/>
-                </file>
-
-                <file name="org-netbeans-modules-languages-yaml-ruby-RubyEmbeddingProvider$Factory.instance">
-                    <attr name="instanceOf" stringvalue="org.netbeans.modules.parsing.spi.TaskFactory"/>
-                </file>
-
-                <file name="org-netbeans-modules-languages-yaml-EmbeddedSectionsHighlighting$Factory.instance">
-                    <attr name="instanceOf" stringvalue="org.netbeans.spi.editor.highlighting.HighlightsLayerFactory"/>
-                </file>
-
                 <folder name="FontsColors">
                     <folder name="NetBeans">
                         <folder name="Defaults">
@@ -75,7 +62,7 @@
                         <file name="TabsAndIndents.instance">
                             <attr name="instanceOf" stringvalue="org.netbeans.modules.options.editor.spi.PreferencesCustomizer$Factory"/>
                             <attr name="instanceCreate" methodvalue="org.netbeans.modules.options.editor.spi.CustomizerFactories.createDefaultTabsAndIndentsCustomizerFactory"/>
-                            <attr name="previewTextFile" stringvalue="org/netbeans/modules/languages/yaml/YamlExample.html"/>
+                            <attr name="previewTextFile" stringvalue="org/netbeans/modules/languages/yaml/YamlExample.yaml"/>
                             <attr name="position" intvalue="100"/>
                         </file>
                     </folder>
@@ -100,83 +87,6 @@
             <folder name="x-yaml">
                 <attr name="SystemFileSystem.icon" urlvalue="nbresloc:/org/netbeans/modules/languages/yaml/yaml_files_16.png"/>
                 <attr name="iconBase" stringvalue="org/netbeans/modules/languages/yaml/yaml_files_16.png"/>
-                <folder name="Actions">
-                    <file name="CopyAction.shadow">
-                        <attr name="originalFile" stringvalue="Actions/Edit/org-openide-actions-CopyAction.instance"/>
-                        <attr name="position" intvalue="400"/>
-                    </file>
-                    <file name="CutAction.shadow">
-                        <attr name="originalFile" stringvalue="Actions/Edit/org-openide-actions-CutAction.instance"/>
-                        <attr name="position" intvalue="300"/>
-                    </file>
-                    <file name="DeleteAction.shadow">
-                        <attr name="originalFile" stringvalue="Actions/Edit/org-openide-actions-DeleteAction.instance"/>
-                        <attr name="position" intvalue="800"/>
-                    </file>
-                    <file name="FileSystemAction.shadow">
-                        <attr name="originalFile" stringvalue="Actions/System/org-openide-actions-FileSystemAction.instance"/>
-                        <attr name="position" intvalue="1300"/>
-                    </file>
-                    <file name="NewAction.shadow">
-                        <attr name="originalFile" stringvalue="Actions/System/org-openide-actions-NewAction.instance"/>
-                        <attr name="position" intvalue="700"/>
-                    </file>
-                    <file name="OpenAction.shadow">
-                        <attr name="originalFile" stringvalue="Actions/System/org-openide-actions-OpenAction.instance"/>
-                        <attr name="position" intvalue="100"/>
-                    </file>
-                    <file name="PasteAction.shadow">
-                        <attr name="originalFile" stringvalue="Actions/Edit/org-openide-actions-PasteAction.instance"/>
-                        <attr name="position" intvalue="500"/>
-                    </file>
-                    <file name="PropertiesAction.shadow">
-                        <attr name="originalFile" stringvalue="Actions/System/org-openide-actions-PropertiesAction.instance"/>
-                        <attr name="position" intvalue="1600"/>
-                    </file>
-                    <file name="RenameAction.shadow">
-                        <attr name="originalFile" stringvalue="Actions/System/org-openide-actions-RenameAction.instance"/>
-                        <attr name="position" intvalue="900"/>
-                    </file>
-                    <file name="SaveAsTemplateAction.shadow">
-                        <attr name="originalFile" stringvalue="Actions/System/org-openide-actions-SaveAsTemplateAction.instance"/>
-                        <attr name="position" intvalue="1100"/>
-                    </file>
-                    <file name="Separator1.instance">
-                        <attr name="instanceClass" stringvalue="javax.swing.JSeparator"/>
-                        <attr name="position" intvalue="200"/>
-                    </file>
-                    <file name="Separator2.instance">
-                        <attr name="instanceClass" stringvalue="javax.swing.JSeparator"/>
-                        <attr name="position" intvalue="600"/>
-                    </file>
-                    <file name="Separator3.instance">
-                        <attr name="instanceClass" stringvalue="javax.swing.JSeparator"/>
-                        <attr name="position" intvalue="1000"/>
-                    </file>
-                    <file name="Separator4.instance">
-                        <attr name="instanceClass" stringvalue="javax.swing.JSeparator"/>
-                        <attr name="position" intvalue="1200"/>
-                    </file>
-                    <file name="Separator5.instance">
-                        <attr name="instanceClass" stringvalue="javax.swing.JSeparator"/>
-                        <attr name="position" intvalue="1400"/>
-                    </file>
-
-
-                    <file name="ToolsAction.shadow">
-                        <attr name="originalFile" stringvalue="Actions/System/org-openide-actions-ToolsAction.instance"/>
-                        <attr name="position" intvalue="1500"/>
-                    </file>
-                </folder>
-                <folder name="Factories">
-                    <file name="YamlDataLoader.instance">
-                        <attr name="SystemFileSystem.icon" urlvalue="nbresloc:/org/netbeans/modules/languages/yaml/yaml_files_16.png"/>
-                        <attr name="dataObjectClass" stringvalue="org.netbeans.modules.languages.yaml.YamlDataObject"/>
-                        <attr name="instanceCreate" methodvalue="org.openide.loaders.DataLoaderPool.factory"/>
-                        <attr name="mimeType" stringvalue="text/x-yaml"/>
-                        <attr name="position" intvalue="1083"/>
-                    </file>
-                </folder>
             </folder>
         </folder>
     </folder>
diff --git a/ide/languages.yaml/src/org/netbeans/modules/languages/yaml/ruby/RubyEmbeddingProvider.java b/ide/languages.yaml/src/org/netbeans/modules/languages/yaml/ruby/RubyEmbeddingProvider.java
index 44a6ee6..ac73ae9 100644
--- a/ide/languages.yaml/src/org/netbeans/modules/languages/yaml/ruby/RubyEmbeddingProvider.java
+++ b/ide/languages.yaml/src/org/netbeans/modules/languages/yaml/ruby/RubyEmbeddingProvider.java
@@ -24,6 +24,7 @@
 import java.util.List;
 import java.util.logging.Logger;
 import javax.swing.text.Document;
+import org.netbeans.api.editor.mimelookup.MimeRegistration;
 import org.netbeans.api.lexer.Token;
 import org.netbeans.api.lexer.TokenHierarchy;
 import org.netbeans.api.lexer.TokenSequence;
@@ -200,6 +201,7 @@
 //        }
     }
 
+    @MimeRegistration(mimeType = YamlTokenId.YAML_MIME_TYPE, service = TaskFactory.class)
     public static final class Factory extends TaskFactory {
 
         public Factory() {