This is an automated email from the ASF dual-hosted git repository.

veithen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ws-axiom.git


The following commit(s) were added to refs/heads/master by this push:
     new 20d2b40b9 Use new-style arrow switch where possible
20d2b40b9 is described below

commit 20d2b40b9b27bbeca487961a7869441ef4f17bad
Author: Andreas Veithen <[email protected]>
AuthorDate: Sun Jan 11 11:52:24 2026 +0000

    Use new-style arrow switch where possible
---
 .../main/java/org/apache/axiom/mime/PartImpl.java  |  14 +-
 .../org/apache/axiom/util/base64/Base64Utils.java  |  36 ++--
 .../axiom/util/stax/TextFromElementReader.java     |  12 +-
 .../axiom/util/stax/XMLFragmentStreamReader.java   |  85 ++++----
 .../axiom/util/stax/XMLStreamReaderUtils.java      |  10 +-
 .../util/stax/debug/XMLStreamReaderValidator.java  |  60 +++---
 .../axiom/util/stax/dialect/AbstractDTDReader.java |   7 +-
 .../util/stax/dialect/BEAStreamReaderWrapper.java  |   7 +-
 .../util/stax/dialect/EncodingDetectionHelper.java |  40 ++--
 .../axiom/util/stax/AbstractXMLStreamReader.java   |  19 +-
 .../org/apache/axiom/util/stax/XMLEventUtils.java  |  53 ++---
 .../axiom/attachments/ConfigurableDataHandler.java |  18 +-
 .../axiom/core/stream/dom/input/DOMReader.java     |  48 +++--
 .../sax/output/ContentHandlerXmlHandler.java       |  14 +-
 .../axiom/core/stream/serializer/Serializer.java   |  31 ++-
 .../serializer/writer/OutputStreamXmlWriter.java   |  13 +-
 .../stream/stax/pull/input/StAXPullReader.java     |  73 +++----
 .../core/stream/stax/pull/output/StAXPivot.java    | 213 ++++++++-------------
 .../xop/AbstractXOPDecodingFilterHandler.java      |  12 +-
 .../axiom/util/xml/stream/XMLEventUtils.java       |  53 ++---
 .../axiom/core/impl/AbstractNodeIterator.java      |   8 +-
 .../org/apache/axiom/core/impl/TreeWalkerImpl.java |  53 ++---
 .../axiom/core/impl/mixin/CoreChildNodeMixin.java  |   8 +-
 .../axiom/core/impl/mixin/CoreParentNodeMixin.java |  22 +--
 .../axiom/dom/impl/mixin/DOMDocumentMixin.java     |  12 +-
 .../om/impl/common/factory/OMFactoryImpl.java      | 113 +++++------
 .../om/impl/common/factory/meta/BuilderSpec.java   |  17 +-
 .../om/impl/mixin/AxiomCoreParentNodeMixin.java    |  17 +-
 .../axiom/om/impl/mixin/AxiomElementMixin.java     |  12 +-
 .../stream/stax/pull/CharacterDataReaderImpl.java  |  13 +-
 pom.xml                                            |   2 +-
 .../org/apache/axiom/test/UsesConstraintsTest.java |   7 +-
 .../ts/om/container/DocumentElementExtractor.java  |  13 +-
 .../ts/om/container/RootWhitespaceFilter.java      |  13 +-
 .../org/apache/axiom/truth/AxiomTraverser.java     |  49 ++---
 .../apache/axiom/ts/xml/XMLSampleProperties.java   |   8 +-
 .../org/apache/axiom/truth/xml/DOMTraverser.java   |  30 +--
 .../org/apache/axiom/truth/xml/StAXTraverser.java  |  55 +++---
 .../org/apache/axiom/truth/xml/XMLSubject.java     |  30 ++-
 39 files changed, 558 insertions(+), 742 deletions(-)

