From 5ef6952ef4fd36949c5617d5a59a5adbec944729 Mon Sep 17 00:00:00 2001 From: Bane Stojkovic Date: Wed, 11 Nov 2026 17:05:44 +0100 Subject: [PATCH] The AI component catalog no longer offers the deprecated inner layers, and lists the new 'Board Side' property --- diylc/catalog_full.json | 237 +++++++++++++++++- diylc/catalog_index.json | 2 +- .../service/ComponentCatalogGenerator.java | 5 +- .../java/org/diylc/utils/ReflectionUtils.java | 12 + .../ComponentCatalogGeneratorTest.java | 11 + .../diylc/swing/gui/editor/EnumEditor.java | 11 +- diylc/docs/plans/copper-side-view.md | 6 +- 7 files changed, 264 insertions(+), 20 deletions(-) diff --git a/diylc/catalog_full.json b/diylc/catalog_full.json index 7c2082202..b55f97ce8 100644 --- a/diylc/catalog_full.json +++ b/diylc/catalog_full.json @@ -1,5 +1,5 @@ { - "version" : "6.10.0", + "version" : "6.11.0", "components" : [ { "name" : "Blank Board", "className" : "boards.BlankBoard", @@ -1035,7 +1035,7 @@ }, { "name" : "Layer", "type" : "PCBLayer", - "possibleValues" : [ "_1", "_2", "_3", "_4", "_5", "_6", "_7", "_8" ], + "possibleValues" : [ "_1", "_2" ], "defaultValue" : "_1" }, { "name" : "Name", @@ -1077,7 +1077,7 @@ }, { "name" : "Layer", "type" : "PCBLayer", - "possibleValues" : [ "_1", "_2", "_3", "_4", "_5", "_6", "_7", "_8" ], + "possibleValues" : [ "_1", "_2" ], "defaultValue" : "_1" }, { "name" : "Name", @@ -1196,6 +1196,11 @@ "creationMethod" : "SINGLE_CLICK", "notes" : [ "A junction marker for schematics and wiring diagrams; it is drawing only and connects nothing, since ends that meet at the same point are already connected. For a pad on a board use Solder Pad" ], "properties" : [ { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" + }, { "name" : "Color", "type" : "Color", "format" : "hex", @@ -1277,7 +1282,7 @@ }, { "name" : "Layer", "type" : "PCBLayer", - "possibleValues" : [ "_1", "_2", "_3", "_4", "_5", "_6", "_7", "_8" ], + "possibleValues" : [ "_1", "_2" ], "defaultValue" : "_1" }, { "name" : "Name", @@ -1459,6 +1464,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Body", "type" : "Color", @@ -1706,7 +1716,7 @@ }, { "name" : "Layer", "type" : "PCBLayer", - "possibleValues" : [ "_1", "_2", "_3", "_4", "_5", "_6", "_7", "_8" ], + "possibleValues" : [ "_1", "_2" ], "defaultValue" : "_1" }, { "name" : "Node Name", @@ -7155,6 +7165,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Font Size Override", "type" : "Integer" @@ -7228,6 +7243,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Font Size Override", "type" : "Integer" @@ -7306,6 +7326,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Font Size Override", "type" : "Integer" @@ -7746,6 +7771,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Display", "type" : "Display", @@ -7851,6 +7881,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Body", "type" : "Color", @@ -8509,6 +8544,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Name", "type" : "String" @@ -8577,6 +8617,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Font Size Override", "type" : "Integer" @@ -8645,6 +8690,11 @@ }, { "name" : "Angle Offset", "type" : "Angle" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Color", "type" : "Color", @@ -9035,6 +9085,11 @@ }, { "name" : "Angle", "type" : "Angle" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Color", "type" : "Color", @@ -9372,6 +9427,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Body", "type" : "Color", @@ -9496,6 +9556,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Body", "type" : "Color", @@ -11842,6 +11907,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Border", "type" : "Color", @@ -11970,7 +12040,7 @@ }, { "name" : "Layer", "type" : "PCBLayer", - "possibleValues" : [ "_1", "_2", "_3", "_4", "_5", "_6", "_7", "_8" ], + "possibleValues" : [ "_1", "_2" ], "defaultValue" : "_1" }, { "name" : "Orientation", @@ -12082,6 +12152,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Border", "type" : "Color", @@ -12170,6 +12245,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Border", "type" : "Color", @@ -12252,6 +12332,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Border", "type" : "Color", @@ -12367,6 +12452,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Border", "type" : "Color", @@ -12492,6 +12582,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Border", "type" : "Color", @@ -12589,6 +12684,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Border", "type" : "Color", @@ -12693,6 +12793,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Border", "type" : "Color", @@ -12804,6 +12909,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Border", "type" : "Color", @@ -12913,6 +13023,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Border", "type" : "Color", @@ -12994,6 +13109,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Border", "type" : "Color", @@ -13083,6 +13203,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Coil", "type" : "Color", @@ -13222,6 +13347,11 @@ "type" : "Color", "format" : "hex", "defaultValue" : "#333333" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Body", "type" : "Color", @@ -13301,6 +13431,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Body", "type" : "Color", @@ -13459,6 +13594,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Body", "type" : "Color", @@ -13527,6 +13667,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Border", "type" : "Color", @@ -13621,6 +13766,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Border", "type" : "Color", @@ -13728,6 +13878,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Body", "type" : "Color", @@ -13786,6 +13941,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Body", "type" : "Color", @@ -13844,6 +14004,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Body", "type" : "Color", @@ -16501,6 +16666,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Body", "type" : "Color", @@ -16574,6 +16744,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Body", "type" : "Color", @@ -16837,6 +17012,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Border", "type" : "Color", @@ -16930,6 +17110,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Border", "type" : "Color", @@ -17017,6 +17202,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Color", "type" : "Color", @@ -17102,6 +17292,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Body", "type" : "Color", @@ -17263,6 +17458,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Body", "type" : "Color", @@ -17344,6 +17544,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Body", "type" : "Color", @@ -17779,6 +17984,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Body", "type" : "Color", @@ -18210,6 +18420,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Body", "type" : "Color", @@ -19072,6 +19287,11 @@ "type" : "Percentage", "format" : "number without the % sign, e.g. 100", "defaultValue" : "100" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Body", "type" : "Color", @@ -20011,6 +20231,11 @@ "type" : "Base", "possibleValues" : [ "B9A", "OCTAL", "B7G", "B12C", "UX4" ], "defaultValue" : "B9A" + }, { + "name" : "Board Side", + "type" : "PCBLayer", + "possibleValues" : [ "_1", "_2" ], + "defaultValue" : "_2" }, { "name" : "Color", "type" : "Color", diff --git a/diylc/catalog_index.json b/diylc/catalog_index.json index 14b90a552..90e25d3ab 100644 --- a/diylc/catalog_index.json +++ b/diylc/catalog_index.json @@ -1,5 +1,5 @@ { - "version" : "6.10.0", + "version" : "6.11.0", "categories" : { "Boards" : [ { "name" : "Blank Board", diff --git a/diylc/diylc-core/src/main/java/org/diylc/plugins/chatbot/service/ComponentCatalogGenerator.java b/diylc/diylc-core/src/main/java/org/diylc/plugins/chatbot/service/ComponentCatalogGenerator.java index 9c2742ae9..e9eb5c2ec 100644 --- a/diylc/diylc-core/src/main/java/org/diylc/plugins/chatbot/service/ComponentCatalogGenerator.java +++ b/diylc/diylc-core/src/main/java/org/diylc/plugins/chatbot/service/ComponentCatalogGenerator.java @@ -54,6 +54,7 @@ import org.diylc.presenter.ComparatorFactory; import org.diylc.presenter.ComponentProcessor; import org.diylc.presenter.DatasheetService; import org.diylc.presenter.ReleaseHistory; +import org.diylc.utils.ReflectionUtils; /** * Standalone tool that generates component catalog JSON files from the current codebase. @@ -227,9 +228,11 @@ public class ComponentCatalogGenerator { } } - // Include enum possible values (using name() instead of toString()) + // Include enum possible values (using name() instead of toString()), leaving out the + // deprecated ones the editor does not offer either if (propType.isEnum()) { List possibleValues = Arrays.stream(propType.getEnumConstants()) + .filter(e -> !ReflectionUtils.isDeprecated((Enum) e)) .map(e -> ((Enum) e).name()) .collect(Collectors.toList()); prop.put("possibleValues", possibleValues); diff --git a/diylc/diylc-core/src/main/java/org/diylc/utils/ReflectionUtils.java b/diylc/diylc-core/src/main/java/org/diylc/utils/ReflectionUtils.java index 3e4797f1a..ecf3d0d3f 100644 --- a/diylc/diylc-core/src/main/java/org/diylc/utils/ReflectionUtils.java +++ b/diylc/diylc-core/src/main/java/org/diylc/utils/ReflectionUtils.java @@ -148,4 +148,16 @@ public class ReflectionUtils { } return result.get(0); } + + /** + * @return true when the enum constant is marked {@link Deprecated}; such values are kept only so + * that old files load, and are not offered for new choices + */ + public static boolean isDeprecated(Enum value) { + try { + return value.getDeclaringClass().getField(value.name()).isAnnotationPresent(Deprecated.class); + } catch (NoSuchFieldException e) { + return false; + } + } } diff --git a/diylc/diylc-library/src/test/java/org/diylc/plugins/chatbot/service/ComponentCatalogGeneratorTest.java b/diylc/diylc-library/src/test/java/org/diylc/plugins/chatbot/service/ComponentCatalogGeneratorTest.java index 92e6c16bc..77df436f3 100644 --- a/diylc/diylc-library/src/test/java/org/diylc/plugins/chatbot/service/ComponentCatalogGeneratorTest.java +++ b/diylc/diylc-library/src/test/java/org/diylc/plugins/chatbot/service/ComponentCatalogGeneratorTest.java @@ -96,6 +96,10 @@ public class ComponentCatalogGeneratorTest { (List>) togglePinout.get("variants"); assertTrue("every switch type should be described", variants.size() > 1); assertTrue("a switch carries its switching table", variants.get(0).containsKey("switching")); + + // the deprecated inner layers are kept only so that old files load + Map layer = findProperty(find(components, "connectivity.CopperTrace"), "Layer"); + assertEquals(List.of("_1", "_2"), layer.get("possibleValues")); } @Test @@ -112,6 +116,13 @@ public class ComponentCatalogGeneratorTest { ComponentCatalogGenerator.collectNotes(Leaf.class, EnumSet.of(Scope.SELECTION))); } + @SuppressWarnings("unchecked") + private static Map findProperty(Map component, String name) { + return ((List>) component.get("properties")).stream() + .filter(p -> name.equals(p.get("name"))).findFirst() + .orElseThrow(() -> new AssertionError("no property " + name)); + } + private static Map find(List> components, String className) { return components.stream().filter(c -> className.equals(c.get("className"))).findFirst() .orElseThrow(() -> new AssertionError("no catalog entry for " + className)); diff --git a/diylc/diylc-swing/src/main/java/org/diylc/swing/gui/editor/EnumEditor.java b/diylc/diylc-swing/src/main/java/org/diylc/swing/gui/editor/EnumEditor.java index d0b8e9cef..42758fe36 100644 --- a/diylc/diylc-swing/src/main/java/org/diylc/swing/gui/editor/EnumEditor.java +++ b/diylc/diylc-swing/src/main/java/org/diylc/swing/gui/editor/EnumEditor.java @@ -35,6 +35,7 @@ import javax.swing.JList; import org.diylc.common.PropertyWrapper; import org.diylc.lang.LangUtil; import org.diylc.utils.Constants; +import org.diylc.utils.ReflectionUtils; public class EnumEditor extends JComboBox { @@ -84,18 +85,10 @@ public class EnumEditor extends JComboBox { private static Object[] getOfferedValues(PropertyWrapper property) { List values = new ArrayList(); for (Object value : property.getType().getEnumConstants()) { - if (value.equals(property.getValue()) || !isDeprecated((Enum) value)) { + if (value.equals(property.getValue()) || !ReflectionUtils.isDeprecated((Enum) value)) { values.add(value); } } return values.toArray(); } - - private static boolean isDeprecated(Enum value) { - try { - return value.getDeclaringClass().getField(value.name()).isAnnotationPresent(Deprecated.class); - } catch (NoSuchFieldException e) { - return false; - } - } } diff --git a/diylc/docs/plans/copper-side-view.md b/diylc/docs/plans/copper-side-view.md index 48ac77f75..300af52a9 100644 --- a/diylc/docs/plans/copper-side-view.md +++ b/diylc/docs/plans/copper-side-view.md @@ -74,14 +74,14 @@ were regenerated for the faded copper. The open questions below remain. - The **Fade Copper Under Board** checkbox is in the Config menu after Extra Working Area. `CanvasPanel.getDrawOptions` and `ProjectDrawingProvider.draw` add `FADE_FAR_SIDE` from it. -- `EnumEditor` hides `@Deprecated` constants unless one is the current value. +- `EnumEditor` hides `@Deprecated` constants unless one is the current value, and + `ComponentCatalogGenerator` leaves them out of the AI catalog's possible values; both use + `ReflectionUtils.isDeprecated`. - The language key **Fade Copper Under Board** is in every file in `lang/`. ## 4. Open questions - **`EurorackStripboard`.** Unchanged until the side of its traces is sourced. -- **AI catalog.** `ComponentCatalogGenerator` still lists the deprecated inner layers as possible - values. ## 5. Verification