diff --git a/axiom-api/src/main/java/org/apache/axiom/mime/PartImpl.java 
b/axiom-api/src/main/java/org/apache/axiom/mime/PartImpl.java
index 15a71be44..535a6644a 100644
--- a/axiom-api/src/main/java/org/apache/axiom/mime/PartImpl.java
+++ b/axiom-api/src/main/java/org/apache/axiom/mime/PartImpl.java
@@ -191,7 +191,7 @@ final class PartImpl implements Part {
     @Override
     public void fetch() {
         switch (state) {
-            case STATE_UNREAD:
+            case STATE_UNREAD -> {
                 checkParserState(parser.getState(), EntityState.T_BODY);
 
                 content = blobFactory.createBlob();
@@ -212,8 +212,8 @@ final class PartImpl implements Part {
                 }
                 moveToNextPart();
                 state = STATE_BUFFERED;
-                break;
-            case STATE_STREAMING:
+            }
+            case STATE_STREAMING -> {
                 // If the stream is still open, buffer the remaining content
                 try {
                     partInputStream.detach();
@@ -223,6 +223,7 @@ final class PartImpl implements Part {
                 partInputStream = null;
                 moveToNextPart();
                 state = STATE_DISCARDED;
+            }
         }
     }
 
@@ -271,16 +272,15 @@ final class PartImpl implements Part {
     public void discard() {
         try {
             switch (state) {
-                case STATE_UNREAD:
+                case STATE_UNREAD -> {
                     EntityState parserState;
                     do {
                         parserState = parser.next();
                     } while (parserState != EntityState.T_START_BODYPART
                             && parserState != EntityState.T_END_MULTIPART);
                     state = STATE_DISCARDED;
-                    break;
-                case STATE_BUFFERED:
-                    content.release();
+                }
+                case STATE_BUFFERED -> content.release();
             }
         } catch (MimeException ex) {
             throw new MIMEException(ex);
diff --git 
a/axiom-api/src/main/java/org/apache/axiom/util/base64/Base64Utils.java 
b/axiom-api/src/main/java/org/apache/axiom/util/base64/Base64Utils.java
index f045486db..fae57c1da 100644
--- a/axiom-api/src/main/java/org/apache/axiom/util/base64/Base64Utils.java
+++ b/axiom-api/src/main/java/org/apache/axiom/util/base64/Base64Utils.java
@@ -84,22 +84,24 @@ public class Base64Utils {
         int b1 = Base64Constants.S_DECODETABLE[ibuf[1]];
         int b2 = Base64Constants.S_DECODETABLE[ibuf[2]];
         int b3 = Base64Constants.S_DECODETABLE[ibuf[3]];
-        switch (outlen) {
-            case 1:
+        return switch (outlen) {
+            case 1 -> {
                 obuf[wp] = (byte) (b0 << 2 & 0xfc | b1 >> 4 & 0x3);
-                return 1;
-            case 2:
+                yield 1;
+            }
+            case 2 -> {
                 obuf[wp++] = (byte) (b0 << 2 & 0xfc | b1 >> 4 & 0x3);
                 obuf[wp] = (byte) (b1 << 4 & 0xf0 | b2 >> 2 & 0xf);
-                return 2;
-            case 3:
+                yield 2;
+            }
+            case 3 -> {
                 obuf[wp++] = (byte) (b0 << 2 & 0xfc | b1 >> 4 & 0x3);
                 obuf[wp++] = (byte) (b1 << 4 & 0xf0 | b2 >> 2 & 0xf);
                 obuf[wp] = (byte) (b2 << 6 & 0xc0 | b3 & 0x3f);
-                return 3;
-            default:
-                throw new RuntimeException("internalError00");
-        }
+                yield 3;
+            }
+            default -> throw new RuntimeException("internalError00");
+        };
     }
 
     /**
@@ -142,22 +144,22 @@ public class Base64Utils {
         int padding = 0;
         for (int i = 0; i < data.length(); i++) {
             switch (Base64Constants.S_DECODETABLE[data.charAt(i)]) {
-                case Base64Constants.PADDING:
+                case Base64Constants.PADDING -> {
                     if (padding == 2) {
                         throw new IllegalArgumentException("Too much padding");
                     }
                     padding++;
-                    break;
-                case Base64Constants.WHITE_SPACE:
-                    break;
-                case Base64Constants.INVALID:
-                    throw new IllegalArgumentException("Invalid character 
encountered");
-                default:
+                }
+                case Base64Constants.WHITE_SPACE -> {}
+                case Base64Constants.INVALID ->
+                        throw new IllegalArgumentException("Invalid character 
encountered");
+                default -> {
                     // Padding can only occur at the end
                     if (padding > 0) {
                         throw new IllegalArgumentException("Unexpected padding 
character");
                     }
                     symbols++;
+                }
             }
         }
         if ((symbols + padding) % 4 != 0) {
diff --git 
a/axiom-api/src/main/java/org/apache/axiom/util/stax/TextFromElementReader.java 
b/axiom-api/src/main/java/org/apache/axiom/util/stax/TextFromElementReader.java
index 3a8767e44..5e07cdf85 100644
--- 
a/axiom-api/src/main/java/org/apache/axiom/util/stax/TextFromElementReader.java
+++ 
b/axiom-api/src/main/java/org/apache/axiom/util/stax/TextFromElementReader.java
@@ -83,27 +83,27 @@ class TextFromElementReader extends Reader {
                     while (true) {
                         int type = stream.next();
                         switch (type) {
-                            case XMLStreamReader.CHARACTERS:
-                            case XMLStreamReader.CDATA:
+                            case XMLStreamReader.CHARACTERS, 
XMLStreamReader.CDATA -> {
                                 if (skipDepth == 0) {
                                     sourceStart = 0;
                                     break eventLoop;
                                 }
-                                break;
-                            case XMLStreamReader.START_ELEMENT:
+                            }
+                            case XMLStreamReader.START_ELEMENT -> {
                                 if (allowNonTextChildren) {
                                     skipDepth++;
                                 } else {
                                     throw new IOException("Unexpected 
START_ELEMENT event");
                                 }
-                                break;
-                            case XMLStreamReader.END_ELEMENT:
+                            }
+                            case XMLStreamReader.END_ELEMENT -> {
                                 if (skipDepth == 0) {
                                     endOfStream = true;
                                     return read == 0 ? -1 : read;
                                 } else {
                                     skipDepth--;
                                 }
+                            }
                         }
                     }
                 }
diff --git 
a/axiom-api/src/main/java/org/apache/axiom/util/stax/XMLFragmentStreamReader.java
 
b/axiom-api/src/main/java/org/apache/axiom/util/stax/XMLFragmentStreamReader.java
index 951325287..5987a2833 100644
--- 
a/axiom-api/src/main/java/org/apache/axiom/util/stax/XMLFragmentStreamReader.java
+++ 
b/axiom-api/src/main/java/org/apache/axiom/util/stax/XMLFragmentStreamReader.java
@@ -106,76 +106,70 @@ public class XMLFragmentStreamReader implements 
XMLStreamReader {
 
     @Override
     public int getEventType() {
-        switch (state) {
-            case STATE_START_DOCUMENT:
-                return START_DOCUMENT;
-            case STATE_IN_FRAGMENT:
-                return parent.getEventType();
-            case STATE_FRAGMENT_END:
-                return END_ELEMENT;
-            case STATE_END_DOCUMENT:
-                return END_DOCUMENT;
-            default:
-                // We will never get here; just make the compiler happy.
-                throw new IllegalStateException();
-        }
+        return switch (state) {
+            case STATE_START_DOCUMENT -> START_DOCUMENT;
+            case STATE_IN_FRAGMENT -> parent.getEventType();
+            case STATE_FRAGMENT_END -> END_ELEMENT;
+            case STATE_END_DOCUMENT -> END_DOCUMENT;
+            default -> throw new IllegalStateException();
+        };
     }
 
     @Override
     public int next() throws XMLStreamException {
-        switch (state) {
-            case STATE_START_DOCUMENT:
+        return switch (state) {
+            case STATE_START_DOCUMENT -> {
                 state = STATE_IN_FRAGMENT;
-                return START_ELEMENT;
-            case STATE_IN_FRAGMENT:
+                yield START_ELEMENT;
+            }
+            case STATE_IN_FRAGMENT -> {
                 int type = parent.next();
                 switch (type) {
-                    case START_ELEMENT:
-                        depth++;
-                        break;
-                    case END_ELEMENT:
+                    case START_ELEMENT -> depth++;
+                    case END_ELEMENT -> {
                         if (depth == 0) {
                             state = STATE_FRAGMENT_END;
                         } else {
                             depth--;
                         }
+                    }
                 }
-                return type;
-            case STATE_FRAGMENT_END:
+                yield type;
+            }
+            case STATE_FRAGMENT_END -> {
                 if (proceedToNext) {
                     parent.next();
                 }
                 state = STATE_END_DOCUMENT;
-                return END_DOCUMENT;
-            default:
-                throw new NoSuchElementException("End of document reached");
-        }
+                yield END_DOCUMENT;
+            }
+            default -> throw new NoSuchElementException("End of document 
reached");
+        };
     }
 
     @Override
     public int nextTag() throws XMLStreamException {
-        switch (state) {
-            case STATE_START_DOCUMENT:
+        return switch (state) {
+            case STATE_START_DOCUMENT -> {
                 state = STATE_IN_FRAGMENT;
-                return START_ELEMENT;
-            case STATE_END_DOCUMENT:
-            case STATE_FRAGMENT_END:
-                throw new NoSuchElementException();
-            default:
+                yield START_ELEMENT;
+            }
+            case STATE_END_DOCUMENT, STATE_FRAGMENT_END -> throw new 
NoSuchElementException();
+            default -> {
                 int result = parent.nextTag();
                 switch (result) {
-                    case START_ELEMENT:
-                        depth++;
-                        break;
-                    case END_ELEMENT:
+                    case START_ELEMENT -> depth++;
+                    case END_ELEMENT -> {
                         if (depth == 0) {
                             state = STATE_FRAGMENT_END;
                         } else {
                             depth--;
                         }
+                    }
                 }
-                return result;
-        }
+                yield result;
+            }
+        };
     }
 
     @Override
@@ -507,18 +501,17 @@ public class XMLFragmentStreamReader implements 
XMLStreamReader {
     @Override
     public void require(int type, String namespaceURI, String localName) 
throws XMLStreamException {
         switch (state) {
-            case STATE_START_DOCUMENT:
+            case STATE_START_DOCUMENT -> {
                 if (type != START_DOCUMENT) {
                     throw new XMLStreamException("Expected START_DOCUMENT");
                 }
-                break;
-            case STATE_END_DOCUMENT:
+            }
+            case STATE_END_DOCUMENT -> {
                 if (type != END_DOCUMENT) {
                     throw new XMLStreamException("Expected END_DOCUMENT");
                 }
-                break;
-            default:
-                parent.require(type, namespaceURI, localName);
+            }
+            default -> parent.require(type, namespaceURI, localName);
         }
     }
 }
diff --git 
a/axiom-api/src/main/java/org/apache/axiom/util/stax/XMLStreamReaderUtils.java 
b/axiom-api/src/main/java/org/apache/axiom/util/stax/XMLStreamReaderUtils.java
index 03139847c..d0edb0ac6 100644
--- 
a/axiom-api/src/main/java/org/apache/axiom/util/stax/XMLStreamReaderUtils.java
+++ 
b/axiom-api/src/main/java/org/apache/axiom/util/stax/XMLStreamReaderUtils.java
@@ -119,13 +119,11 @@ public class XMLStreamReaderUtils {
                 loop:
                 while (true) {
                     switch (reader.next()) {
-                        case XMLStreamConstants.CHARACTERS:
-                            writeTextTo(reader, out);
-                            break;
-                        case XMLStreamConstants.END_ELEMENT:
+                        case XMLStreamConstants.CHARACTERS -> 
writeTextTo(reader, out);
+                        case XMLStreamConstants.END_ELEMENT -> {
                             break loop;
-                        default:
-                            throw new XMLStreamException("Expected a CHARACTER 
event");
+                        }
+                        default -> throw new XMLStreamException("Expected a 
CHARACTER event");
                     }
                 }
                 out.close();
diff --git 
a/axiom-api/src/main/java/org/apache/axiom/util/stax/debug/XMLStreamReaderValidator.java
 
b/axiom-api/src/main/java/org/apache/axiom/util/stax/debug/XMLStreamReaderValidator.java
index 0da7736ef..cfdaa5bc9 100644
--- 
a/axiom-api/src/main/java/org/apache/axiom/util/stax/debug/XMLStreamReaderValidator.java
+++ 
b/axiom-api/src/main/java/org/apache/axiom/util/stax/debug/XMLStreamReaderValidator.java
@@ -83,10 +83,8 @@ public class XMLStreamReaderValidator extends 
XMLStreamReaderWrapper {
         // Mismatched events are a key indication that the delegate stream 
reader is
         // broken or corrupted.
         switch (event) {
-            case XMLStreamConstants.START_ELEMENT:
-                stack.push(super.getName());
-                break;
-            case XMLStreamConstants.END_ELEMENT:
+            case XMLStreamConstants.START_ELEMENT -> 
stack.push(super.getName());
+            case XMLStreamConstants.END_ELEMENT -> {
                 QName delegateQName = super.getName();
                 if (stack.isEmpty()) {
                     reportError(
@@ -105,15 +103,14 @@ public class XMLStreamReaderValidator extends 
XMLStreamReaderWrapper {
                                         + " event.");
                     }
                 }
-                break;
-            case XMLStreamConstants.END_DOCUMENT:
+            }
+            case XMLStreamConstants.END_DOCUMENT -> {
                 if (!stack.isEmpty()) {
                     reportError(
                             "An unexpected END_DOCUMENT event was encountered; 
element stack: "
                                     + stack);
                 }
-                break;
-            default:
+            }
         }
     }
 
@@ -130,50 +127,45 @@ public class XMLStreamReaderValidator extends 
XMLStreamReaderWrapper {
             int currentEvent = super.getEventType();
 
             switch (currentEvent) {
-                case XMLStreamConstants.START_ELEMENT:
+                case XMLStreamConstants.START_ELEMENT -> {
                     log.trace("START_ELEMENT: ");
                     log.trace("  QName: " + super.getName());
-                    break;
-                case XMLStreamConstants.START_DOCUMENT:
-                    log.trace("START_DOCUMENT: ");
-                    break;
-                case XMLStreamConstants.CHARACTERS:
+                }
+                case XMLStreamConstants.START_DOCUMENT -> 
log.trace("START_DOCUMENT: ");
+                case XMLStreamConstants.CHARACTERS -> {
                     log.trace("CHARACTERS: ");
                     log.trace("[" + super.getText() + "]");
-                    break;
-                case XMLStreamConstants.CDATA:
+                }
+                case XMLStreamConstants.CDATA -> {
                     log.trace("CDATA: ");
                     log.trace("[" + super.getText() + "]");
-                    break;
-                case XMLStreamConstants.END_ELEMENT:
+                }
+                case XMLStreamConstants.END_ELEMENT -> {
                     log.trace("END_ELEMENT: ");
                     log.trace("  QName: " + super.getName());
-                    break;
-                case XMLStreamConstants.END_DOCUMENT:
-                    log.trace("END_DOCUMENT: ");
-                    break;
-                case XMLStreamConstants.SPACE:
+                }
+                case XMLStreamConstants.END_DOCUMENT -> 
log.trace("END_DOCUMENT: ");
+                case XMLStreamConstants.SPACE -> {
                     log.trace("SPACE: ");
                     log.trace("[" + super.getText() + "]");
-                    break;
-                case XMLStreamConstants.COMMENT:
+                }
+                case XMLStreamConstants.COMMENT -> {
                     log.trace("COMMENT: ");
                     log.trace("[" + super.getText() + "]");
-                    break;
-                case XMLStreamConstants.DTD:
+                }
+                case XMLStreamConstants.DTD -> {
                     log.trace("DTD: ");
                     log.trace("[" + super.getText() + "]");
-                    break;
-                case XMLStreamConstants.PROCESSING_INSTRUCTION:
+                }
+                case XMLStreamConstants.PROCESSING_INSTRUCTION -> {
                     log.trace("PROCESSING_INSTRUCTION: ");
                     log.trace("   [" + super.getPITarget() + "][" + 
super.getPIData() + "]");
-                    break;
-                case XMLStreamConstants.ENTITY_REFERENCE:
+                }
+                case XMLStreamConstants.ENTITY_REFERENCE -> {
                     log.trace("ENTITY_REFERENCE: ");
                     log.trace("    " + super.getLocalName() + "[" + 
super.getText() + "]");
-                    break;
-                default:
-                    log.trace("UNKNOWN_STATE: " + currentEvent);
+                }
+                default -> log.trace("UNKNOWN_STATE: " + currentEvent);
             }
         }
     }
diff --git 
a/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/AbstractDTDReader.java
 
b/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/AbstractDTDReader.java
index dc4d519d3..bee52eeeb 100644
--- 
a/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/AbstractDTDReader.java
+++ 
b/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/AbstractDTDReader.java
@@ -44,17 +44,18 @@ abstract class AbstractDTDReader implements DTDReader {
                 rootName = scanner.getName();
                 scanner.skipSpace();
                 switch (scanner.peek()) {
-                    case 'S':
+                    case 'S' -> {
                         scanner.expect("SYSTEM");
                         scanner.skipSpace();
                         systemId = scanner.getQuotedString();
-                        break;
-                    case 'P':
+                    }
+                    case 'P' -> {
                         scanner.expect("PUBLIC");
                         scanner.skipSpace();
                         publicId = scanner.getQuotedString();
                         scanner.skipSpace();
                         systemId = scanner.getQuotedString();
+                    }
                 }
             } catch (XMLStreamException ex) {
                 throw new RuntimeException("Unable to parse DOCTYPE 
declaration", ex);
diff --git 
a/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/BEAStreamReaderWrapper.java
 
b/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/BEAStreamReaderWrapper.java
index 2f1711ef3..ff5692baa 100644
--- 
a/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/BEAStreamReaderWrapper.java
+++ 
b/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/BEAStreamReaderWrapper.java
@@ -81,11 +81,8 @@ class BEAStreamReaderWrapper extends XMLStreamReaderWrapper {
         } else {
             int event = super.next();
             switch (event) {
-                case START_ELEMENT:
-                    depth++;
-                    break;
-                case END_ELEMENT:
-                    depth--;
+                case START_ELEMENT -> depth++;
+                case END_ELEMENT -> depth--;
             }
             return event;
         }
diff --git 
a/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/EncodingDetectionHelper.java
 
b/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/EncodingDetectionHelper.java
index 84e89a04e..4095de068 100644
--- 
a/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/EncodingDetectionHelper.java
+++ 
b/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/EncodingDetectionHelper.java
@@ -72,30 +72,28 @@ class EncodingDetectionHelper {
                         + ((startBytes[1] & 0xFF) << 16)
                         + ((startBytes[2] & 0xFF) << 8)
                         + (startBytes[3] & 0xFF);
-        switch (marker) {
-            case 0x0000FEFF:
-            case 0xFFFE0000:
-            case 0x0000FFFE:
-            case 0xFEFF0000:
-            case 0x0000003C:
-            case 0x3C000000:
-            case 0x00003C00:
-            case 0x003C0000:
-                return "UCS-4";
-            case 0x003C003F:
-                return "UTF-16BE";
-            case 0x3C003F00:
-                return "UTF-16LE";
-            case 0x3C3F786D:
-                return "UTF-8";
-            default:
+        return switch (marker) {
+            case 0x0000FEFF,
+                    0xFFFE0000,
+                    0x0000FFFE,
+                    0xFEFF0000,
+                    0x0000003C,
+                    0x3C000000,
+                    0x00003C00,
+                    0x003C0000 ->
+                    "UCS-4";
+            case 0x003C003F -> "UTF-16BE";
+            case 0x3C003F00 -> "UTF-16LE";
+            case 0x3C3F786D -> "UTF-8";
+            default -> {
                 if ((marker & 0xFFFF0000) == 0xFEFF0000) {
-                    return "UTF-16BE";
+                    yield "UTF-16BE";
                 } else if ((marker & 0xFFFF0000) == 0xFFFE0000) {
-                    return "UTF-16LE";
+                    yield "UTF-16LE";
                 } else {
-                    return "UTF-8";
+                    yield "UTF-8";
                 }
-        }
+            }
+        };
     }
 }
diff --git 
a/axiom-compat/src/main/java/org/apache/axiom/util/stax/AbstractXMLStreamReader.java
 
b/axiom-compat/src/main/java/org/apache/axiom/util/stax/AbstractXMLStreamReader.java
index 842cfe427..aa552b070 100644
--- 
a/axiom-compat/src/main/java/org/apache/axiom/util/stax/AbstractXMLStreamReader.java
+++ 
b/axiom-compat/src/main/java/org/apache/axiom/util/stax/AbstractXMLStreamReader.java
@@ -92,25 +92,26 @@ public abstract class AbstractXMLStreamReader implements 
XMLStreamReader {
 
     @Override
     public boolean isWhiteSpace() {
-        switch (getEventType()) {
-            case SPACE:
-                return true;
-            case CHARACTERS:
+        return switch (getEventType()) {
+            case SPACE -> true;
+            case CHARACTERS -> {
                 // XMLStreamReader Javadoc says that isWhiteSpace "returns 
true if the cursor
                 // points to a character data event that consists of all 
whitespace". This
                 // means that this method may return true for a CHARACTER 
event and we need
                 // to scan the text of the node.
                 String text = getText();
+                boolean ok = true;
                 for (int i = 0; i < text.length(); i++) {
                     char c = text.charAt(i);
                     if (c != ' ' && c != '\t' && c != '\r' && c != '\n') {
-                        return false;
+                        ok = false;
+                        break;
                     }
                 }
-                return true;
-            default:
-                return false;
-        }
+                yield ok;
+            }
+            default -> false;
+        };
     }
 
     @Override
diff --git 
a/axiom-compat/src/main/java/org/apache/axiom/util/stax/XMLEventUtils.java 
b/axiom-compat/src/main/java/org/apache/axiom/util/stax/XMLEventUtils.java
index f769e6d9d..51934191c 100644
--- a/axiom-compat/src/main/java/org/apache/axiom/util/stax/XMLEventUtils.java
+++ b/axiom-compat/src/main/java/org/apache/axiom/util/stax/XMLEventUtils.java
@@ -39,44 +39,19 @@ public final class XMLEventUtils {
      * @return a string representation of the event type
      */
     public static String getEventTypeString(int event) {
-        String state = null;
-        switch (event) {
-            case XMLStreamConstants.START_ELEMENT:
-                state = "START_ELEMENT";
-                break;
-            case XMLStreamConstants.START_DOCUMENT:
-                state = "START_DOCUMENT";
-                break;
-            case XMLStreamConstants.CHARACTERS:
-                state = "CHARACTERS";
-                break;
-            case XMLStreamConstants.CDATA:
-                state = "CDATA";
-                break;
-            case XMLStreamConstants.END_ELEMENT:
-                state = "END_ELEMENT";
-                break;
-            case XMLStreamConstants.END_DOCUMENT:
-                state = "END_DOCUMENT";
-                break;
-            case XMLStreamConstants.SPACE:
-                state = "SPACE";
-                break;
-            case XMLStreamConstants.COMMENT:
-                state = "COMMENT";
-                break;
-            case XMLStreamConstants.DTD:
-                state = "DTD";
-                break;
-            case XMLStreamConstants.PROCESSING_INSTRUCTION:
-                state = "PROCESSING_INSTRUCTION";
-                break;
-            case XMLStreamConstants.ENTITY_REFERENCE:
-                state = "ENTITY_REFERENCE";
-                break;
-            default:
-                state = "UNKNOWN_STATE: " + event;
-        }
-        return state;
+        return switch (event) {
+            case XMLStreamConstants.START_ELEMENT -> "START_ELEMENT";
+            case XMLStreamConstants.START_DOCUMENT -> "START_DOCUMENT";
+            case XMLStreamConstants.CHARACTERS -> "CHARACTERS";
+            case XMLStreamConstants.CDATA -> "CDATA";
+            case XMLStreamConstants.END_ELEMENT -> "END_ELEMENT";
+            case XMLStreamConstants.END_DOCUMENT -> "END_DOCUMENT";
+            case XMLStreamConstants.SPACE -> "SPACE";
+            case XMLStreamConstants.COMMENT -> "COMMENT";
+            case XMLStreamConstants.DTD -> "DTD";
+            case XMLStreamConstants.PROCESSING_INSTRUCTION -> 
"PROCESSING_INSTRUCTION";
+            case XMLStreamConstants.ENTITY_REFERENCE -> "ENTITY_REFERENCE";
+            default -> "UNKNOWN_STATE: " + event;
+        };
     }
 }
diff --git 
a/axiom-legacy-attachments/src/main/java/org/apache/axiom/attachments/ConfigurableDataHandler.java
 
b/axiom-legacy-attachments/src/main/java/org/apache/axiom/attachments/ConfigurableDataHandler.java
index a77511124..7f5aa38f8 100644
--- 
a/axiom-legacy-attachments/src/main/java/org/apache/axiom/attachments/ConfigurableDataHandler.java
+++ 
b/axiom-legacy-attachments/src/main/java/org/apache/axiom/attachments/ConfigurableDataHandler.java
@@ -77,19 +77,17 @@ public class ConfigurableDataHandler extends DataHandler {
                     if (cte == null) {
                         return null;
                     }
-                    switch (cte) {
-                        case "8bit":
-                            return ContentTransferEncoding.EIGHT_BIT;
-                        case "binary":
-                            return ContentTransferEncoding.BINARY;
-                        case "base64":
-                            return ContentTransferEncoding.BASE64;
-                        default:
+                    return switch (cte) {
+                        case "8bit" -> ContentTransferEncoding.EIGHT_BIT;
+                        case "binary" -> ContentTransferEncoding.BINARY;
+                        case "base64" -> ContentTransferEncoding.BASE64;
+                        default -> {
                             log.warn(
                                     String.format(
                                             "Unrecognized content transfer 
encoding: %s", cte));
-                            return null;
-                    }
+                            yield null;
+                        }
+                    };
                 }
             };
 
diff --git 
a/components/core-streams/src/main/java/org/apache/axiom/core/stream/dom/input/DOMReader.java
 
b/components/core-streams/src/main/java/org/apache/axiom/core/stream/dom/input/DOMReader.java
index 5023435a7..b5ceeee49 100644
--- 
a/components/core-streams/src/main/java/org/apache/axiom/core/stream/dom/input/DOMReader.java
+++ 
b/components/core-streams/src/main/java/org/apache/axiom/core/stream/dom/input/DOMReader.java
@@ -69,13 +69,13 @@ final class DOMReader implements XmlReader {
         loop:
         while (true) {
             switch (state) {
-                case START:
+                case START -> {
                     if (rootNode instanceof Document) {
                         currentNode = rootNode;
                     }
                     state = NOT_VISITED;
-                    break;
-                case NOT_VISITED:
+                }
+                case NOT_VISITED -> {
                     if (currentNode == null) {
                         currentNode = rootNode;
                     } else {
@@ -86,8 +86,8 @@ final class DOMReader implements XmlReader {
                             currentNode = node;
                         }
                     }
-                    break;
-                case VISITED:
+                }
+                case VISITED -> {
                     if (currentNode == null || currentNode instanceof 
Document) {
                         throw new IllegalStateException();
                     } else if (currentNode == rootNode) {
@@ -101,25 +101,26 @@ final class DOMReader implements XmlReader {
                             state = NOT_VISITED;
                         }
                     }
-                    break;
-                default:
-                    throw new IllegalStateException();
+                }
+                default -> throw new IllegalStateException();
             }
             int nodeType = currentNode == null ? Node.DOCUMENT_NODE : 
currentNode.getNodeType();
             if (state == VISITED) {
                 // In the future, there may be other node types that generate 
events here
                 switch (nodeType) {
-                    case Node.ELEMENT_NODE:
+                    case Node.ELEMENT_NODE -> {
                         handler.endElement();
                         break loop;
-                    case Node.DOCUMENT_NODE:
+                    }
+                    case Node.DOCUMENT_NODE -> {
                         handler.completed();
                         state = COMPLETE;
                         break loop;
+                    }
                 }
             } else {
                 switch (nodeType) {
-                    case Node.DOCUMENT_NODE:
+                    case Node.DOCUMENT_NODE -> {
                         if (currentNode != null) {
                             Document document = (Document) currentNode;
                             if (dom3) {
@@ -135,7 +136,8 @@ final class DOMReader implements XmlReader {
                             handler.startFragment();
                         }
                         break loop;
-                    case Node.DOCUMENT_TYPE_NODE:
+                    }
+                    case Node.DOCUMENT_TYPE_NODE -> {
                         DocumentType docType = (DocumentType) currentNode;
                         handler.processDocumentTypeDeclaration(
                                 docType.getName(),
@@ -143,7 +145,8 @@ final class DOMReader implements XmlReader {
                                 docType.getSystemId(),
                                 docType.getInternalSubset());
                         break loop;
-                    case Node.ELEMENT_NODE:
+                    }
+                    case Node.ELEMENT_NODE -> {
                         Element element = (Element) currentNode;
                         String localName = element.getLocalName();
                         if (localName == null) {
@@ -187,28 +190,33 @@ final class DOMReader implements XmlReader {
                         }
                         handler.attributesCompleted();
                         break loop;
-                    case Node.TEXT_NODE:
+                    }
+                    case Node.TEXT_NODE -> {
                         handler.processCharacterData(
                                 currentNode.getNodeValue(),
                                 dom3 && ((Text) 
currentNode).isElementContentWhitespace());
                         break loop;
-                    case Node.CDATA_SECTION_NODE:
+                    }
+                    case Node.CDATA_SECTION_NODE -> {
                         handler.startCDATASection();
                         
handler.processCharacterData(currentNode.getNodeValue(), false);
                         handler.endCDATASection();
                         break loop;
-                    case Node.COMMENT_NODE:
+                    }
+                    case Node.COMMENT_NODE -> {
                         handler.startComment();
                         
handler.processCharacterData(currentNode.getNodeValue(), false);
                         handler.endComment();
                         break loop;
-                    case Node.PROCESSING_INSTRUCTION_NODE:
+                    }
+                    case Node.PROCESSING_INSTRUCTION_NODE -> {
                         ProcessingInstruction pi = (ProcessingInstruction) 
currentNode;
                         handler.startProcessingInstruction(pi.getTarget());
                         handler.processCharacterData(pi.getData(), false);
                         handler.endProcessingInstruction();
                         break loop;
-                    case Node.ENTITY_REFERENCE_NODE:
+                    }
+                    case Node.ENTITY_REFERENCE_NODE -> {
                         if (!expandEntityReferences) {
                             
handler.processEntityReference(currentNode.getNodeName(), null);
                             state = VISITED;
@@ -217,10 +225,12 @@ final class DOMReader implements XmlReader {
                             // No event has been generated, so loop again
                             break;
                         }
-                    default:
+                    }
+                    default -> {
                         // TODO
                         throw new UnsupportedOperationException(
                                 "Unsupported node type " + nodeType);
+                    }
                 }
             }
         }
diff --git 
a/components/core-streams/src/main/java/org/apache/axiom/core/stream/sax/output/ContentHandlerXmlHandler.java
 
b/components/core-streams/src/main/java/org/apache/axiom/core/stream/sax/output/ContentHandlerXmlHandler.java
index 2ce35cae3..3189ddac3 100644
--- 
a/components/core-streams/src/main/java/org/apache/axiom/core/stream/sax/output/ContentHandlerXmlHandler.java
+++ 
b/components/core-streams/src/main/java/org/apache/axiom/core/stream/sax/output/ContentHandlerXmlHandler.java
@@ -218,7 +218,7 @@ public class ContentHandlerXmlHandler implements 
XmlHandler, CharacterDataSink {
     public void processCharacterData(Object data, boolean ignorable) throws 
StreamException {
         try {
             switch (characterDataMode) {
-                case PASS_THROUGH:
+                case PASS_THROUGH -> {
                     if (ignorable) {
                         writeToBuffer(data.toString());
                         contentHandler.ignorableWhitespace(buffer, 0, 
bufferPos);
@@ -241,14 +241,10 @@ public class ContentHandlerXmlHandler implements 
XmlHandler, CharacterDataSink {
                         contentHandler.characters(buffer, 0, bufferPos);
                         bufferPos = 0;
                     }
-                    break;
-                case BUFFER:
-                    writeToBuffer(data.toString());
-                    break;
-                case ACCUMULATE:
-                    accumulator.append(data);
-                    break;
-                case SKIP:
+                }
+                case BUFFER -> writeToBuffer(data.toString());
+                case ACCUMULATE -> accumulator.append(data);
+                case SKIP -> {}
             }
         } catch (SAXException ex) {
             throw new StreamException(ex);
diff --git 
a/components/core-streams/src/main/java/org/apache/axiom/core/stream/serializer/Serializer.java
 
b/components/core-streams/src/main/java/org/apache/axiom/core/stream/serializer/Serializer.java
index 6beb3bfcd..b3f03fd7a 100644
--- 
a/components/core-streams/src/main/java/org/apache/axiom/core/stream/serializer/Serializer.java
+++ 
b/components/core-streams/src/main/java/org/apache/axiom/core/stream/serializer/Serializer.java
@@ -384,41 +384,36 @@ public final class Serializer implements XmlHandler, 
CharacterDataSink {
                         // is a little performance boost to handle the more
                         // common TAB, NEW-LINE, CARRIAGE-RETURN
                         switch (ch) {
-                            case 0x09:
+                            case 0x09 -> {
                                 if (context == ATTRIBUTE_VALUE) {
                                     replacement = "&#x9;";
                                 }
-                                break;
-                            case 0x0A:
+                            }
+                            case 0x0A -> {
                                 if (context == ATTRIBUTE_VALUE) {
                                     replacement = "&#xa;";
                                 }
-                                break;
-                            case 0x0D:
+                            }
+                            case 0x0D -> {
                                 replacement = "&#xd;";
                                 // Leave whitespace carriage return as a real 
character
-                                break;
-                            default:
-                                generateCharacterReference = true;
-                                break;
+                            }
+                            default -> generateCharacterReference = true;
                         }
                     } else if (ch < 0x7F) {
                         switch (ch) {
-                            case '<':
-                                replacement = "&lt;";
-                                break;
-                            case '>':
+                            case '<' -> replacement = "&lt;";
+                            case '>' -> {
                                 if (context == MIXED_CONTENT && squareBrackets 
>= 2) {
                                     replacement = "&gt;";
                                 }
-                                break;
-                            case '&':
-                                replacement = "&amp;";
-                                break;
-                            case '"':
+                            }
+                            case '&' -> replacement = "&amp;";
+                            case '"' -> {
                                 if (context == ATTRIBUTE_VALUE) {
                                     replacement = "&quot;";
                                 }
+                            }
                         }
                     } else if (ch <= 0x9F) {
                         // Range 0x7F through 0x9F inclusive
diff --git 
a/components/core-streams/src/main/java/org/apache/axiom/core/stream/serializer/writer/OutputStreamXmlWriter.java
 
b/components/core-streams/src/main/java/org/apache/axiom/core/stream/serializer/writer/OutputStreamXmlWriter.java
index 44f49eecc..3f593f169 100644
--- 
a/components/core-streams/src/main/java/org/apache/axiom/core/stream/serializer/writer/OutputStreamXmlWriter.java
+++ 
b/components/core-streams/src/main/java/org/apache/axiom/core/stream/serializer/writer/OutputStreamXmlWriter.java
@@ -80,14 +80,11 @@ final class OutputStreamXmlWriter extends XmlWriter {
                 processingUnmappableCharacter = true;
                 try {
                     switch (coderResult.length()) {
-                        case 1:
-                            
unmappableCharacterHandler.processUnmappableCharacter(
-                                    encoderIn.get(), this);
-                            break;
-                        case 2:
-                            throw new UnsupportedOperationException("TODO");
-                        default:
-                            throw new IllegalStateException();
+                        case 1 ->
+                                
unmappableCharacterHandler.processUnmappableCharacter(
+                                        encoderIn.get(), this);
+                        case 2 -> throw new 
UnsupportedOperationException("TODO");
+                        default -> throw new IllegalStateException();
                     }
                     flush(encoderInAlt);
                 } finally {
diff --git 
a/components/core-streams/src/main/java/org/apache/axiom/core/stream/stax/pull/input/StAXPullReader.java
 
b/components/core-streams/src/main/java/org/apache/axiom/core/stream/stax/pull/input/StAXPullReader.java
index 154acb588..6564a0fc2 100644
--- 
a/components/core-streams/src/main/java/org/apache/axiom/core/stream/stax/pull/input/StAXPullReader.java
+++ 
b/components/core-streams/src/main/java/org/apache/axiom/core/stream/stax/pull/input/StAXPullReader.java
@@ -128,19 +128,14 @@ final class StAXPullReader implements XmlReader {
             throw ex;
         }
         switch (textType) {
-            case XMLStreamConstants.CHARACTERS:
-                handler.processCharacterData(text, false);
-                break;
-            case XMLStreamConstants.SPACE:
-                handler.processCharacterData(text, true);
-                break;
-            case XMLStreamConstants.CDATA:
+            case XMLStreamConstants.CHARACTERS -> 
handler.processCharacterData(text, false);
+            case XMLStreamConstants.SPACE -> 
handler.processCharacterData(text, true);
+            case XMLStreamConstants.CDATA -> {
                 handler.startCDATASection();
                 handler.processCharacterData(text, false);
                 handler.endCDATASection();
-                break;
-            default:
-                throw new IllegalStateException();
+            }
+            default -> throw new IllegalStateException();
         }
     }
 
@@ -177,47 +172,35 @@ final class StAXPullReader implements XmlReader {
         // Note: if autoClose is enabled, then the parser may be null at this 
point
 
         switch (token) {
-            case XMLStreamConstants.START_DOCUMENT:
-                handler.startDocument(
-                        reader.getEncoding(),
-                        reader.getVersion(),
-                        reader.getCharacterEncodingScheme(),
-                        reader.standaloneSet() ? reader.isStandalone() : null);
-                break;
-            case XMLStreamConstants.START_ELEMENT:
-                {
-                    processElement();
-                    break;
-                }
-            case XMLStreamConstants.CHARACTERS:
-            case XMLStreamConstants.CDATA:
-            case XMLStreamConstants.SPACE:
-                processText(token);
-                break;
-            case XMLStreamConstants.END_ELEMENT:
-                handler.endElement();
-                break;
-            case XMLStreamConstants.END_DOCUMENT:
-                handler.completed();
-                break;
-            case XMLStreamConstants.COMMENT:
+            case XMLStreamConstants.START_DOCUMENT ->
+                    handler.startDocument(
+                            reader.getEncoding(),
+                            reader.getVersion(),
+                            reader.getCharacterEncodingScheme(),
+                            reader.standaloneSet() ? reader.isStandalone() : 
null);
+            case XMLStreamConstants.START_ELEMENT -> {
+                processElement();
+            }
+            case XMLStreamConstants.CHARACTERS,
+                    XMLStreamConstants.CDATA,
+                    XMLStreamConstants.SPACE ->
+                    processText(token);
+            case XMLStreamConstants.END_ELEMENT -> handler.endElement();
+            case XMLStreamConstants.END_DOCUMENT -> handler.completed();
+            case XMLStreamConstants.COMMENT -> {
                 handler.startComment();
                 handler.processCharacterData(reader.getText(), false);
                 handler.endComment();
-                break;
-            case XMLStreamConstants.DTD:
-                processDTD();
-                break;
-            case XMLStreamConstants.PROCESSING_INSTRUCTION:
+            }
+            case XMLStreamConstants.DTD -> processDTD();
+            case XMLStreamConstants.PROCESSING_INSTRUCTION -> {
                 handler.startProcessingInstruction(reader.getPITarget());
                 handler.processCharacterData(reader.getPIData(), false);
                 handler.endProcessingInstruction();
-                break;
-            case XMLStreamConstants.ENTITY_REFERENCE:
-                handler.processEntityReference(reader.getLocalName(), 
reader.getText());
-                break;
-            default:
-                throw new IllegalStateException();
+            }
+            case XMLStreamConstants.ENTITY_REFERENCE ->
+                    handler.processEntityReference(reader.getLocalName(), 
reader.getText());
+            default -> throw new IllegalStateException();
         }
 
         return token == XMLStreamReader.END_DOCUMENT;
diff --git 
a/components/core-streams/src/main/java/org/apache/axiom/core/stream/stax/pull/output/StAXPivot.java
 
b/components/core-streams/src/main/java/org/apache/axiom/core/stream/stax/pull/output/StAXPivot.java
index 5997ff54b..2e1ae20b8 100644
--- 
a/components/core-streams/src/main/java/org/apache/axiom/core/stream/stax/pull/output/StAXPivot.java
+++ 
b/components/core-streams/src/main/java/org/apache/axiom/core/stream/stax/pull/output/StAXPivot.java
@@ -365,131 +365,105 @@ public final class StAXPivot implements 
InternalXMLStreamReader, XmlHandler {
     @Override
     public void processCharacterData(Object data, boolean ignorable) throws 
StreamException {
         switch (state) {
-            case STATE_DEFAULT:
+            case STATE_DEFAULT -> {
                 eventType = ignorable ? SPACE : CHARACTERS;
                 characterData = data;
                 state = STATE_EVENT_COMPLETE;
                 return;
-            case STATE_COLLECT_TEXT:
-            case STATE_COALESCE_CDATA_SECTION:
+            }
+            case STATE_COLLECT_TEXT, STATE_COALESCE_CDATA_SECTION -> {
                 accumulator.append(data);
                 return;
-            case STATE_NEXT_TAG:
+            }
+            case STATE_NEXT_TAG -> {
                 // TODO: check that the character data only contains 
whitespace!
-                break;
-            case STATE_SKIP_CONTENT:
-                break;
-            default:
-                throw new IllegalStateException();
+            }
+            case STATE_SKIP_CONTENT -> {}
+            default -> throw new IllegalStateException();
         }
     }
 
     @Override
     public void startProcessingInstruction(String target) throws 
StreamException {
         switch (state) {
-            case STATE_DEFAULT:
+            case STATE_DEFAULT -> {
                 eventType = PROCESSING_INSTRUCTION;
                 name = target;
                 startCollectingText();
-                break;
-            case STATE_COLLECT_TEXT:
-            case STATE_NEXT_TAG:
+            }
+            case STATE_COLLECT_TEXT, STATE_NEXT_TAG -> {
                 previousState = state;
                 state = STATE_SKIP_CONTENT;
-                break;
-            default:
-                throw new IllegalStateException();
+            }
+            default -> throw new IllegalStateException();
         }
     }
 
     @Override
     public void endProcessingInstruction() throws StreamException {
         switch (state) {
-            case STATE_COLLECT_TEXT:
-                text = stopCollectingText();
-                break;
-            case STATE_SKIP_CONTENT:
-                state = previousState;
-                break;
-            default:
-                throw new IllegalStateException();
+            case STATE_COLLECT_TEXT -> text = stopCollectingText();
+            case STATE_SKIP_CONTENT -> state = previousState;
+            default -> throw new IllegalStateException();
         }
     }
 
     @Override
     public void startComment() throws StreamException {
         switch (state) {
-            case STATE_DEFAULT:
+            case STATE_DEFAULT -> {
                 eventType = COMMENT;
                 startCollectingText();
-                break;
-            case STATE_COLLECT_TEXT:
-            case STATE_NEXT_TAG:
+            }
+            case STATE_COLLECT_TEXT, STATE_NEXT_TAG -> {
                 previousState = state;
                 state = STATE_SKIP_CONTENT;
-                break;
-            default:
-                throw new IllegalStateException();
+            }
+            default -> throw new IllegalStateException();
         }
     }
 
     @Override
     public void endComment() throws StreamException {
         switch (state) {
-            case STATE_COLLECT_TEXT:
-                text = stopCollectingText();
-                break;
-            case STATE_SKIP_CONTENT:
-                state = previousState;
-                break;
-            default:
-                throw new IllegalStateException();
+            case STATE_COLLECT_TEXT -> text = stopCollectingText();
+            case STATE_SKIP_CONTENT -> state = previousState;
+            default -> throw new IllegalStateException();
         }
     }
 
     @Override
     public void startCDATASection() throws StreamException {
         switch (state) {
-            case STATE_DEFAULT:
+            case STATE_DEFAULT -> {
                 eventType = CDATA;
                 startCollectingText();
-                break;
-            case STATE_COLLECT_TEXT:
-                state = STATE_COALESCE_CDATA_SECTION;
-                break;
-            default:
-                throw new IllegalStateException();
+            }
+            case STATE_COLLECT_TEXT -> state = STATE_COALESCE_CDATA_SECTION;
+            default -> throw new IllegalStateException();
         }
     }
 
     @Override
     public void endCDATASection() throws StreamException {
         switch (state) {
-            case STATE_COLLECT_TEXT:
-                text = stopCollectingText();
-                break;
-            case STATE_COALESCE_CDATA_SECTION:
-                state = STATE_COLLECT_TEXT;
-                break;
-            default:
-                throw new IllegalStateException();
+            case STATE_COLLECT_TEXT -> text = stopCollectingText();
+            case STATE_COALESCE_CDATA_SECTION -> state = STATE_COLLECT_TEXT;
+            default -> throw new IllegalStateException();
         }
     }
 
     @Override
     public void processEntityReference(String name, String replacementText) 
throws StreamException {
         switch (state) {
-            case STATE_DEFAULT:
+            case STATE_DEFAULT -> {
                 eventType = ENTITY_REFERENCE;
                 this.name = name;
                 text = replacementText;
                 state = STATE_EVENT_COMPLETE;
-                break;
-            case STATE_COLLECT_TEXT:
-                accumulator.append(replacementText);
-                break;
-            default:
-                throw new IllegalStateException();
+            }
+            case STATE_COLLECT_TEXT -> accumulator.append(replacementText);
+            default -> throw new IllegalStateException();
         }
     }
 
@@ -530,11 +504,8 @@ public final class StAXPivot implements 
InternalXMLStreamReader, XmlHandler {
     public int next() throws XMLStreamException {
         try {
             switch (state) {
-                case STATE_EVENT_COMPLETE:
-                    state = STATE_DEFAULT;
-                    break;
-                case STATE_ERROR:
-                    throw new IllegalStateException();
+                case STATE_EVENT_COMPLETE -> state = STATE_DEFAULT;
+                case STATE_ERROR -> throw new IllegalStateException();
             }
             switch (eventType) {
                 case CHARACTERS:
@@ -660,12 +631,13 @@ public final class StAXPivot implements 
InternalXMLStreamReader, XmlHandler {
     public String getElementText() throws XMLStreamException {
         startCollectingText();
         switch (next()) {
-            case END_ELEMENT:
+            case END_ELEMENT -> {
                 return stopCollectingText();
-            case START_ELEMENT:
-                throw new XMLStreamException("Element text content may not 
contain START_ELEMENT");
-            default:
-                throw new IllegalStateException();
+            }
+            case START_ELEMENT ->
+                    throw new XMLStreamException(
+                            "Element text content may not contain 
START_ELEMENT");
+            default -> throw new IllegalStateException();
         }
     }
 
@@ -729,9 +701,10 @@ public final class StAXPivot implements 
InternalXMLStreamReader, XmlHandler {
     @Override
     public boolean isWhiteSpace() {
         switch (getEventType()) {
-            case SPACE:
+            case SPACE -> {
                 return true;
-            case CHARACTERS:
+            }
+            case CHARACTERS -> {
                 // XMLStreamReader Javadoc says that isWhiteSpace "returns 
true if the cursor
                 // points to a character data event that consists of all 
whitespace". This
                 // means that this method may return true for a CHARACTER 
event and we need
@@ -744,8 +717,10 @@ public final class StAXPivot implements 
InternalXMLStreamReader, XmlHandler {
                     }
                 }
                 return true;
-            default:
+            }
+            default -> {
                 return false;
+            }
         }
     }
 
@@ -844,35 +819,32 @@ public final class StAXPivot implements 
InternalXMLStreamReader, XmlHandler {
     @Override
     public int getNamespaceCount() {
         switch (eventType) {
-            case START_ELEMENT:
-            case END_ELEMENT:
+            case START_ELEMENT, END_ELEMENT -> {
                 return scopeStack[depth + 1] - scopeStack[depth];
-            default:
-                throw new IllegalStateException();
+            }
+            default -> throw new IllegalStateException();
         }
     }
 
     @Override
     public String getNamespacePrefix(int index) {
         switch (eventType) {
-            case START_ELEMENT:
-            case END_ELEMENT:
+            case START_ELEMENT, END_ELEMENT -> {
                 return emptyToNull(namespaceStack[2 * (scopeStack[depth] + 
index)]);
-            default:
-                throw new IllegalStateException();
+            }
+            default -> throw new IllegalStateException();
         }
     }
 
     @Override
     public String getNamespaceURI(int index) {
         switch (eventType) {
-            case START_ELEMENT:
-            case END_ELEMENT:
+            case START_ELEMENT, END_ELEMENT -> {
                 // The XSLT implementation in the JRE doesn't like null values 
returned here.
                 // Returning empty strings is also what Woodstox does.
                 return namespaceStack[2 * (scopeStack[depth] + index) + 1];
-            default:
-                throw new IllegalStateException();
+            }
+            default -> throw new IllegalStateException();
         }
     }
 
@@ -899,29 +871,21 @@ public final class StAXPivot implements 
InternalXMLStreamReader, XmlHandler {
     @Override
     public String getText() {
         switch (eventType) {
-            case CHARACTERS:
-            case CDATA:
-            case SPACE:
-            case COMMENT:
-            case DTD:
-            case ENTITY_REFERENCE:
+            case CHARACTERS, CDATA, SPACE, COMMENT, DTD, ENTITY_REFERENCE -> {
                 return internalGetText();
-            default:
-                throw new IllegalStateException();
+            }
+            default -> throw new IllegalStateException();
         }
     }
 
     @Override
     public char[] getTextCharacters() {
         switch (eventType) {
-            case CHARACTERS:
-            case CDATA:
-            case SPACE:
-            case COMMENT:
+            case CHARACTERS, CDATA, SPACE, COMMENT -> {
                 // TODO: optimize this
                 return internalGetText().toCharArray();
-            default:
-                throw new IllegalStateException();
+            }
+            default -> throw new IllegalStateException();
         }
     }
 
@@ -937,27 +901,21 @@ public final class StAXPivot implements 
InternalXMLStreamReader, XmlHandler {
     @Override
     public int getTextStart() {
         switch (eventType) {
-            case CHARACTERS:
-            case CDATA:
-            case SPACE:
-            case COMMENT:
+            case CHARACTERS, CDATA, SPACE, COMMENT -> {
                 return 0;
-            default:
-                throw new IllegalStateException();
+            }
+            default -> throw new IllegalStateException();
         }
     }
 
     @Override
     public int getTextLength() {
         switch (eventType) {
-            case CHARACTERS:
-            case CDATA:
-            case SPACE:
-            case COMMENT:
+            case CHARACTERS, CDATA, SPACE, COMMENT -> {
                 // TODO: optimize this
                 return internalGetText().length();
-            default:
-                throw new IllegalStateException();
+            }
+            default -> throw new IllegalStateException();
         }
     }
 
@@ -979,14 +937,13 @@ public final class StAXPivot implements 
InternalXMLStreamReader, XmlHandler {
     @Override
     public QName getName() {
         switch (eventType) {
-            case START_ELEMENT:
-            case END_ELEMENT:
+            case START_ELEMENT, END_ELEMENT -> {
                 return QNameCache.getQName(
                         elementStack[3 * depth],
                         elementStack[3 * depth + 1],
                         elementStack[3 * depth + 2]);
-            default:
-                throw new IllegalStateException();
+            }
+            default -> throw new IllegalStateException();
         }
     }
 
@@ -998,36 +955,34 @@ public final class StAXPivot implements 
InternalXMLStreamReader, XmlHandler {
     @Override
     public String getNamespaceURI() {
         switch (eventType) {
-            case START_ELEMENT:
-            case END_ELEMENT:
+            case START_ELEMENT, END_ELEMENT -> {
                 return emptyToNull(elementStack[3 * depth]);
-            default:
-                throw new IllegalStateException();
+            }
+            default -> throw new IllegalStateException();
         }
     }
 
     @Override
     public String getLocalName() {
         switch (eventType) {
-            case START_ELEMENT:
-            case END_ELEMENT:
+            case START_ELEMENT, END_ELEMENT -> {
                 return emptyToNull(elementStack[3 * depth + 1]);
-            case ENTITY_REFERENCE:
+            }
+            case ENTITY_REFERENCE -> {
                 return name;
-            default:
-                throw new IllegalStateException();
+            }
+            default -> throw new IllegalStateException();
         }
     }
 
     @Override
     public String getPrefix() {
         switch (eventType) {
-            case START_ELEMENT:
-            case END_ELEMENT:
+            case START_ELEMENT, END_ELEMENT -> {
                 // Saxon assumes that getPrefix returns "" instead of null.
                 return elementStack[3 * depth + 2];
-            default:
-                throw new IllegalStateException();
+            }
+            default -> throw new IllegalStateException();
         }
     }
 
diff --git 
a/components/core-streams/src/main/java/org/apache/axiom/core/stream/xop/AbstractXOPDecodingFilterHandler.java
 
b/components/core-streams/src/main/java/org/apache/axiom/core/stream/xop/AbstractXOPDecodingFilterHandler.java
index 4e22f246c..b3582b84a 100644
--- 
a/components/core-streams/src/main/java/org/apache/axiom/core/stream/xop/AbstractXOPDecodingFilterHandler.java
+++ 
b/components/core-streams/src/main/java/org/apache/axiom/core/stream/xop/AbstractXOPDecodingFilterHandler.java
@@ -50,13 +50,11 @@ public abstract class AbstractXOPDecodingFilterHandler 
extends XmlHandlerWrapper
 
     private void inContent() throws StreamException {
         switch (state) {
-            case IN_XOP_INCLUDE:
-                throw new StreamException(
-                        "Expected xop:Include element information item to be 
empty");
-            case AFTER_XOP_INCLUDE:
-                throw new StreamException(SOLE_CHILD_MSG);
-            default:
-                state = State.CONTENT_SEEN;
+            case IN_XOP_INCLUDE ->
+                    throw new StreamException(
+                            "Expected xop:Include element information item to 
be empty");
+            case AFTER_XOP_INCLUDE -> throw new 
StreamException(SOLE_CHILD_MSG);
+            default -> state = State.CONTENT_SEEN;
         }
     }
 
diff --git 
a/components/xml-utils/src/main/java/org/apache/axiom/util/xml/stream/XMLEventUtils.java
 
b/components/xml-utils/src/main/java/org/apache/axiom/util/xml/stream/XMLEventUtils.java
index 9fe6f38e9..cde53d5b8 100644
--- 
a/components/xml-utils/src/main/java/org/apache/axiom/util/xml/stream/XMLEventUtils.java
+++ 
b/components/xml-utils/src/main/java/org/apache/axiom/util/xml/stream/XMLEventUtils.java
@@ -35,44 +35,19 @@ public final class XMLEventUtils {
      * @return a string representation of the event type
      */
     public static String getEventTypeString(int event) {
-        String state = null;
-        switch (event) {
-            case XMLStreamConstants.START_ELEMENT:
-                state = "START_ELEMENT";
-                break;
-            case XMLStreamConstants.START_DOCUMENT:
-                state = "START_DOCUMENT";
-                break;
-            case XMLStreamConstants.CHARACTERS:
-                state = "CHARACTERS";
-                break;
-            case XMLStreamConstants.CDATA:
-                state = "CDATA";
-                break;
-            case XMLStreamConstants.END_ELEMENT:
-                state = "END_ELEMENT";
-                break;
-            case XMLStreamConstants.END_DOCUMENT:
-                state = "END_DOCUMENT";
-                break;
-            case XMLStreamConstants.SPACE:
-                state = "SPACE";
-                break;
-            case XMLStreamConstants.COMMENT:
-                state = "COMMENT";
-                break;
-            case XMLStreamConstants.DTD:
-                state = "DTD";
-                break;
-            case XMLStreamConstants.PROCESSING_INSTRUCTION:
-                state = "PROCESSING_INSTRUCTION";
-                break;
-            case XMLStreamConstants.ENTITY_REFERENCE:
-                state = "ENTITY_REFERENCE";
-                break;
-            default:
-                state = "UNKNOWN_STATE: " + event;
-        }
-        return state;
+        return switch (event) {
+            case XMLStreamConstants.START_ELEMENT -> "START_ELEMENT";
+            case XMLStreamConstants.START_DOCUMENT -> "START_DOCUMENT";
+            case XMLStreamConstants.CHARACTERS -> "CHARACTERS";
+            case XMLStreamConstants.CDATA -> "CDATA";
+            case XMLStreamConstants.END_ELEMENT -> "END_ELEMENT";
+            case XMLStreamConstants.END_DOCUMENT -> "END_DOCUMENT";
+            case XMLStreamConstants.SPACE -> "SPACE";
+            case XMLStreamConstants.COMMENT -> "COMMENT";
+            case XMLStreamConstants.DTD -> "DTD";
+            case XMLStreamConstants.PROCESSING_INSTRUCTION -> 
"PROCESSING_INSTRUCTION";
+            case XMLStreamConstants.ENTITY_REFERENCE -> "ENTITY_REFERENCE";
+            default -> "UNKNOWN_STATE: " + event;
+        };
     }
 }
diff --git 
a/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/AbstractNodeIterator.java
 
b/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/AbstractNodeIterator.java
index e3a244a16..2d827e6c3 100644
--- 
a/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/AbstractNodeIterator.java
+++ 
b/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/AbstractNodeIterator.java
@@ -71,15 +71,14 @@ public abstract class AbstractNodeIterator<T extends 
CoreNode, S> implements Nod
             while (true) {
                 // Get to the next node
                 switch (axis) {
-                    case CHILDREN:
+                    case CHILDREN -> {
                         if (node == null) {
                             node = startNode.coreGetFirstChild();
                         } else {
                             node = ((CoreChildNode) node).coreGetNextSibling();
                         }
-                        break;
-                    case DESCENDANTS:
-                    case DESCENDANTS_OR_SELF:
+                    }
+                    case DESCENDANTS, DESCENDANTS_OR_SELF -> {
                         if (node == null) {
                             if (axis == Axis.DESCENDANTS) {
                                 node = startNode.coreGetFirstChild();
@@ -116,6 +115,7 @@ public abstract class AbstractNodeIterator<T extends 
CoreNode, S> implements Nod
                                 visitChildren = false;
                             }
                         }
+                    }
                 }
                 if (node == null) {
                     nextNode = null;
diff --git 
a/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/TreeWalkerImpl.java
 
b/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/TreeWalkerImpl.java
index 59009e406..fe50f6aca 100644
--- 
a/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/TreeWalkerImpl.java
+++ 
b/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/TreeWalkerImpl.java
@@ -241,49 +241,36 @@ public final class TreeWalkerImpl implements XmlReader {
             }
 
             switch (state) {
-                case STATE_START_FRAGMENT:
-                    handler.startFragment();
-                    break;
-                case STATE_LEAF:
-                    ((CoreLeafNode) nextNode).internalSerialize(handler, 
preserve);
-                    break;
-                case STATE_ATTRIBUTE:
-                    ((CoreAttribute) nextNode).internalSerialize(handler, 
preserve);
-                    break;
-                case STATE_NOT_VISITED:
-                    ((CoreParentNode) nextNode).serializeStartEvent(handler);
-                    break;
-                case STATE_ATTRIBUTES_VISITED:
-                    handler.attributesCompleted();
-                    break;
-                case STATE_VISITED:
+                case STATE_START_FRAGMENT -> handler.startFragment();
+                case STATE_LEAF -> ((CoreLeafNode) 
nextNode).internalSerialize(handler, preserve);
+                case STATE_ATTRIBUTE ->
+                        ((CoreAttribute) nextNode).internalSerialize(handler, 
preserve);
+                case STATE_NOT_VISITED -> ((CoreParentNode) 
nextNode).serializeStartEvent(handler);
+                case STATE_ATTRIBUTES_VISITED -> handler.attributesCompleted();
+                case STATE_VISITED -> {
                     if (nextNode == null) {
                         handler.completed();
                     } else {
                         ((CoreParentNode) nextNode).serializeEndEvent(handler);
                     }
-                    break;
-                case STATE_PASS_THROUGH:
-                    {
-                        CoreParentNode parent = (CoreParentNode) nextNode;
-                        parent.coreGetInputContext().getBuilder().next();
-                        if (parent.coreGetInputContext() == null) {
-                            state = STATE_VISITED;
-                        }
-                        break;
+                }
+                case STATE_PASS_THROUGH -> {
+                    CoreParentNode parent = (CoreParentNode) nextNode;
+                    parent.coreGetInputContext().getBuilder().next();
+                    if (parent.coreGetInputContext() == null) {
+                        state = STATE_VISITED;
                     }
-                case STATE_STREAMING:
+                }
+                case STATE_STREAMING -> {
                     if (reader.proceed()) {
                         state = STATE_VISITED;
                         reader = null;
                     }
-                    break;
-                case STATE_CONTENT_VISITED:
-                    handler.processCharacterData(
-                            ((CoreParentNode) nextNode).internalGetContent(), 
false);
-                    break;
-                default:
-                    throw new IllegalStateException();
+                }
+                case STATE_CONTENT_VISITED ->
+                        handler.processCharacterData(
+                                ((CoreParentNode) 
nextNode).internalGetContent(), false);
+                default -> throw new IllegalStateException();
             }
             node = nextNode;
             return state == STATE_VISITED && (nextNode == null || nextNode 
instanceof CoreDocument);
diff --git 
a/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/mixin/CoreChildNodeMixin.java
 
b/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/mixin/CoreChildNodeMixin.java
index af76e7e5a..e8e636adf 100644
--- 
a/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/mixin/CoreChildNodeMixin.java
+++ 
b/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/mixin/CoreChildNodeMixin.java
@@ -125,16 +125,16 @@ public abstract class CoreChildNodeMixin implements 
CoreChildNode {
             CoreParentNode parent = coreGetParent();
             if (parent != null) {
                 switch (parent.getState()) {
-                    case CoreParentNode.DISCARDING:
-                    case CoreParentNode.DISCARDED:
-                        throw new NodeConsumedException();
-                    case CoreParentNode.INCOMPLETE:
+                    case CoreParentNode.DISCARDING, CoreParentNode.DISCARDED ->
+                            throw new NodeConsumedException();
+                    case CoreParentNode.INCOMPLETE -> {
                         if (parent.coreGetBuilder() != null) {
                             do {
                                 parent.internalBuildNext();
                             } while (parent.getState() == 
CoreParentNode.INCOMPLETE
                                     && (nextSibling = 
coreGetNextSiblingIfAvailable()) == null);
                         }
+                    }
                 }
             }
         }
diff --git 
a/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/mixin/CoreParentNodeMixin.java
 
b/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/mixin/CoreParentNodeMixin.java
index 8e76ebdf5..a221ca2c6 100644
--- 
a/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/mixin/CoreParentNodeMixin.java
+++ 
b/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/mixin/CoreParentNodeMixin.java
@@ -99,12 +99,8 @@ public abstract class CoreParentNodeMixin implements 
CoreParentNode {
         this.context = context;
         if (context == null) {
             switch (getState()) {
-                case INCOMPLETE:
-                    coreSetState(COMPLETE);
-                    break;
-                case DISCARDING:
-                    coreSetState(DISCARDED);
-                    break;
+                case INCOMPLETE -> coreSetState(COMPLETE);
+                case DISCARDING -> coreSetState(DISCARDED);
             }
         } else {
             coreSetState(INCOMPLETE);
@@ -175,14 +171,13 @@ public abstract class CoreParentNodeMixin implements 
CoreParentNode {
         CoreChildNode firstChild = coreGetFirstChildIfAvailable();
         if (firstChild == null) {
             switch (getState()) {
-                case DISCARDING:
-                case DISCARDED:
-                    throw new NodeConsumedException();
-                case INCOMPLETE:
+                case DISCARDING, DISCARDED -> throw new 
NodeConsumedException();
+                case INCOMPLETE -> {
                     do {
                         internalBuildNext();
                     } while ((firstChild = coreGetFirstChildIfAvailable()) == 
null
                             && getState() == INCOMPLETE);
+                }
             }
         }
         return firstChild;
@@ -504,16 +499,15 @@ public abstract class CoreParentNodeMixin implements 
CoreParentNode {
     @Override
     public final void coreBuild() throws CoreModelException {
         switch (getState()) {
-            case DISCARDING:
-            case DISCARDED:
-                throw new NodeConsumedException();
-            case INCOMPLETE:
+            case DISCARDING, DISCARDED -> throw new NodeConsumedException();
+            case INCOMPLETE -> {
                 if (context != null) {
                     Builder builder = context.getBuilder();
                     do {
                         builder.next();
                     } while (context != null);
                 }
+            }
         }
     }
 
diff --git 
a/mixins/dom-mixins/src/main/java/org/apache/axiom/dom/impl/mixin/DOMDocumentMixin.java
 
b/mixins/dom-mixins/src/main/java/org/apache/axiom/dom/impl/mixin/DOMDocumentMixin.java
index 26e0d8959..62c504c12 100644
--- 
a/mixins/dom-mixins/src/main/java/org/apache/axiom/dom/impl/mixin/DOMDocumentMixin.java
+++ 
b/mixins/dom-mixins/src/main/java/org/apache/axiom/dom/impl/mixin/DOMDocumentMixin.java
@@ -369,11 +369,12 @@ public abstract class DOMDocumentMixin implements 
DOMDocument {
         }
         namespaceURI = NSUtil.normalizeNamespaceURI(namespaceURI);
         switch (((DOMNode) node).coreGetNodeType()) {
-            case NS_AWARE_ELEMENT:
+            case NS_AWARE_ELEMENT -> {
                 NSUtil.validateNamespace(namespaceURI, prefix);
                 ((DOMNSAwareElement) node).coreSetName(namespaceURI, 
localName, prefix);
                 return node;
-            case NS_AWARE_ATTRIBUTE:
+            }
+            case NS_AWARE_ATTRIBUTE -> {
                 if (XMLConstants.XMLNS_ATTRIBUTE_NS_URI.equals(namespaceURI)) {
                     DOMNamespaceDeclaration decl = 
getDOMNodeFactory().createNamespaceDeclaration();
                     decl.coreSetOwnerDocument(this);
@@ -389,11 +390,12 @@ public abstract class DOMDocumentMixin implements 
DOMDocument {
                     ((DOMNSAwareAttribute) node).coreSetName(namespaceURI, 
localName, prefix);
                     return node;
                 }
-            case NAMESPACE_DECLARATION:
+            }
+            case NAMESPACE_DECLARATION -> {
                 // TODO
                 throw new UnsupportedOperationException();
-            default:
-                throw new IllegalStateException();
+            }
+            default -> throw new IllegalStateException();
         }
     }
 
diff --git 
a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/common/factory/OMFactoryImpl.java
 
b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/common/factory/OMFactoryImpl.java
index 2bd8ce525..ce7fffc89 100644
--- 
a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/common/factory/OMFactoryImpl.java
+++ 
b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/common/factory/OMFactoryImpl.java
@@ -108,25 +108,18 @@ public class OMFactoryImpl implements OMFactory {
     private AxiomText createAxiomText(OMContainer parent, Object content, int 
type) {
         AxiomText node;
         switch (type) {
-            case OMNode.TEXT_NODE:
-                {
-                    node = nodeFactory.createCharacterDataNode();
-                    break;
-                }
-            case OMNode.SPACE_NODE:
-                {
-                    AxiomCharacterDataNode cdata = 
nodeFactory.createCharacterDataNode();
-                    cdata.coreSetIgnorable(true);
-                    node = cdata;
-                    break;
-                }
-            case OMNode.CDATA_SECTION_NODE:
-                {
-                    node = nodeFactory.createCDATASection();
-                    break;
-                }
-            default:
-                throw new IllegalArgumentException("Invalid node type");
+            case OMNode.TEXT_NODE -> {
+                node = nodeFactory.createCharacterDataNode();
+            }
+            case OMNode.SPACE_NODE -> {
+                AxiomCharacterDataNode cdata = 
nodeFactory.createCharacterDataNode();
+                cdata.coreSetIgnorable(true);
+                node = cdata;
+            }
+            case OMNode.CDATA_SECTION_NODE -> {
+                node = nodeFactory.createCDATASection();
+            }
+            default -> throw new IllegalArgumentException("Invalid node type");
         }
         if (parent != null) {
             ((AxiomContainer) parent).addChild(node);
@@ -410,55 +403,49 @@ public class OMFactoryImpl implements OMFactory {
     private AxiomChildNode importChildNode(OMNode child) {
         int type = child.getType();
         switch (type) {
-            case OMNode.ELEMENT_NODE:
+            case OMNode.ELEMENT_NODE -> {
                 return importElement((OMElement) child, 
AxiomNodeFactory::createNSAwareElement);
-            case OMNode.TEXT_NODE:
-            case OMNode.SPACE_NODE:
-            case OMNode.CDATA_SECTION_NODE:
-                {
-                    OMText text = (OMText) child;
-                    Object content;
-                    if (text.isBinary()) {
-                        content =
-                                new TextContent(
-                                        text.getContentID(), text.getBlob(), 
text.isOptimized());
-                    } else {
-                        content = text.getText();
-                    }
-                    return createAxiomText(null, content, type);
-                }
-            case OMNode.PI_NODE:
-                {
-                    OMProcessingInstruction pi = (OMProcessingInstruction) 
child;
-                    AxiomProcessingInstruction importedPI =
-                            nodeFactory.createProcessingInstruction();
-                    importedPI.setTarget(pi.getTarget());
-                    importedPI.setValue(pi.getValue());
-                    return importedPI;
-                }
-            case OMNode.COMMENT_NODE:
-                {
-                    OMComment comment = (OMComment) child;
-                    AxiomComment importedComment = nodeFactory.createComment();
-                    importedComment.setValue(comment.getValue());
-                    return importedComment;
-                }
-            case OMNode.DTD_NODE:
-                {
-                    OMDocType docType = (OMDocType) child;
-                    AxiomDocType importedDocType = 
nodeFactory.createDocumentTypeDeclaration();
-                    importedDocType.coreSetRootName(docType.getRootName());
-                    importedDocType.coreSetPublicId(docType.getPublicId());
-                    importedDocType.coreSetSystemId(docType.getSystemId());
-                    
importedDocType.coreSetInternalSubset(docType.getInternalSubset());
-                    return importedDocType;
+            }
+            case OMNode.TEXT_NODE, OMNode.SPACE_NODE, 
OMNode.CDATA_SECTION_NODE -> {
+                OMText text = (OMText) child;
+                Object content;
+                if (text.isBinary()) {
+                    content =
+                            new TextContent(
+                                    text.getContentID(), text.getBlob(), 
text.isOptimized());
+                } else {
+                    content = text.getText();
                 }
-            case OMNode.ENTITY_REFERENCE_NODE:
+                return createAxiomText(null, content, type);
+            }
+            case OMNode.PI_NODE -> {
+                OMProcessingInstruction pi = (OMProcessingInstruction) child;
+                AxiomProcessingInstruction importedPI = 
nodeFactory.createProcessingInstruction();
+                importedPI.setTarget(pi.getTarget());
+                importedPI.setValue(pi.getValue());
+                return importedPI;
+            }
+            case OMNode.COMMENT_NODE -> {
+                OMComment comment = (OMComment) child;
+                AxiomComment importedComment = nodeFactory.createComment();
+                importedComment.setValue(comment.getValue());
+                return importedComment;
+            }
+            case OMNode.DTD_NODE -> {
+                OMDocType docType = (OMDocType) child;
+                AxiomDocType importedDocType = 
nodeFactory.createDocumentTypeDeclaration();
+                importedDocType.coreSetRootName(docType.getRootName());
+                importedDocType.coreSetPublicId(docType.getPublicId());
+                importedDocType.coreSetSystemId(docType.getSystemId());
+                
importedDocType.coreSetInternalSubset(docType.getInternalSubset());
+                return importedDocType;
+            }
+            case OMNode.ENTITY_REFERENCE_NODE -> {
                 AxiomEntityReference importedEntityRef = 
nodeFactory.createEntityReference();
                 importedEntityRef.coreSetName(((OMEntityReference) 
child).getName());
                 return importedEntityRef;
-            default:
-                throw new IllegalArgumentException("Unsupported node type");
+            }
+            default -> throw new IllegalArgumentException("Unsupported node 
type");
         }
     }
 
diff --git 
a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/common/factory/meta/BuilderSpec.java
 
b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/common/factory/meta/BuilderSpec.java
index f1d970522..819aaa5e6 100644
--- 
a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/common/factory/meta/BuilderSpec.java
+++ 
b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/common/factory/meta/BuilderSpec.java
@@ -133,16 +133,15 @@ public final class BuilderSpec {
     public static BuilderSpec from(XMLStreamReader reader) {
         int eventType = reader.getEventType();
         switch (eventType) {
-            case XMLStreamReader.START_DOCUMENT:
-                break;
-            case XMLStreamReader.START_ELEMENT:
+            case XMLStreamReader.START_DOCUMENT -> {}
+            case XMLStreamReader.START_ELEMENT -> {
                 reader = new XMLFragmentStreamReader(reader);
-                break;
-            default:
-                throw new OMException(
-                        "The supplied XMLStreamReader is in an unexpected 
state ("
-                                + XMLEventUtils.getEventTypeString(eventType)
-                                + ")");
+            }
+            default ->
+                    throw new OMException(
+                            "The supplied XMLStreamReader is in an unexpected 
state ("
+                                    + 
XMLEventUtils.getEventTypeString(eventType)
+                                    + ")");
         }
         return new BuilderSpec(
                 new FilteredXmlInput(
diff --git 
a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/mixin/AxiomCoreParentNodeMixin.java
 
b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/mixin/AxiomCoreParentNodeMixin.java
index 46a4da79a..5c1b9472c 100644
--- 
a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/mixin/AxiomCoreParentNodeMixin.java
+++ 
b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/mixin/AxiomCoreParentNodeMixin.java
@@ -32,24 +32,23 @@ public abstract class AxiomCoreParentNodeMixin implements 
AxiomCoreParentNode {
     @Override
     public final boolean isComplete() {
         try {
-            switch (getState()) {
-                case COMPACT:
-                    return true;
-                case COMPLETE:
+            return switch (getState()) {
+                case COMPACT -> true;
+                case COMPLETE -> {
                     if (isExpanded()) {
                         CoreChildNode child = coreGetFirstChild();
                         while (child != null) {
                             if (!(child instanceof AxiomSourcedElement
                                     || ((AxiomSerializable) 
child).isComplete())) {
-                                return false;
+                                yield false;
                             }
                             child = child.coreGetNextSibling();
                         }
                     }
-                    return true;
-                default:
-                    return false;
-            }
+                    yield true;
+                }
+                default -> false;
+            };
         } catch (CoreModelException ex) {
             throw AxiomExceptionTranslator.translate(ex);
         }
diff --git 
a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/mixin/AxiomElementMixin.java
 
b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/mixin/AxiomElementMixin.java
index 42bb60bdf..826a51065 100644
--- 
a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/mixin/AxiomElementMixin.java
+++ 
b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/mixin/AxiomElementMixin.java
@@ -224,17 +224,17 @@ public abstract class AxiomElementMixin implements 
AxiomElement {
             int depth = 0;
             while (reader.hasNext()) {
                 switch (reader.next()) {
-                    case XMLStreamReader.CHARACTERS:
-                    case XMLStreamReader.CDATA:
+                    case XMLStreamReader.CHARACTERS, XMLStreamReader.CDATA -> {
                         if (depth == 1) {
                             out.write(reader.getText());
                         }
-                        break;
-                    case XMLStreamReader.START_ELEMENT:
+                    }
+                    case XMLStreamReader.START_ELEMENT -> {
                         depth++;
-                        break;
-                    case XMLStreamReader.END_ELEMENT:
+                    }
+                    case XMLStreamReader.END_ELEMENT -> {
                         depth--;
+                    }
                 }
             }
         } catch (XMLStreamException ex) {
diff --git 
a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/stream/stax/pull/CharacterDataReaderImpl.java
 
b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/stream/stax/pull/CharacterDataReaderImpl.java
index d56879413..ccff5f2cd 100644
--- 
a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/stream/stax/pull/CharacterDataReaderImpl.java
+++ 
b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/stream/stax/pull/CharacterDataReaderImpl.java
@@ -41,7 +41,7 @@ final class CharacterDataReaderImpl implements 
CharacterDataReader {
     @Override
     public void writeTextTo(final Writer writer) throws XMLStreamException, 
IOException {
         switch (reader.getEventType()) {
-            case XMLStreamReader.CHARACTERS:
+            case XMLStreamReader.CHARACTERS -> {
                 Object data = reader.getCharacterData();
                 if (data instanceof CharacterData) {
                     ((CharacterData) data)
@@ -61,15 +61,12 @@ final class CharacterDataReaderImpl implements 
CharacterDataReader {
                 } else {
                     writer.write(data.toString());
                 }
-                break;
-            case XMLStreamReader.CDATA:
-            case XMLStreamReader.SPACE:
-            case XMLStreamReader.COMMENT:
+            }
+            case XMLStreamReader.CDATA, XMLStreamReader.SPACE, 
XMLStreamReader.COMMENT -> {
                 // TODO: optimize this for CDATA and COMMENT
                 writer.write(reader.getText());
-                break;
-            default:
-                throw new IllegalStateException();
+            }
+            default -> throw new IllegalStateException();
         }
     }
 }
diff --git a/pom.xml b/pom.xml
index c38b263d4..ec18b5b1f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1035,7 +1035,7 @@
                         <compilerArg>-XDcompilePolicy=simple</compilerArg>
                         
<compilerArg>-XDaddTypeAnnotationsToSymbol=true</compilerArg>
                         <compilerArg>--should-stop=ifError=FLOW</compilerArg>
-                        <compilerArg>-Xplugin:ErrorProne 
-XepExcludedPaths:.*/org/(jaxen|w3c)/.* -Xep:MissingOverride:ERROR</compilerArg>
+                        <compilerArg>-Xplugin:ErrorProne 
-XepExcludedPaths:.*/org/(jaxen|w3c)/.* -Xep:MissingOverride:ERROR 
-Xep:StatementSwitchToExpressionSwitch:ERROR</compilerArg>
                         
<compilerArg>-J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED</compilerArg>
                         
<compilerArg>-J--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED</compilerArg>
                         
<compilerArg>-J--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED</compilerArg>
diff --git 
a/systests/osgi-tests/src/test/java/org/apache/axiom/test/UsesConstraintsTest.java
 
b/systests/osgi-tests/src/test/java/org/apache/axiom/test/UsesConstraintsTest.java
index 57528eff5..806c84bd2 100644
--- 
a/systests/osgi-tests/src/test/java/org/apache/axiom/test/UsesConstraintsTest.java
+++ 
b/systests/osgi-tests/src/test/java/org/apache/axiom/test/UsesConstraintsTest.java
@@ -71,14 +71,13 @@ public class UsesConstraintsTest {
         @Override
         public void frameworkEvent(FrameworkEvent event) {
             switch (event.getType()) {
-                case FrameworkEvent.STARTED:
-                    latch.countDown();
-                    break;
-                case FrameworkEvent.ERROR:
+                case FrameworkEvent.STARTED -> latch.countDown();
+                case FrameworkEvent.ERROR -> {
                     if 
(regex.matcher(event.getThrowable().getMessage()).matches()) {
                         System.out.println("Got expected");
                         gotExpectedError = true;
                     }
+                }
             }
         }
 
diff --git 
a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/container/DocumentElementExtractor.java
 
b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/container/DocumentElementExtractor.java
index 20d892173..6e22d4a53 100644
--- 
a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/container/DocumentElementExtractor.java
+++ 
b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/container/DocumentElementExtractor.java
@@ -61,21 +61,24 @@ public class DocumentElementExtractor extends 
XMLStreamReaderWrapper {
         while (true) {
             event = super.next();
             switch (event) {
-                case XMLStreamConstants.START_ELEMENT:
+                case XMLStreamConstants.START_ELEMENT -> {
                     depth++;
                     break loop;
-                case XMLStreamConstants.END_ELEMENT:
+                }
+                case XMLStreamConstants.END_ELEMENT -> {
                     depth--;
                     break loop;
-                case XMLStreamConstants.START_DOCUMENT:
-                case XMLStreamConstants.END_DOCUMENT:
+                }
+                case XMLStreamConstants.START_DOCUMENT, 
XMLStreamConstants.END_DOCUMENT -> {
                     break loop;
-                default:
+                }
+                default -> {
                     if (depth > 0) {
                         break loop;
                     } else {
                         continue loop;
                     }
+                }
             }
         }
         return event;
diff --git 
a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/container/RootWhitespaceFilter.java
 
b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/container/RootWhitespaceFilter.java
index b54386e1d..6daf8d201 100644
--- 
a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/container/RootWhitespaceFilter.java
+++ 
b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/container/RootWhitespaceFilter.java
@@ -39,21 +39,24 @@ public class RootWhitespaceFilter extends 
XMLStreamReaderWrapper {
         while (true) {
             event = super.next();
             switch (event) {
-                case XMLStreamConstants.START_ELEMENT:
+                case XMLStreamConstants.START_ELEMENT -> {
                     depth++;
                     break loop;
-                case XMLStreamConstants.END_ELEMENT:
+                }
+                case XMLStreamConstants.END_ELEMENT -> {
                     depth--;
                     break loop;
-                case XMLStreamConstants.CHARACTERS:
-                case XMLStreamConstants.SPACE:
+                }
+                case XMLStreamConstants.CHARACTERS, XMLStreamConstants.SPACE 
-> {
                     if (depth > 0) {
                         break loop;
                     } else {
                         continue loop;
                     }
-                default:
+                }
+                default -> {
                     break loop;
+                }
             }
         }
         return event;
diff --git 
a/testing/axiom-truth/src/main/java/org/apache/axiom/truth/AxiomTraverser.java 
b/testing/axiom-truth/src/main/java/org/apache/axiom/truth/AxiomTraverser.java
index 4ad0f519c..60f7edd51 100644
--- 
a/testing/axiom-truth/src/main/java/org/apache/axiom/truth/AxiomTraverser.java
+++ 
b/testing/axiom-truth/src/main/java/org/apache/axiom/truth/AxiomTraverser.java
@@ -82,30 +82,23 @@ final class AxiomTraverser implements Traverser {
                 }
             }
         }
-        switch (node.getType()) {
-            case OMNode.DTD_NODE:
-                return Event.DOCUMENT_TYPE;
-            case OMNode.ELEMENT_NODE:
-                return visited ? Event.END_ELEMENT : Event.START_ELEMENT;
-            case OMNode.TEXT_NODE:
-                return Event.TEXT;
-            case OMNode.SPACE_NODE:
-                return Event.WHITESPACE;
-            case OMNode.ENTITY_REFERENCE_NODE:
+        return switch (node.getType()) {
+            case OMNode.DTD_NODE -> Event.DOCUMENT_TYPE;
+            case OMNode.ELEMENT_NODE -> visited ? Event.END_ELEMENT : 
Event.START_ELEMENT;
+            case OMNode.TEXT_NODE -> Event.TEXT;
+            case OMNode.SPACE_NODE -> Event.WHITESPACE;
+            case OMNode.ENTITY_REFERENCE_NODE -> {
                 if (expandEntityReferences) {
                     throw new UnsupportedOperationException();
                 } else {
-                    return Event.ENTITY_REFERENCE;
+                    yield Event.ENTITY_REFERENCE;
                 }
-            case OMNode.COMMENT_NODE:
-                return Event.COMMENT;
-            case OMNode.CDATA_SECTION_NODE:
-                return Event.CDATA_SECTION;
-            case OMNode.PI_NODE:
-                return Event.PROCESSING_INSTRUCTION;
-            default:
-                throw new IllegalStateException();
-        }
+            }
+            case OMNode.COMMENT_NODE -> Event.COMMENT;
+            case OMNode.CDATA_SECTION_NODE -> Event.CDATA_SECTION;
+            case OMNode.PI_NODE -> Event.PROCESSING_INSTRUCTION;
+            default -> throw new IllegalStateException();
+        };
     }
 
     @Override
@@ -157,16 +150,12 @@ final class AxiomTraverser implements Traverser {
 
     @Override
     public String getText() {
-        switch (node.getType()) {
-            case OMNode.TEXT_NODE:
-            case OMNode.SPACE_NODE:
-            case OMNode.CDATA_SECTION_NODE:
-                return ((OMText) node).getText();
-            case OMNode.COMMENT_NODE:
-                return ((OMComment) node).getValue();
-            default:
-                throw new IllegalStateException();
-        }
+        return switch (node.getType()) {
+            case OMNode.TEXT_NODE, OMNode.SPACE_NODE, 
OMNode.CDATA_SECTION_NODE ->
+                    ((OMText) node).getText();
+            case OMNode.COMMENT_NODE -> ((OMComment) node).getValue();
+            default -> throw new IllegalStateException();
+        };
     }
 
     @Override
diff --git 
a/testing/xml-testsuite/src/main/java/org/apache/axiom/ts/xml/XMLSampleProperties.java
 
b/testing/xml-testsuite/src/main/java/org/apache/axiom/ts/xml/XMLSampleProperties.java
index 93eebad1f..92203066e 100644
--- 
a/testing/xml-testsuite/src/main/java/org/apache/axiom/ts/xml/XMLSampleProperties.java
+++ 
b/testing/xml-testsuite/src/main/java/org/apache/axiom/ts/xml/XMLSampleProperties.java
@@ -57,14 +57,14 @@ final class XMLSampleProperties {
             encoding = reader.getEncoding();
             while (reader.hasNext()) {
                 switch (reader.next()) {
-                    case XMLStreamReader.DTD:
+                    case XMLStreamReader.DTD -> {
                         hasDTD = true;
                         hasInternalSubset = reader.getText().length() > 0;
                         hasExternalSubset = ((DTDInfo) 
reader).getDTDSystemId() != null;
-                        break;
-                    case XMLStreamReader.ENTITY_REFERENCE:
+                    }
+                    case XMLStreamReader.ENTITY_REFERENCE -> {
                         hasEntityReferences = true;
-                        break;
+                    }
                 }
             }
             reader.close();
diff --git 
a/testing/xml-truth/src/main/java/org/apache/axiom/truth/xml/DOMTraverser.java 
b/testing/xml-truth/src/main/java/org/apache/axiom/truth/xml/DOMTraverser.java
index d0bcea81c..7b6c1e674 100644
--- 
a/testing/xml-truth/src/main/java/org/apache/axiom/truth/xml/DOMTraverser.java
+++ 
b/testing/xml-truth/src/main/java/org/apache/axiom/truth/xml/DOMTraverser.java
@@ -54,6 +54,7 @@ final class DOMTraverser implements Traverser {
 
     @Override
     public Event next() {
+        loop:
         while (true) {
             boolean visited;
             if (node == null) {
@@ -80,12 +81,14 @@ final class DOMTraverser implements Traverser {
                 }
             }
             switch (node.getNodeType()) {
-                case Node.DOCUMENT_NODE:
+                case Node.DOCUMENT_NODE -> {
                     return null;
-                case Node.DOCUMENT_TYPE_NODE:
+                }
+                case Node.DOCUMENT_TYPE_NODE -> {
                     descend = false;
                     return Event.DOCUMENT_TYPE;
-                case Node.ELEMENT_NODE:
+                }
+                case Node.ELEMENT_NODE -> {
                     if (!visited) {
                         descend = true;
                         return Event.START_ELEMENT;
@@ -93,30 +96,35 @@ final class DOMTraverser implements Traverser {
                         descend = false;
                         return Event.END_ELEMENT;
                     }
-                case Node.TEXT_NODE:
+                }
+                case Node.TEXT_NODE -> {
                     descend = false;
                     return dom3 && ((Text) node).isElementContentWhitespace()
                             ? Event.WHITESPACE
                             : Event.TEXT;
-                case Node.ENTITY_REFERENCE_NODE:
+                }
+                case Node.ENTITY_REFERENCE_NODE -> {
                     if (expandEntityReferences) {
                         descend = !visited;
-                        break;
+                        continue loop;
                     } else {
                         descend = false;
                         return Event.ENTITY_REFERENCE;
                     }
-                case Node.COMMENT_NODE:
+                }
+                case Node.COMMENT_NODE -> {
                     descend = false;
                     return Event.COMMENT;
-                case Node.CDATA_SECTION_NODE:
+                }
+                case Node.CDATA_SECTION_NODE -> {
                     descend = false;
                     return Event.CDATA_SECTION;
-                case Node.PROCESSING_INSTRUCTION_NODE:
+                }
+                case Node.PROCESSING_INSTRUCTION_NODE -> {
                     descend = false;
                     return Event.PROCESSING_INSTRUCTION;
-                default:
-                    throw new IllegalStateException();
+                }
+                default -> throw new IllegalStateException();
             }
         }
     }
diff --git 
a/testing/xml-truth/src/main/java/org/apache/axiom/truth/xml/StAXTraverser.java 
b/testing/xml-truth/src/main/java/org/apache/axiom/truth/xml/StAXTraverser.java
index 05c6d4a1a..ff7efcc9d 100644
--- 
a/testing/xml-truth/src/main/java/org/apache/axiom/truth/xml/StAXTraverser.java
+++ 
b/testing/xml-truth/src/main/java/org/apache/axiom/truth/xml/StAXTraverser.java
@@ -40,16 +40,14 @@ final class StAXTraverser implements Traverser {
     StAXTraverser(XMLStreamReader reader) {
         this.reader = reader;
         switch (reader.getEventType()) {
-            case XMLStreamReader.START_DOCUMENT:
-                depth = -1;
-                break;
-            case XMLStreamReader.START_ELEMENT:
+            case XMLStreamReader.START_DOCUMENT -> depth = -1;
+            case XMLStreamReader.START_ELEMENT -> {
                 depth = 0;
                 atStart = true;
-                break;
-            default:
-                throw new IllegalStateException(
-                        "The reader must be positioned at a START_DOCUMENT or 
START_ELEMENT event");
+            }
+            default ->
+                    throw new IllegalStateException(
+                            "The reader must be positioned at a START_DOCUMENT 
or START_ELEMENT event");
         }
     }
 
@@ -67,36 +65,29 @@ final class StAXTraverser implements Traverser {
             } else {
                 event = reader.hasNext() ? reader.next() : 
XMLStreamReader.END_DOCUMENT;
             }
-            switch (event) {
-                case XMLStreamReader.DTD:
-                    return Event.DOCUMENT_TYPE;
-                case XMLStreamReader.START_ELEMENT:
+            return switch (event) {
+                case XMLStreamReader.DTD -> Event.DOCUMENT_TYPE;
+                case XMLStreamReader.START_ELEMENT -> {
                     if (depth != -1) {
                         depth++;
                     }
-                    return Event.START_ELEMENT;
-                case XMLStreamReader.END_ELEMENT:
+                    yield Event.START_ELEMENT;
+                }
+                case XMLStreamReader.END_ELEMENT -> {
                     if (depth != -1) {
                         depth--;
                     }
-                    return Event.END_ELEMENT;
-                case XMLStreamReader.CHARACTERS:
-                    return Event.TEXT;
-                case XMLStreamReader.SPACE:
-                    return Event.WHITESPACE;
-                case XMLStreamReader.ENTITY_REFERENCE:
-                    return Event.ENTITY_REFERENCE;
-                case XMLStreamReader.COMMENT:
-                    return Event.COMMENT;
-                case XMLStreamReader.CDATA:
-                    return Event.CDATA_SECTION;
-                case XMLStreamReader.PROCESSING_INSTRUCTION:
-                    return Event.PROCESSING_INSTRUCTION;
-                case XMLStreamReader.END_DOCUMENT:
-                    return null;
-                default:
-                    throw new IllegalStateException();
-            }
+                    yield Event.END_ELEMENT;
+                }
+                case XMLStreamReader.CHARACTERS -> Event.TEXT;
+                case XMLStreamReader.SPACE -> Event.WHITESPACE;
+                case XMLStreamReader.ENTITY_REFERENCE -> 
Event.ENTITY_REFERENCE;
+                case XMLStreamReader.COMMENT -> Event.COMMENT;
+                case XMLStreamReader.CDATA -> Event.CDATA_SECTION;
+                case XMLStreamReader.PROCESSING_INSTRUCTION -> 
Event.PROCESSING_INSTRUCTION;
+                case XMLStreamReader.END_DOCUMENT -> null;
+                default -> throw new IllegalStateException();
+            };
         } catch (XMLStreamException ex) {
             throw new TraverserException(ex);
         }
diff --git 
a/testing/xml-truth/src/main/java/org/apache/axiom/truth/xml/XMLSubject.java 
b/testing/xml-truth/src/main/java/org/apache/axiom/truth/xml/XMLSubject.java
index 4bc89c0a5..f7ca608bd 100644
--- a/testing/xml-truth/src/main/java/org/apache/axiom/truth/xml/XMLSubject.java
+++ b/testing/xml-truth/src/main/java/org/apache/axiom/truth/xml/XMLSubject.java
@@ -389,12 +389,12 @@ public final class XMLSubject extends Subject {
                     break;
                 }
                 switch (expectedEvent) {
-                    case DOCUMENT_TYPE:
+                    case DOCUMENT_TYPE -> {
                         
assertThat(actual.getRootName()).isEqualTo(expected.getRootName());
                         
assertThat(actual.getPublicId()).isEqualTo(expected.getPublicId());
                         
assertThat(actual.getSystemId()).isEqualTo(expected.getSystemId());
-                        break;
-                    case START_ELEMENT:
+                    }
+                    case START_ELEMENT -> {
                         QName actualQName = actual.getQName();
                         Map<QName, String> actualAttributes = 
actual.getAttributes();
                         QName expectedQName = expected.getQName();
@@ -412,27 +412,21 @@ public final class XMLSubject extends Subject {
                         if (!ignoreNamespaceDeclarations) {
                             
assertThat(actual.getNamespaces()).isEqualTo(expected.getNamespaces());
                         }
-                        break;
-                    case END_ELEMENT:
-                        break;
-                    case TEXT:
-                    case WHITESPACE:
-                    case COMMENT:
-                    case CDATA_SECTION:
-                        
assertThat(actual.getText()).isEqualTo(expected.getText());
-                        break;
-                    case ENTITY_REFERENCE:
+                    }
+                    case END_ELEMENT -> {}
+                    case TEXT, WHITESPACE, COMMENT, CDATA_SECTION ->
+                            
assertThat(actual.getText()).isEqualTo(expected.getText());
+                    case ENTITY_REFERENCE -> {
                         if (expandEntityReferences) {
                             throw new IllegalStateException();
                         }
                         
assertThat(actual.getEntityName()).isEqualTo(expected.getEntityName());
-                        break;
-                    case PROCESSING_INSTRUCTION:
+                    }
+                    case PROCESSING_INSTRUCTION -> {
                         
assertThat(actual.getPITarget()).isEqualTo(expected.getPITarget());
                         
assertThat(actual.getPIData()).isEqualTo(expected.getPIData());
-                        break;
-                    default:
-                        throw new IllegalStateException();
+                    }
+                    default -> throw new IllegalStateException();
                 }
             }
         } catch (TraverserException ex) {

Reply via email to