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

dbalek pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans.git


The following commit(s) were added to refs/heads/master by this push:
     new 29a9e0dc0e Code completion modified to support JDK 21 features.
     new 1be485f563 Merge pull request #6253 from dbalek/dbalek/jsva-cc-21
29a9e0dc0e is described below

commit 29a9e0dc0eb18286fabbcc9137399154df18447e
Author: Dusan Balek <dusan.ba...@oracle.com>
AuthorDate: Tue Jul 25 16:36:15 2023 +0200

    Code completion modified to support JDK 21 features.
---
 .../netbeans/modules/java/completion/BaseTask.java |  44 +++++
 .../java/completion/JavaCompletionTask.java        | 208 +++++++++++++++++----
 ...Completion_CaseBody_PatternMatchingSwitch.pass} |  45 +++++
 ...pletion_CaseLabels_PatternMatchingSwitch_1.pass |   3 +-
 ...pletion_CaseLabels_PatternMatchingSwitch_2.pass | 101 ----------
 ...pletion_CaseLabels_PatternMatchingSwitch_3.pass | 100 ----------
 .../1.8/AutoCompletion_CaseRecordPattern_1.pass    |   1 +
 .../1.8/AutoCompletion_CaseRecordPattern_2.pass    |  13 ++
 .../1.8/AutoCompletion_CaseRecordPattern_3.pass    |   2 +
 .../1.8/AutoCompletion_CaseRecordPattern_4.pass    |  15 ++
 ...oCompletion_Guard_PatternMatchingSwitch_1.pass} |  27 ++-
 ...mbersSelect_GuardedPatternMatchingSwitch_2.pass |  48 -----
 ...sSelect_ParenthesizedPatternMatchingSwitch.pass |  39 ----
 ...elect_ParenthesizedPatternMatchingSwitch_1.pass |  60 ------
 .../1.8/AutoCompletion_RecordPattern_3.pass        |   3 +-
 .../1.8/AutoCompletion_RecordPattern_4.pass        |   7 +
 .../AutoCompletion_RecordPattern_5.pass}           |   0
 ...on_VarNameSuggestion_PatternMatchingSwitch.pass |   5 +-
 ...pletion_CaseLabels_PatternMatchingSwitch_1.pass |   3 +-
 ...sSelect_ParenthesizedPatternMatchingSwitch.pass |  40 ----
 ...elect_ParenthesizedPatternMatchingSwitch_1.pass |  61 ------
 ...sSelect_ParenthesizedPatternMatchingSwitch.pass |  40 ----
 ...elect_ParenthesizedPatternMatchingSwitch_1.pass |  61 ------
 ...pletion_CaseLabels_PatternMatchingSwitch_1.pass |   3 +-
 ...pletion_CaseLabels_PatternMatchingSwitch_2.pass | 112 -----------
 ...pletion_CaseLabels_PatternMatchingSwitch_3.pass | 111 -----------
 ...pletion_CaseLabels_PatternMatchingSwitch_1.pass |   3 +-
 ...pletion_CaseLabels_PatternMatchingSwitch_2.pass | 112 -----------
 ...pletion_CaseLabels_PatternMatchingSwitch_3.pass | 111 -----------
 ...mbersSelect_GuardedPatternMatchingSwitch_2.pass |  51 -----
 ...sSelect_ParenthesizedPatternMatchingSwitch.pass |  40 ----
 ...elect_ParenthesizedPatternMatchingSwitch_1.pass |  62 ------
 ...on_VarNameSuggestion_PatternMatchingSwitch.pass |   2 -
 ...pletion_CaseLabels_PatternMatchingSwitch_1.pass |   1 -
 ...pletion_CaseLabels_PatternMatchingSwitch_2.pass | 114 -----------
 ...pletion_CaseLabels_PatternMatchingSwitch_3.pass | 113 -----------
 .../19/AutoCompletion_CaseRecordPattern_4.pass     |  15 ++
 ...AutoCompletion_Guard_PatternMatchingSwitch.pass |   1 -
 ...mbersSelect_GuardedPatternMatchingSwitch_2.pass |  51 -----
 ...sSelect_ParenthesizedPatternMatchingSwitch.pass |  40 ----
 ...elect_ParenthesizedPatternMatchingSwitch_1.pass |  62 ------
 .../19/AutoCompletion_RecordPattern_1.pass         |   1 -
 .../19/AutoCompletion_RecordPattern_2.pass         |   1 -
 ...PatternMatching.java => InstanceofPattern.java} |  24 +--
 .../completion/data/SwitchPatternMatching.java     |  21 ++-
 .../JavaCompletionTask116FeaturesTest.java         |  47 +++++
 .../JavaCompletionTask117FeaturesTest.java         |  71 -------
 .../JavaCompletionTask119FeaturesTest.java         |  61 ------
 .../JavaCompletionTask121FeaturesTest.java         | 123 ++++++++++++
 .../editor/java/JavaCompletionCollector.java       |  43 ++++-
 .../modules/editor/java/JavaCompletionItem.java    |   7 +-
 51 files changed, 579 insertions(+), 1750 deletions(-)

diff --git 
a/java/java.completion/src/org/netbeans/modules/java/completion/BaseTask.java 
b/java/java.completion/src/org/netbeans/modules/java/completion/BaseTask.java
index a08521df2d..9242e63687 100644
--- 
a/java/java.completion/src/org/netbeans/modules/java/completion/BaseTask.java
+++ 
b/java/java.completion/src/org/netbeans/modules/java/completion/BaseTask.java
@@ -340,10 +340,32 @@ abstract class BaseTask extends UserTask {
                         }
                         if (lastCase != null) {
                             stmts = lastCase.getStatements();
+                            if (stmts == null || stmts.isEmpty()) {
+                                Tree body = lastCase.getBody();
+                                if (body != null) {
+                                    last = body;
+                                } else {
+                                    Tree guard = lastCase.getGuard();
+                                    if (guard != null) {
+                                        last = guard;
+                                    }
+                                }
+                            }
                         }
                         break;
                     case CASE:
                         stmts = ((CaseTree) path.getLeaf()).getStatements();
+                        if (stmts == null || stmts.isEmpty()) {
+                            Tree body = ((CaseTree) path.getLeaf()).getBody();
+                            if (body != null) {
+                                last = body;
+                            } else {
+                                Tree guard = ((CaseTree) 
path.getLeaf()).getGuard();
+                                if (guard != null) {
+                                    last = guard;
+                                }
+                            }
+                        }
                         break;
                     case CONDITIONAL_AND: case CONDITIONAL_OR:
                         BinaryTree bt = (BinaryTree) last;
@@ -482,10 +504,32 @@ abstract class BaseTask extends UserTask {
                         }
                         if (lastCase != null) {
                             stmts = lastCase.getStatements();
+                            if (stmts == null || stmts.isEmpty()) {
+                                Tree caseBody = lastCase.getBody();
+                                if (caseBody != null) {
+                                    last = caseBody;
+                                } else {
+                                    Tree guard = lastCase.getGuard();
+                                    if (guard != null) {
+                                        last = guard;
+                                    }
+                                }
+                            }
                         }
                         break;
                     case CASE:
                         stmts = ((CaseTree) path.getLeaf()).getStatements();
+                        if (stmts == null || stmts.isEmpty()) {
+                            Tree caseBody = ((CaseTree) 
path.getLeaf()).getBody();
+                            if (caseBody != null) {
+                                last = caseBody;
+                            } else {
+                                Tree guard = ((CaseTree) 
path.getLeaf()).getGuard();
+                                if (guard != null) {
+                                    last = guard;
+                                }
+                            }
+                        }
                         break;
                 }
                 if (stmts != null) {
diff --git 
a/java/java.completion/src/org/netbeans/modules/java/completion/JavaCompletionTask.java
 
b/java/java.completion/src/org/netbeans/modules/java/completion/JavaCompletionTask.java
index c8d760a6d5..eed308f75d 100644
--- 
a/java/java.completion/src/org/netbeans/modules/java/completion/JavaCompletionTask.java
+++ 
b/java/java.completion/src/org/netbeans/modules/java/completion/JavaCompletionTask.java
@@ -55,9 +55,9 @@ import static javax.lang.model.element.ElementKind.*;
 import static javax.lang.model.element.Modifier.*;
 import static javax.lang.model.SourceVersion.RELEASE_10;
 import static javax.lang.model.SourceVersion.RELEASE_11;
-import static javax.lang.model.SourceVersion.RELEASE_13;
-import static javax.lang.model.SourceVersion.RELEASE_17;
+import static javax.lang.model.SourceVersion.RELEASE_16;
 import static javax.lang.model.SourceVersion.RELEASE_19;
+import static javax.lang.model.SourceVersion.RELEASE_21;
 import static javax.lang.model.type.TypeKind.VOID;
 
 /**
@@ -1665,10 +1665,10 @@ public final class JavaCompletionTask<T> extends 
BaseTask {
                     kinds = EnumSet.of(INTERFACE);
                 } else if (parent.getKind() == Tree.Kind.IMPORT) {
                     inImport = true;
-                    kinds = ((ImportTree) parent).isStatic() ? 
EnumSet.of(CLASS, ENUM, INTERFACE, ANNOTATION_TYPE, FIELD, METHOD, 
ENUM_CONSTANT) : EnumSet.of(CLASS, ANNOTATION_TYPE, ENUM, INTERFACE);
+                    kinds = ((ImportTree) parent).isStatic() ? 
EnumSet.of(CLASS, ENUM, INTERFACE, ANNOTATION_TYPE, RECORD, FIELD, METHOD, 
ENUM_CONSTANT, RECORD_COMPONENT) : EnumSet.of(CLASS, ANNOTATION_TYPE, ENUM, 
INTERFACE, RECORD);
                 } else if (parent.getKind() == Tree.Kind.NEW_CLASS && 
((NewClassTree) parent).getIdentifier() == fa) {
                     insideNew = true;
-                    kinds = EnumSet.of(CLASS, INTERFACE, ANNOTATION_TYPE);
+                    kinds = EnumSet.of(CLASS, INTERFACE, ANNOTATION_TYPE, 
RECORD);
                     if (grandParent.getKind() == Tree.Kind.THROW) {
                         TypeElement te = 
controller.getElements().getTypeElement("java.lang.Throwable"); //NOI18N
                         if (te != null) {
@@ -1696,14 +1696,14 @@ public final class JavaCompletionTask<T> extends 
BaseTask {
                                 return;
                             }
                         }
-                        kinds = EnumSet.of(CLASS, ENUM, ANNOTATION_TYPE, 
INTERFACE, FIELD, METHOD, ENUM_CONSTANT);
+                        kinds = EnumSet.of(CLASS, ENUM, ANNOTATION_TYPE, 
INTERFACE, RECORD, FIELD, METHOD, ENUM_CONSTANT, RECORD_COMPONENT);
                     }
                 } else if (parent.getKind() == Tree.Kind.ASSIGNMENT && 
((AssignmentTree) parent).getExpression() == fa && grandParent != null && 
grandParent.getKind() == Tree.Kind.ANNOTATION) {
                     if (type.getKind() == TypeKind.ERROR && 
el.getKind().isClass()) {
                         el = 
controller.getElements().getPackageElement(((TypeElement) 
el).getQualifiedName());
                     }
                     if (el instanceof PackageElement) {
-                        addPackageContent(env, (PackageElement) el, 
EnumSet.of(CLASS, ENUM, ANNOTATION_TYPE, INTERFACE), null, false, false);
+                        addPackageContent(env, (PackageElement) el, 
EnumSet.of(CLASS, ENUM, ANNOTATION_TYPE, INTERFACE, RECORD), null, false, 
false);
                     } else if (type.getKind() == TypeKind.DECLARED) {
                         addMemberConstantsAndTypes(env, (DeclaredType) type, 
el);
                     }
@@ -1719,7 +1719,7 @@ public final class JavaCompletionTask<T> extends BaseTask 
{
                             baseType = 
controller.getTypes().getDeclaredType(te);
                         }
                     } else {
-                        kinds = EnumSet.of(CLASS, ENUM, ANNOTATION_TYPE, 
INTERFACE);
+                        kinds = EnumSet.of(CLASS, ENUM, ANNOTATION_TYPE, 
INTERFACE, RECORD);
                     }
                 } else if (parent.getKind() == Tree.Kind.METHOD && 
((MethodTree) parent).getThrows().contains(fa)) {
                     Types types = controller.getTypes();
@@ -1749,7 +1749,7 @@ public final class JavaCompletionTask<T> extends BaseTask 
{
                         el = 
controller.getElements().getPackageElement(((TypeElement) 
el).getQualifiedName());
                     }
                     if (el instanceof PackageElement) {
-                        addPackageContent(env, (PackageElement) el, 
EnumSet.of(CLASS, ENUM, ANNOTATION_TYPE, INTERFACE), null, false, false);
+                        addPackageContent(env, (PackageElement) el, 
EnumSet.of(CLASS, ENUM, ANNOTATION_TYPE, INTERFACE, RECORD), null, false, 
false);
                     } else if (type.getKind() == TypeKind.DECLARED) {
                         addMemberConstantsAndTypes(env, (DeclaredType) type, 
el);
                     }
@@ -1780,13 +1780,13 @@ public final class JavaCompletionTask<T> extends 
BaseTask {
                         }
                         kinds = EnumSet.of(INTERFACE, ANNOTATION_TYPE);
                     } else {
-                        kinds = EnumSet.of(CLASS, ENUM, ANNOTATION_TYPE, 
INTERFACE, FIELD, METHOD, ENUM_CONSTANT);
+                        kinds = EnumSet.of(CLASS, ENUM, ANNOTATION_TYPE, 
INTERFACE, RECORD, FIELD, METHOD, ENUM_CONSTANT, RECORD_COMPONENT);
                     }
                 } else if (afterLt) {
                     kinds = EnumSet.of(METHOD);
                 } else if (parent.getKind() == Tree.Kind.ENHANCED_FOR_LOOP && 
((EnhancedForLoopTree) parent).getExpression() == fa) {
                     env.insideForEachExpression();
-                    kinds = EnumSet.of(CLASS, ENUM, ANNOTATION_TYPE, 
INTERFACE, FIELD, METHOD, ENUM_CONSTANT);
+                    kinds = EnumSet.of(CLASS, ENUM, ANNOTATION_TYPE, 
INTERFACE, RECORD, FIELD, METHOD, ENUM_CONSTANT, RECORD_COMPONENT);
                 } else if (tu.getPathElementOfKind(Tree.Kind.EXPORTS, path) != 
null) {
                     kinds = EnumSet.noneOf(ElementKind.class);
                     srcOnly = true;
@@ -1795,7 +1795,7 @@ public final class JavaCompletionTask<T> extends BaseTask 
{
                 } else if (tu.getPathElementOfKind(Tree.Kind.USES, path) != 
null) {
                     kinds = EnumSet.of(ANNOTATION_TYPE, CLASS, INTERFACE);
                 } else {
-                    kinds = EnumSet.of(CLASS, ENUM, ANNOTATION_TYPE, 
INTERFACE, FIELD, METHOD, ENUM_CONSTANT);
+                    kinds = EnumSet.of(CLASS, ENUM, ANNOTATION_TYPE, 
INTERFACE, RECORD, FIELD, METHOD, ENUM_CONSTANT, RECORD_COMPONENT);
                 }
                 switch (type.getKind()) {
                     case TYPEVAR:
@@ -1997,8 +1997,56 @@ public final class JavaCompletionTask<T> extends 
BaseTask {
     private void insideMethodInvocation(Env env) throws IOException {
         TreePath path = env.getPath();
         MethodInvocationTree mi = (MethodInvocationTree) path.getLeaf();
+        String prefix = env.getPrefix();
         int offset = env.getOffset();
         TokenSequence<JavaTokenId> ts = findLastNonWhitespaceToken(env, mi, 
offset);
+        if (path.getParentPath().getLeaf().getKind() == 
Kind.CONSTANT_CASE_LABEL) {
+            CompilationController controller = env.getController();
+            controller.toPhase(Phase.RESOLVED);
+            TypeMirror tm = 
controller.getTreeUtilities().parseType(fullName(mi.getMethodSelect()), 
env.getScope().getEnclosingClass());
+            if (tm != null && tm.getKind() == TypeKind.DECLARED) {
+                TypeElement te = (TypeElement) ((DeclaredType) tm).asElement();
+                if (te.getKind() == RECORD) {
+                    List<? extends RecordComponentElement> recordComponents = 
te.getRecordComponents();
+                    int size = mi.getArguments().size();
+                    if (size <= recordComponents.size()) {
+                        TypeMirror componentType = recordComponents.get(size - 
1).getAccessor().getReturnType();
+                        if (ts != null && (ts.token().id() == 
JavaTokenId.LPAREN || ts.token().id() == JavaTokenId.COMMA)) {
+                            if (componentType.getKind() == TypeKind.DECLARED) {
+                                if (prefix != null) {
+                                    TypeMirror ptm = 
controller.getTreeUtilities().parseType(prefix, 
env.getScope().getEnclosingClass());
+                                    if (ptm != null && ptm.getKind() == 
TypeKind.DECLARED) {
+                                        TypeElement pte = (TypeElement) 
((DeclaredType) ptm).asElement();
+                                        if (pte != null && pte.getKind() == 
RECORD) {
+                                            
results.add(((RecordPatternItemFactory<T>) 
itemFactory).createRecordPatternItem(controller, pte, (DeclaredType) ptm, 
anchorOffset, null, controller.getElements().isDeprecated(pte), 
env.isInsideNew(), env.isInsideNew() || env.isInsideClass()));
+                                            env.addToExcludes(pte);
+                                        }
+                                    }
+                                }
+                                addClassTypes(env, (DeclaredType) 
componentType);
+                            }
+                            addKeyword(env, VAR_KEYWORD, SPACE, false);
+                        } else {
+                            final Map<Name, ? extends Element> 
illegalForwardRefs = env.getForwardReferences();
+                            Scope scope = env.getScope();
+                            final ExecutableElement method = 
scope.getEnclosingMethod();
+                            ElementUtilities.ElementAcceptor acceptor = new 
ElementUtilities.ElementAcceptor() {
+                                @Override
+                                public boolean accept(Element e, TypeMirror t) 
{
+                                    return (method == null || method == 
e.getEnclosingElement() || e.getModifiers().contains(FINAL)
+                                            || EnumSet.of(LOCAL_VARIABLE, 
PARAMETER, EXCEPTION_PARAMETER, 
RESOURCE_VARIABLE).contains(simplifyElementKind(e.getKind())) && 
controller.getSourceVersion().compareTo(SourceVersion.RELEASE_8) >= 0 && 
controller.getElementUtilities().isEffectivelyFinal((VariableElement)e))
+                                            && 
!illegalForwardRefs.containsKey(e.getSimpleName());
+                                }
+                            };
+                            for (String name : 
Utilities.varNamesSuggestions(componentType, LOCAL_VARIABLE, 
EnumSet.noneOf(Modifier.class), null, prefix, controller.getTypes(), 
controller.getElements(), 
controller.getElementUtilities().getLocalMembersAndVars(scope, acceptor), 
CodeStyle.getDefault(controller.getDocument()))) {
+                                
results.add(itemFactory.createVariableItem(env.getController(), name, 
anchorOffset, true, false));
+                            }
+                        }
+                    }
+                    return;
+                }
+            }
+        }
         if (ts == null || (ts.token().id() != JavaTokenId.LPAREN && 
ts.token().id() != JavaTokenId.COMMA)) {
             SourcePositions sp = env.getSourcePositions();
             CompilationUnitTree root = env.getRoot();
@@ -2015,7 +2063,6 @@ public final class JavaCompletionTask<T> extends BaseTask 
{
             }
             return;
         }
-        String prefix = env.getPrefix();
         if (prefix == null || prefix.length() == 0) {
             addMethodArguments(env, mi);
         }
@@ -2412,6 +2459,7 @@ public final class JavaCompletionTask<T> extends BaseTask 
{
         int offset = env.getOffset();
         TreePath path = env.getPath();
         CaseTree cst = (CaseTree) path.getLeaf();
+        String prefix = env.getPrefix();
         SourcePositions sourcePositions = env.getSourcePositions();
         CompilationUnitTree root = env.getRoot();
         CompilationController controller = env.getController();
@@ -2433,8 +2481,9 @@ public final class JavaCompletionTask<T> extends BaseTask 
{
 
         if (firstCaseLabelTree != null && 
((sourcePositions.getStartPosition(root, firstCaseLabelTree) >= offset)
                 || (caseErroneousTree != null && caseErroneousTree.getKind() 
== Tree.Kind.ERRONEOUS && ((ErroneousTree) 
caseErroneousTree).getErrorTrees().isEmpty() && 
sourcePositions.getEndPosition(root, caseErroneousTree) >= offset))) {
-
-            if (parentPath.getLeaf().getKind() == Tree.Kind.SWITCH || 
parentPath.getLeaf().getKind() == Kind.SWITCH_EXPRESSION) {
+            if (firstCaseLabelTree.getKind() == Kind.CONSTANT_CASE_LABEL && 
((ConstantCaseLabelTree) firstCaseLabelTree).getConstantExpression().getKind() 
== Kind.NULL_LITERAL) {
+                addKeyword(env, DEFAULT_KEYWORD, null, false);
+            } else if (firstCaseLabelTree.getKind() != Kind.DEFAULT_CASE_LABEL 
&& (parentPath.getLeaf().getKind() == Tree.Kind.SWITCH || 
parentPath.getLeaf().getKind() == Kind.SWITCH_EXPRESSION)) {
                 ExpressionTree exprTree;
                 if (parentPath.getLeaf().getKind() == Tree.Kind.SWITCH) {
                     exprTree = ((SwitchTree) 
parentPath.getLeaf()).getExpression();
@@ -2446,18 +2495,35 @@ public final class JavaCompletionTask<T> extends 
BaseTask {
                     if (((DeclaredType) tm).asElement().getKind() == ENUM) {
                         addEnumConstants(env, (TypeElement) ((DeclaredType) 
tm).asElement());
                     } else {
-                        addLocalConstantsAndTypes(env);
-                        if 
(env.getController().getSourceVersion().compareTo(RELEASE_17) >= 0) {
+                        if 
(env.getController().getSourceVersion().compareTo(RELEASE_21) >= 0) {
+                            if (prefix != null) {
+                                TypeMirror ptm = 
controller.getTreeUtilities().parseType(prefix, 
env.getScope().getEnclosingClass());
+                                if (ptm != null && ptm.getKind() == 
TypeKind.DECLARED) {
+                                    TypeElement pte = (TypeElement) 
((DeclaredType) ptm).asElement();
+                                    if (pte != null && pte.getKind() == 
RECORD) {
+                                        
results.add(((RecordPatternItemFactory<T>) 
itemFactory).createRecordPatternItem(controller, pte, (DeclaredType) ptm, 
anchorOffset, null, controller.getElements().isDeprecated(pte), 
env.isInsideNew(), env.isInsideNew() || env.isInsideClass()));
+                                        env.addToExcludes(pte);
+                                    }
+                                }
+                            }
                             addCaseLabels(env, cst);
                         }
+                        addLocalConstantsAndTypes(env);
                     }
                 } else {
                     addLocalConstantsAndTypes(env);
                 }
             }
         } else if (lastCaseLabelTree != null && lastCaseLabelTree.getKind() == 
Tree.Kind.PATTERN_CASE_LABEL
-                && 
env.getController().getSourceVersion().compareTo(RELEASE_19) >= 0 && 
sourcePositions.getEndPosition(root, firstCaseLabelTree) < offset) {
-            addKeyword(env, WHEN_KEYWORD, SPACE, false);
+                && 
env.getController().getSourceVersion().compareTo(RELEASE_21) >= 0 && 
cst.getBody() == null) {
+            if (cst.getGuard() == null) {
+                addKeyword(env, WHEN_KEYWORD, SPACE, false);
+            } else {
+                TokenSequence<JavaTokenId> ts = 
findLastNonWhitespaceToken(env, cst, offset);
+                if (ts != null && ts.token().id() == JavaTokenId.IDENTIFIER && 
WHEN_KEYWORD.contentEquals(ts.token().text())) {
+                    localResult(env);
+                }
+            }
         } else {
             TokenSequence<JavaTokenId> ts = findLastNonWhitespaceToken(env, 
cst, offset);
             if (ts != null && ts.token().id() == JavaTokenId.IDENTIFIER) {
@@ -2471,7 +2537,7 @@ public final class JavaCompletionTask<T> extends BaseTask 
{
                         }
                     }
                 }
-            } else if (ts != null && ts.token().id() != JavaTokenId.DEFAULT) {
+            } else if (ts != null && ts.token().id() != JavaTokenId.NULL && 
ts.token().id() != JavaTokenId.DEFAULT) {
                 localResult(env);
                 addKeywordsForBlock(env);
             }
@@ -2533,9 +2599,21 @@ public final class JavaCompletionTask<T> extends 
BaseTask {
     }
 
     private void insideTypeCheck(Env env) throws IOException {
+        CompilationController controller = env.getController();
+        String prefix = env.getPrefix();
         InstanceOfTree iot = (InstanceOfTree) env.getPath().getLeaf();
         TokenSequence<JavaTokenId> ts = findLastNonWhitespaceToken(env, iot, 
env.getOffset());
         if (ts != null && ts.token().id() == JavaTokenId.INSTANCEOF) {
+            if (prefix != null && 
controller.getSourceVersion().compareTo(RELEASE_21) >= 0) {
+                TypeMirror tm = 
controller.getTreeUtilities().parseType(prefix, 
env.getScope().getEnclosingClass());
+                if (tm != null && tm.getKind() == TypeKind.DECLARED) {
+                    TypeElement te = (TypeElement) ((DeclaredType) 
tm).asElement();
+                    if (te != null && te.getKind() == RECORD) {
+                        results.add(((RecordPatternItemFactory<T>) 
itemFactory).createRecordPatternItem(controller, te, (DeclaredType) tm, 
anchorOffset, null, controller.getElements().isDeprecated(te), 
env.isInsideNew(), env.isInsideNew() || env.isInsideClass()));
+                        env.addToExcludes(te);
+                    }
+                }
+            }
             addClassTypes(env, null);
         }
     }
@@ -2845,6 +2923,26 @@ public final class JavaCompletionTask<T> extends 
BaseTask {
             et = ((AnnotatedTypeTree) et).getUnderlyingType();
             exPath = new TreePath(exPath, et);
         }
+        if (et.getKind() == Tree.Kind.INSTANCE_OF && endPos < offset && 
controller.getSourceVersion().compareTo(RELEASE_16) >= 0) {
+            if (((InstanceOfTree) et).getPattern() == null) {
+                TypeMirror tm = controller.getTrees().getTypeMirror(new 
TreePath(exPath, ((InstanceOfTree) et).getType()));
+                final Map<Name, ? extends Element> illegalForwardRefs = 
env.getForwardReferences();
+                Scope scope = env.getScope();
+                final ExecutableElement method = scope.getEnclosingMethod();
+                ElementUtilities.ElementAcceptor acceptor = new 
ElementUtilities.ElementAcceptor() {
+                    @Override
+                    public boolean accept(Element e, TypeMirror t) {
+                        return (method == null || method == 
e.getEnclosingElement() || e.getModifiers().contains(FINAL)
+                                || EnumSet.of(LOCAL_VARIABLE, PARAMETER, 
EXCEPTION_PARAMETER, 
RESOURCE_VARIABLE).contains(simplifyElementKind(e.getKind())) && 
controller.getSourceVersion().compareTo(SourceVersion.RELEASE_8) >= 0 && 
controller.getElementUtilities().isEffectivelyFinal((VariableElement)e))
+                                && 
!illegalForwardRefs.containsKey(e.getSimpleName());
+                    }
+                };
+                for (String name : Utilities.varNamesSuggestions(tm, varKind, 
varMods, null, prefix, controller.getTypes(), controller.getElements(), 
controller.getElementUtilities().getLocalMembersAndVars(scope, acceptor), 
CodeStyle.getDefault(controller.getDocument()))) {
+                    
results.add(itemFactory.createVariableItem(env.getController(), name, 
anchorOffset, true, false));
+                }
+            }
+            return;
+        }
         if (parent.getKind() != Tree.Kind.PARENTHESIZED
                 && (et.getKind() == Tree.Kind.PRIMITIVE_TYPE || et.getKind() 
== Tree.Kind.ARRAY_TYPE || et.getKind() == Tree.Kind.PARAMETERIZED_TYPE)) {
             TypeMirror tm = controller.getTrees().getTypeMirror(exPath);
@@ -3068,21 +3166,6 @@ public final class JavaCompletionTask<T> extends 
BaseTask {
         }
     }
     
-    private void addClassTypes(final Env env, DeclaredType baseType) throws 
IOException{
-        EnumSet<ElementKind> classKinds = EnumSet.of(CLASS, INTERFACE, ENUM, 
ANNOTATION_TYPE, TYPE_PARAMETER);
-        if (isRecordSupported(env)) {
-            classKinds.add(RECORD);
-        }
-        addTypes(env, classKinds, baseType);
-    }
-
-    private boolean isRecordSupported(final Env env) {
-        return 
env.getController().getSourceVersion().compareTo(SourceVersion.RELEASE_14) >= 0;
-    }
-    private boolean isSealedSupported(final Env env) {
-        return 
env.getController().getSourceVersion().compareTo(SourceVersion.RELEASE_15) >= 0;
-    }
-
     private void insideRecord(Env env) throws IOException {
         int offset = env.getOffset();
         env.insideClass();
@@ -3255,13 +3338,55 @@ public final class JavaCompletionTask<T> extends 
BaseTask {
     }
 
     private void insideDeconstructionRecordPattern(final Env env) throws 
IOException {
-        final CompilationController controller = env.getController();
-        final Elements elements = controller.getElements();
-        TypeMirror tm = 
controller.getTreeUtilities().parseType(env.getPrefix(), 
env.getScope().getEnclosingClass());
-        TypeElement e = (TypeElement) ((DeclaredType) tm).asElement();
-        if (e.getSimpleName().toString().contentEquals(env.getPrefix()) && 
(e.getKind() == ElementKind.RECORD)) {
-            results.add(((RecordPatternItemFactory<T>) 
itemFactory).createRecordPatternItem(env.getController(), e, (DeclaredType) 
e.asType(), anchorOffset, null, elements.isDeprecated(e), env.isInsideNew(), 
env.isInsideNew() || env.isInsideClass()));
+        DeconstructionPatternTree dpt = (DeconstructionPatternTree) 
env.getPath().getLeaf();
+        int offset = env.getOffset();
+        String prefix = env.getPrefix();
+        TokenSequence<JavaTokenId> ts = findLastNonWhitespaceToken(env, dpt, 
offset);
+        if (ts == null || (ts.token().id() != JavaTokenId.LPAREN && 
ts.token().id() != JavaTokenId.COMMA)) {
+            return;
         }
+        CompilationController controller = env.getController();
+        controller.toPhase(Phase.RESOLVED);
+        TypeMirror tm = controller.getTrees().getTypeMirror(env.getPath());
+        if (tm != null && tm.getKind() == TypeKind.DECLARED) {
+            TypeElement te = (TypeElement) ((DeclaredType) tm).asElement();
+            if (te != null && te.getKind() == RECORD) {
+                List<? extends RecordComponentElement> recordComponents = 
te.getRecordComponents();
+                int size = dpt.getNestedPatterns().size();
+                if (size <= recordComponents.size()) {
+                    TypeMirror componentType = recordComponents.get(size - 
1).getAccessor().getReturnType();
+                    if (componentType.getKind() == TypeKind.DECLARED) {
+                        if (prefix != null) {
+                            TypeMirror ptm = 
controller.getTreeUtilities().parseType(prefix, 
env.getScope().getEnclosingClass());
+                            if (ptm != null && ptm.getKind() == 
TypeKind.DECLARED) {
+                                TypeElement pte = (TypeElement) 
((DeclaredType) ptm).asElement();
+                                if (pte != null && pte.getKind() == RECORD) {
+                                    results.add(((RecordPatternItemFactory<T>) 
itemFactory).createRecordPatternItem(controller, pte, (DeclaredType) ptm, 
anchorOffset, null, controller.getElements().isDeprecated(pte), 
env.isInsideNew(), env.isInsideNew() || env.isInsideClass()));
+                                    env.addToExcludes(pte);
+                                }
+                            }
+                        }
+                        addClassTypes(env, (DeclaredType) componentType);
+                    }
+                    addKeyword(env, VAR_KEYWORD, SPACE, false);
+                }
+            }
+        }
+    }
+
+    private void addClassTypes(final Env env, DeclaredType baseType) throws 
IOException{
+        EnumSet<ElementKind> classKinds = EnumSet.of(CLASS, INTERFACE, ENUM, 
ANNOTATION_TYPE, TYPE_PARAMETER);
+        if (isRecordSupported(env)) {
+            classKinds.add(RECORD);
+        }
+        addTypes(env, classKinds, baseType);
+    }
+
+    private boolean isRecordSupported(final Env env) {
+        return 
env.getController().getSourceVersion().compareTo(SourceVersion.RELEASE_14) >= 0;
+    }
+    private boolean isSealedSupported(final Env env) {
+        return 
env.getController().getSourceVersion().compareTo(SourceVersion.RELEASE_15) >= 0;
     }
 
     private void localResult(Env env) throws IOException {
@@ -4090,7 +4215,7 @@ public final class JavaCompletionTask<T> extends BaseTask 
{
         if (!nullUsed) {
             addKeyword(env, NULL_KEYWORD, null, false);
         }
-        if (!defaultUsed && !patternUsedInCase) {
+        if (nullUsed && !defaultUsed && !patternUsedInCase) {
             addKeyword(env, DEFAULT_KEYWORD, null, false);
         }
     }
@@ -4215,6 +4340,7 @@ public final class JavaCompletionTask<T> extends BaseTask 
{
                 case ENUM:
                 case INTERFACE:
                 case ANNOTATION_TYPE:
+                case RECORD:
                     
results.add(itemFactory.createTypeItem(env.getController(), (TypeElement) e, 
(DeclaredType) e.asType(), anchorOffset, null, elements.isDeprecated(e), 
env.isInsideNew(), env.isInsideNew() || env.isInsideClass(), false, false, 
false));
                     env.addToExcludes(e);
                     break;
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/10/AutoCompletion_CaseLabels_PatternMatchingSwitch_3.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_CaseBody_PatternMatchingSwitch.pass
similarity index 73%
rename from 
java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/10/AutoCompletion_CaseLabels_PatternMatchingSwitch_3.pass
rename to 
java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_CaseBody_PatternMatchingSwitch.pass
index 49639ae8ca..615e4fb668 100644
--- 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/10/AutoCompletion_CaseLabels_PatternMatchingSwitch_3.pass
+++ 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_CaseBody_PatternMatchingSwitch.pass
@@ -1,3 +1,46 @@
+Integer j
+Object obj
+Number v
+protected native Object clone()
+public boolean equals(Object arg0)
+protected void finalize()
+public final native Class<?> getClass()
+public native int hashCode()
+public final native void notify()
+public final native void notifyAll()
+public void op(Object obj)
+public String toString()
+public final void wait()
+public final native void wait(long arg0)
+public final void wait(long arg0, int arg1)
+assert
+boolean
+byte
+char
+class
+do
+double
+final
+float
+for
+if
+int
+long
+new
+record
+return
+short
+strictfp
+super
+switch
+synchronized
+this
+throw
+try
+var
+void
+while
+yield
 AbstractMethodError
 Appendable
 ArithmeticException
@@ -19,6 +62,7 @@ ClassNotFoundException
 ClassValue
 CloneNotSupportedException
 Cloneable
+Color
 Comparable
 Compiler
 Deprecated
@@ -66,6 +110,7 @@ Object
 OutOfMemoryError
 Override
 Package
+Point
 Process
 ProcessBuilder
 ProcessHandle
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_CaseLabels_PatternMatchingSwitch_1.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_CaseLabels_PatternMatchingSwitch_1.pass
index bb15c49e0d..f9045b5a1b 100644
--- 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_CaseLabels_PatternMatchingSwitch_1.pass
+++ 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_CaseLabels_PatternMatchingSwitch_1.pass
@@ -1,4 +1,3 @@
-default
 null
 AbstractMethodError
 Appendable
@@ -21,6 +20,7 @@ ClassNotFoundException
 ClassValue
 CloneNotSupportedException
 Cloneable
+Color
 Comparable
 Compiler
 Deprecated
@@ -64,6 +64,7 @@ Object
 OutOfMemoryError
 Override
 Package
+Point
 Process
 ProcessBuilder
 Readable
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_CaseLabels_PatternMatchingSwitch_2.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_CaseLabels_PatternMatchingSwitch_2.pass
deleted file mode 100644
index d42b16a149..0000000000
--- 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_CaseLabels_PatternMatchingSwitch_2.pass
+++ /dev/null
@@ -1,101 +0,0 @@
-default
-AbstractMethodError
-Appendable
-ArithmeticException
-ArrayIndexOutOfBoundsException
-ArrayStoreException
-AssertionError
-AutoCloseable
-Boolean
-BootstrapMethodError
-Byte
-CharSequence
-Character
-Class
-ClassCastException
-ClassCircularityError
-ClassFormatError
-ClassLoader
-ClassNotFoundException
-ClassValue
-CloneNotSupportedException
-Cloneable
-Comparable
-Compiler
-Deprecated
-Double
-Enum
-EnumConstantNotPresentException
-Error
-Exception
-ExceptionInInitializerError
-Float
-FunctionalInterface
-IllegalAccessError
-IllegalAccessException
-IllegalArgumentException
-IllegalMonitorStateException
-IllegalStateException
-IllegalThreadStateException
-IncompatibleClassChangeError
-IndexOutOfBoundsException
-InheritableThreadLocal
-InstantiationError
-InstantiationException
-IntStream
-Integer
-InternalError
-InterruptedException
-Iterable
-LinkageError
-Long
-Math
-NegativeArraySizeException
-NoClassDefFoundError
-NoSuchFieldError
-NoSuchFieldException
-NoSuchMethodError
-NoSuchMethodException
-NullPointerException
-Number
-NumberFormatException
-Object
-OutOfMemoryError
-Override
-Package
-Process
-ProcessBuilder
-Readable
-ReflectiveOperationException
-Runnable
-Runtime
-RuntimeException
-RuntimePermission
-SafeVarargs
-SecurityException
-SecurityManager
-Short
-StackOverflowError
-StackTraceElement
-StrictMath
-String
-StringBuffer
-StringBuilder
-StringIndexOutOfBoundsException
-SuppressWarnings
-System
-Test
-Thread
-ThreadDeath
-ThreadGroup
-ThreadLocal
-Throwable
-TypeNotPresentException
-UnknownError
-UnsatisfiedLinkError
-UnsupportedClassVersionError
-UnsupportedOperationException
-VerifyError
-VirtualMachineError
-Void
-java
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_CaseLabels_PatternMatchingSwitch_3.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_CaseLabels_PatternMatchingSwitch_3.pass
deleted file mode 100644
index 33dec11b49..0000000000
--- 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_CaseLabels_PatternMatchingSwitch_3.pass
+++ /dev/null
@@ -1,100 +0,0 @@
-AbstractMethodError
-Appendable
-ArithmeticException
-ArrayIndexOutOfBoundsException
-ArrayStoreException
-AssertionError
-AutoCloseable
-Boolean
-BootstrapMethodError
-Byte
-CharSequence
-Character
-Class
-ClassCastException
-ClassCircularityError
-ClassFormatError
-ClassLoader
-ClassNotFoundException
-ClassValue
-CloneNotSupportedException
-Cloneable
-Comparable
-Compiler
-Deprecated
-Double
-Enum
-EnumConstantNotPresentException
-Error
-Exception
-ExceptionInInitializerError
-Float
-FunctionalInterface
-IllegalAccessError
-IllegalAccessException
-IllegalArgumentException
-IllegalMonitorStateException
-IllegalStateException
-IllegalThreadStateException
-IncompatibleClassChangeError
-IndexOutOfBoundsException
-InheritableThreadLocal
-InstantiationError
-InstantiationException
-IntStream
-Integer
-InternalError
-InterruptedException
-Iterable
-LinkageError
-Long
-Math
-NegativeArraySizeException
-NoClassDefFoundError
-NoSuchFieldError
-NoSuchFieldException
-NoSuchMethodError
-NoSuchMethodException
-NullPointerException
-Number
-NumberFormatException
-Object
-OutOfMemoryError
-Override
-Package
-Process
-ProcessBuilder
-Readable
-ReflectiveOperationException
-Runnable
-Runtime
-RuntimeException
-RuntimePermission
-SafeVarargs
-SecurityException
-SecurityManager
-Short
-StackOverflowError
-StackTraceElement
-StrictMath
-String
-StringBuffer
-StringBuilder
-StringIndexOutOfBoundsException
-SuppressWarnings
-System
-Test
-Thread
-ThreadDeath
-ThreadGroup
-ThreadLocal
-Throwable
-TypeNotPresentException
-UnknownError
-UnsatisfiedLinkError
-UnsupportedClassVersionError
-UnsupportedOperationException
-VerifyError
-VirtualMachineError
-Void
-java
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_CaseRecordPattern_1.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_CaseRecordPattern_1.pass
new file mode 100644
index 0000000000..3dea321b45
--- /dev/null
+++ 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_CaseRecordPattern_1.pass
@@ -0,0 +1 @@
+Point(Number x, Number y)
\ No newline at end of file
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_CaseRecordPattern_2.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_CaseRecordPattern_2.pass
new file mode 100644
index 0000000000..88a361782b
--- /dev/null
+++ 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_CaseRecordPattern_2.pass
@@ -0,0 +1,13 @@
+var
+Byte
+Double
+Float
+Integer
+Long
+Number
+Short
+com
+java
+javax
+org
+sun
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_CaseRecordPattern_3.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_CaseRecordPattern_3.pass
new file mode 100644
index 0000000000..6da8f92d24
--- /dev/null
+++ 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_CaseRecordPattern_3.pass
@@ -0,0 +1,2 @@
+n
+number
\ No newline at end of file
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_CaseRecordPattern_4.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_CaseRecordPattern_4.pass
new file mode 100644
index 0000000000..da51503791
--- /dev/null
+++ 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_CaseRecordPattern_4.pass
@@ -0,0 +1,15 @@
+public byte byteValue()
+public abstract double doubleValue()
+public boolean equals(Object arg0)
+public abstract float floatValue()
+public final native Class<?> getClass()
+public native int hashCode()
+public abstract int intValue()
+public abstract long longValue()
+public final native void notify()
+public final native void notifyAll()
+public short shortValue()
+public String toString()
+public final void wait()
+public final native void wait(long arg0)
+public final void wait(long arg0, int arg1)
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/10/AutoCompletion_CaseLabels_PatternMatchingSwitch_2.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_Guard_PatternMatchingSwitch_1.pass
similarity index 77%
rename from 
java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/10/AutoCompletion_CaseLabels_PatternMatchingSwitch_2.pass
rename to 
java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_Guard_PatternMatchingSwitch_1.pass
index b76a424913..572d58beba 100644
--- 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/10/AutoCompletion_CaseLabels_PatternMatchingSwitch_2.pass
+++ 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_Guard_PatternMatchingSwitch_1.pass
@@ -1,4 +1,27 @@
-default
+Object obj
+CharSequence s
+protected native Object clone()
+public boolean equals(Object arg0)
+protected void finalize()
+public final native Class<?> getClass()
+public native int hashCode()
+public final native void notify()
+public final native void notifyAll()
+public void op(Object obj)
+public String toString()
+public final void wait()
+public final native void wait(long arg0)
+public final void wait(long arg0, int arg1)
+boolean
+byte
+char
+double
+float
+int
+long
+short
+super
+this
 AbstractMethodError
 Appendable
 ArithmeticException
@@ -20,6 +43,7 @@ ClassNotFoundException
 ClassValue
 CloneNotSupportedException
 Cloneable
+Color
 Comparable
 Compiler
 Deprecated
@@ -67,6 +91,7 @@ Object
 OutOfMemoryError
 Override
 Package
+Point
 Process
 ProcessBuilder
 ProcessHandle
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_MembersSelect_GuardedPatternMatchingSwitch_2.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_MembersSelect_GuardedPatternMatchingSwitch_2.pass
deleted file mode 100644
index 9458e5c242..0000000000
--- 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_MembersSelect_GuardedPatternMatchingSwitch_2.pass
+++ /dev/null
@@ -1,48 +0,0 @@
-public abstract boolean allMatch(IntPredicate arg0)
-public abstract boolean anyMatch(IntPredicate arg0)
-public abstract R collect(Supplier<R> arg0, ObjIntConsumer<R> arg1, 
BiConsumer<R, R> arg2)
-public boolean equals(Object arg0)
-public abstract boolean isParallel()
-public abstract boolean noneMatch(IntPredicate arg0)
-public abstract DoubleStream asDoubleStream()
-public abstract LongStream asLongStream()
-public abstract OptionalDouble average()
-public abstract Stream<Integer> boxed()
-public abstract void close()
-public abstract long count()
-public abstract IntStream distinct()
-public abstract IntStream filter(IntPredicate arg0)
-public abstract OptionalInt findAny()
-public abstract OptionalInt findFirst()
-public abstract IntStream flatMap(IntFunction<? extends IntStream> arg0)
-public abstract void forEach(IntConsumer arg0)
-public abstract void forEachOrdered(IntConsumer arg0)
-public final native Class<?> getClass()
-public native int hashCode()
-public abstract OfInt iterator()
-public abstract IntStream limit(long arg0)
-public abstract IntStream map(IntUnaryOperator arg0)
-public abstract DoubleStream mapToDouble(IntToDoubleFunction arg0)
-public abstract LongStream mapToLong(IntToLongFunction arg0)
-public abstract Stream<U> mapToObj(IntFunction<? extends U> arg0)
-public abstract OptionalInt max()
-public abstract OptionalInt min()
-public final native void notify()
-public final native void notifyAll()
-public abstract IntStream onClose(Runnable arg0)
-public abstract IntStream parallel()
-public abstract IntStream peek(IntConsumer arg0)
-public abstract OptionalInt reduce(IntBinaryOperator arg0)
-public abstract int reduce(int arg0, IntBinaryOperator arg1)
-public abstract IntStream sequential()
-public abstract IntStream skip(long arg0)
-public abstract IntStream sorted()
-public abstract OfInt spliterator()
-public abstract int sum()
-public abstract IntSummaryStatistics summaryStatistics()
-public abstract int[] toArray()
-public String toString()
-public abstract IntStream unordered()
-public final void wait()
-public final native void wait(long arg0)
-public final void wait(long arg0, int arg1)
\ No newline at end of file
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_MembersSelect_ParenthesizedPatternMatchingSwitch.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_MembersSelect_ParenthesizedPatternMatchingSwitch.pass
deleted file mode 100644
index 92bc4479c9..0000000000
--- 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_MembersSelect_ParenthesizedPatternMatchingSwitch.pass
+++ /dev/null
@@ -1,39 +0,0 @@
-public abstract boolean add(Object arg0)
-public abstract void add(int arg0, Object arg1)
-public abstract boolean addAll(Collection arg0)
-public abstract boolean addAll(int arg0, Collection arg1)
-public abstract void clear()
-public abstract boolean contains(Object arg0)
-public abstract boolean containsAll(Collection arg0)
-public abstract boolean equals(Object arg0)
-public default void forEach(Consumer arg0)
-public abstract Object get(int arg0)
-public final native Class<?> getClass()
-public abstract int hashCode()
-public abstract int indexOf(Object arg0)
-public abstract boolean isEmpty()
-public abstract Iterator iterator()
-public abstract int lastIndexOf(Object arg0)
-public abstract ListIterator listIterator()
-public abstract ListIterator listIterator(int arg0)
-public final native void notify()
-public final native void notifyAll()
-public default Stream parallelStream()
-public abstract boolean remove(Object arg0)
-public abstract Object remove(int arg0)
-public abstract boolean removeAll(Collection arg0)
-public default boolean removeIf(Predicate arg0)
-public default void replaceAll(UnaryOperator arg0)
-public abstract boolean retainAll(Collection arg0)
-public abstract Object set(int arg0, Object arg1)
-public abstract int size()
-public default void sort(Comparator arg0)
-public default Spliterator spliterator()
-public default Stream stream()
-public abstract List subList(int arg0, int arg1)
-public abstract Object[] toArray()
-public abstract Object[] toArray(Object[] arg0)
-public String toString()
-public final void wait()
-public final native void wait(long arg0)
-public final void wait(long arg0, int arg1)
\ No newline at end of file
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_MembersSelect_ParenthesizedPatternMatchingSwitch_1.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_MembersSelect_ParenthesizedPatternMatchingSwitch_1.pass
deleted file mode 100644
index a00086d15c..0000000000
--- 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_MembersSelect_ParenthesizedPatternMatchingSwitch_1.pass
+++ /dev/null
@@ -1,60 +0,0 @@
-public boolean equals(Object arg0)
-public StringBuilder append(CharSequence arg0)
-public StringBuilder append(Object arg0)
-public StringBuilder append(String arg0)
-public StringBuilder append(StringBuffer arg0)
-public StringBuilder append(boolean arg0)
-public StringBuilder append(char arg0)
-public StringBuilder append(char[] arg0)
-public StringBuilder append(double arg0)
-public StringBuilder append(float arg0)
-public StringBuilder append(int arg0)
-public StringBuilder append(long arg0)
-public StringBuilder append(CharSequence arg0, int arg1, int arg2)
-public StringBuilder append(char[] arg0, int arg1, int arg2)
-public StringBuilder appendCodePoint(int arg0)
-public int capacity()
-public char charAt(int arg0)
-public default IntStream chars()
-public int codePointAt(int arg0)
-public int codePointBefore(int arg0)
-public int codePointCount(int arg0, int arg1)
-public default IntStream codePoints()
-public StringBuilder delete(int arg0, int arg1)
-public StringBuilder deleteCharAt(int arg0)
-public void ensureCapacity(int arg0)
-public void getChars(int arg0, int arg1, char[] arg2, int arg3)
-public final native Class<?> getClass()
-public native int hashCode()
-public int indexOf(String arg0)
-public int indexOf(String arg0, int arg1)
-public StringBuilder insert(int arg0, CharSequence arg1)
-public StringBuilder insert(int arg0, Object arg1)
-public StringBuilder insert(int arg0, String arg1)
-public StringBuilder insert(int arg0, boolean arg1)
-public StringBuilder insert(int arg0, char arg1)
-public StringBuilder insert(int arg0, char[] arg1)
-public StringBuilder insert(int arg0, double arg1)
-public StringBuilder insert(int arg0, float arg1)
-public StringBuilder insert(int arg0, int arg1)
-public StringBuilder insert(int arg0, long arg1)
-public StringBuilder insert(int arg0, CharSequence arg1, int arg2, int arg3)
-public StringBuilder insert(int arg0, char[] arg1, int arg2, int arg3)
-public int lastIndexOf(String arg0)
-public int lastIndexOf(String arg0, int arg1)
-public int length()
-public final native void notify()
-public final native void notifyAll()
-public int offsetByCodePoints(int arg0, int arg1)
-public StringBuilder replace(int arg0, int arg1, String arg2)
-public StringBuilder reverse()
-public void setCharAt(int arg0, char arg1)
-public void setLength(int arg0)
-public CharSequence subSequence(int arg0, int arg1)
-public String substring(int arg0)
-public String substring(int arg0, int arg1)
-public String toString()
-public void trimToSize()
-public final void wait()
-public final native void wait(long arg0)
-public final void wait(long arg0, int arg1)
\ No newline at end of file
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_RecordPattern_3.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_RecordPattern_3.pass
index 3cd138f22b..a953806cd3 100644
--- 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_RecordPattern_3.pass
+++ 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_RecordPattern_3.pass
@@ -1 +1,2 @@
-ColoredPoint(Point p, Color c)
\ No newline at end of file
+r
+rect
\ No newline at end of file
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_RecordPattern_4.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_RecordPattern_4.pass
new file mode 100644
index 0000000000..6198e4d751
--- /dev/null
+++ 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_RecordPattern_4.pass
@@ -0,0 +1,7 @@
+var
+ColoredPoint
+com
+java
+javax
+org
+sun
\ No newline at end of file
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/19/AutoCompletion_RecordPattern_3.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_RecordPattern_5.pass
similarity index 100%
rename from 
java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/19/AutoCompletion_RecordPattern_3.pass
rename to 
java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_RecordPattern_5.pass
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_VarNameSuggestion_PatternMatchingSwitch.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_VarNameSuggestion_PatternMatchingSwitch.pass
index d5fbcfcc54..62f872ac4c 100644
--- 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_VarNameSuggestion_PatternMatchingSwitch.pass
+++ 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/1.8/AutoCompletion_VarNameSuggestion_PatternMatchingSwitch.pass
@@ -1,2 +1,3 @@
-s
-string
\ No newline at end of file
+charSequence
+cs
+sequence
\ No newline at end of file
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/10/AutoCompletion_CaseLabels_PatternMatchingSwitch_1.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/10/AutoCompletion_CaseLabels_PatternMatchingSwitch_1.pass
index 94d510bf1d..3430af43ab 100644
--- 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/10/AutoCompletion_CaseLabels_PatternMatchingSwitch_1.pass
+++ 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/10/AutoCompletion_CaseLabels_PatternMatchingSwitch_1.pass
@@ -1,4 +1,3 @@
-default
 null
 AbstractMethodError
 Appendable
@@ -21,6 +20,7 @@ ClassNotFoundException
 ClassValue
 CloneNotSupportedException
 Cloneable
+Color
 Comparable
 Compiler
 Deprecated
@@ -68,6 +68,7 @@ Object
 OutOfMemoryError
 Override
 Package
+Point
 Process
 ProcessBuilder
 ProcessHandle
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/11/AutoCompletion_MembersSelect_ParenthesizedPatternMatchingSwitch.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/11/AutoCompletion_MembersSelect_ParenthesizedPatternMatchingSwitch.pass
deleted file mode 100644
index 10c56d9563..0000000000
--- 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/11/AutoCompletion_MembersSelect_ParenthesizedPatternMatchingSwitch.pass
+++ /dev/null
@@ -1,40 +0,0 @@
-public abstract boolean add(Object arg0)
-public abstract void add(int arg0, Object arg1)
-public abstract boolean addAll(Collection arg0)
-public abstract boolean addAll(int arg0, Collection arg1)
-public abstract void clear()
-public abstract boolean contains(Object arg0)
-public abstract boolean containsAll(Collection arg0)
-public abstract boolean equals(Object arg0)
-public default void forEach(Consumer arg0)
-public abstract Object get(int arg0)
-public final native Class<?> getClass()
-public abstract int hashCode()
-public abstract int indexOf(Object arg0)
-public abstract boolean isEmpty()
-public abstract Iterator iterator()
-public abstract int lastIndexOf(Object arg0)
-public abstract ListIterator listIterator()
-public abstract ListIterator listIterator(int arg0)
-public final native void notify()
-public final native void notifyAll()
-public default Stream parallelStream()
-public abstract boolean remove(Object arg0)
-public abstract Object remove(int arg0)
-public abstract boolean removeAll(Collection arg0)
-public default boolean removeIf(Predicate arg0)
-public default void replaceAll(UnaryOperator arg0)
-public abstract boolean retainAll(Collection arg0)
-public abstract Object set(int arg0, Object arg1)
-public abstract int size()
-public default void sort(Comparator arg0)
-public default Spliterator spliterator()
-public default Stream stream()
-public abstract List subList(int arg0, int arg1)
-public abstract Object[] toArray()
-public default Object[] toArray(IntFunction arg0)
-public abstract Object[] toArray(Object[] arg0)
-public String toString()
-public final void wait()
-public final native void wait(long arg0)
-public final void wait(long arg0, int arg1)
\ No newline at end of file
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/11/AutoCompletion_MembersSelect_ParenthesizedPatternMatchingSwitch_1.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/11/AutoCompletion_MembersSelect_ParenthesizedPatternMatchingSwitch_1.pass
deleted file mode 100644
index ba9879eb0b..0000000000
--- 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/11/AutoCompletion_MembersSelect_ParenthesizedPatternMatchingSwitch_1.pass
+++ /dev/null
@@ -1,61 +0,0 @@
-public boolean equals(Object arg0)
-public StringBuilder append(CharSequence arg0)
-public StringBuilder append(Object arg0)
-public StringBuilder append(String arg0)
-public StringBuilder append(StringBuffer arg0)
-public StringBuilder append(boolean arg0)
-public StringBuilder append(char arg0)
-public StringBuilder append(char[] arg0)
-public StringBuilder append(double arg0)
-public StringBuilder append(float arg0)
-public StringBuilder append(int arg0)
-public StringBuilder append(long arg0)
-public StringBuilder append(CharSequence arg0, int arg1, int arg2)
-public StringBuilder append(char[] arg0, int arg1, int arg2)
-public StringBuilder appendCodePoint(int arg0)
-public int capacity()
-public char charAt(int arg0)
-public IntStream chars()
-public int codePointAt(int arg0)
-public int codePointBefore(int arg0)
-public int codePointCount(int arg0, int arg1)
-public IntStream codePoints()
-public int compareTo(StringBuilder arg0)
-public StringBuilder delete(int arg0, int arg1)
-public StringBuilder deleteCharAt(int arg0)
-public void ensureCapacity(int arg0)
-public void getChars(int arg0, int arg1, char[] arg2, int arg3)
-public final native Class<?> getClass()
-public native int hashCode()
-public int indexOf(String arg0)
-public int indexOf(String arg0, int arg1)
-public StringBuilder insert(int arg0, CharSequence arg1)
-public StringBuilder insert(int arg0, Object arg1)
-public StringBuilder insert(int arg0, String arg1)
-public StringBuilder insert(int arg0, boolean arg1)
-public StringBuilder insert(int arg0, char arg1)
-public StringBuilder insert(int arg0, char[] arg1)
-public StringBuilder insert(int arg0, double arg1)
-public StringBuilder insert(int arg0, float arg1)
-public StringBuilder insert(int arg0, int arg1)
-public StringBuilder insert(int arg0, long arg1)
-public StringBuilder insert(int arg0, CharSequence arg1, int arg2, int arg3)
-public StringBuilder insert(int arg0, char[] arg1, int arg2, int arg3)
-public int lastIndexOf(String arg0)
-public int lastIndexOf(String arg0, int arg1)
-public int length()
-public final native void notify()
-public final native void notifyAll()
-public int offsetByCodePoints(int arg0, int arg1)
-public StringBuilder replace(int arg0, int arg1, String arg2)
-public StringBuilder reverse()
-public void setCharAt(int arg0, char arg1)
-public void setLength(int arg0)
-public CharSequence subSequence(int arg0, int arg1)
-public String substring(int arg0)
-public String substring(int arg0, int arg1)
-public String toString()
-public void trimToSize()
-public final void wait()
-public final native void wait(long arg0)
-public final void wait(long arg0, int arg1)
\ No newline at end of file
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/13/AutoCompletion_MembersSelect_ParenthesizedPatternMatchingSwitch.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/13/AutoCompletion_MembersSelect_ParenthesizedPatternMatchingSwitch.pass
deleted file mode 100644
index 10c56d9563..0000000000
--- 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/13/AutoCompletion_MembersSelect_ParenthesizedPatternMatchingSwitch.pass
+++ /dev/null
@@ -1,40 +0,0 @@
-public abstract boolean add(Object arg0)
-public abstract void add(int arg0, Object arg1)
-public abstract boolean addAll(Collection arg0)
-public abstract boolean addAll(int arg0, Collection arg1)
-public abstract void clear()
-public abstract boolean contains(Object arg0)
-public abstract boolean containsAll(Collection arg0)
-public abstract boolean equals(Object arg0)
-public default void forEach(Consumer arg0)
-public abstract Object get(int arg0)
-public final native Class<?> getClass()
-public abstract int hashCode()
-public abstract int indexOf(Object arg0)
-public abstract boolean isEmpty()
-public abstract Iterator iterator()
-public abstract int lastIndexOf(Object arg0)
-public abstract ListIterator listIterator()
-public abstract ListIterator listIterator(int arg0)
-public final native void notify()
-public final native void notifyAll()
-public default Stream parallelStream()
-public abstract boolean remove(Object arg0)
-public abstract Object remove(int arg0)
-public abstract boolean removeAll(Collection arg0)
-public default boolean removeIf(Predicate arg0)
-public default void replaceAll(UnaryOperator arg0)
-public abstract boolean retainAll(Collection arg0)
-public abstract Object set(int arg0, Object arg1)
-public abstract int size()
-public default void sort(Comparator arg0)
-public default Spliterator spliterator()
-public default Stream stream()
-public abstract List subList(int arg0, int arg1)
-public abstract Object[] toArray()
-public default Object[] toArray(IntFunction arg0)
-public abstract Object[] toArray(Object[] arg0)
-public String toString()
-public final void wait()
-public final native void wait(long arg0)
-public final void wait(long arg0, int arg1)
\ No newline at end of file
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/13/AutoCompletion_MembersSelect_ParenthesizedPatternMatchingSwitch_1.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/13/AutoCompletion_MembersSelect_ParenthesizedPatternMatchingSwitch_1.pass
deleted file mode 100644
index ba9879eb0b..0000000000
--- 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/13/AutoCompletion_MembersSelect_ParenthesizedPatternMatchingSwitch_1.pass
+++ /dev/null
@@ -1,61 +0,0 @@
-public boolean equals(Object arg0)
-public StringBuilder append(CharSequence arg0)
-public StringBuilder append(Object arg0)
-public StringBuilder append(String arg0)
-public StringBuilder append(StringBuffer arg0)
-public StringBuilder append(boolean arg0)
-public StringBuilder append(char arg0)
-public StringBuilder append(char[] arg0)
-public StringBuilder append(double arg0)
-public StringBuilder append(float arg0)
-public StringBuilder append(int arg0)
-public StringBuilder append(long arg0)
-public StringBuilder append(CharSequence arg0, int arg1, int arg2)
-public StringBuilder append(char[] arg0, int arg1, int arg2)
-public StringBuilder appendCodePoint(int arg0)
-public int capacity()
-public char charAt(int arg0)
-public IntStream chars()
-public int codePointAt(int arg0)
-public int codePointBefore(int arg0)
-public int codePointCount(int arg0, int arg1)
-public IntStream codePoints()
-public int compareTo(StringBuilder arg0)
-public StringBuilder delete(int arg0, int arg1)
-public StringBuilder deleteCharAt(int arg0)
-public void ensureCapacity(int arg0)
-public void getChars(int arg0, int arg1, char[] arg2, int arg3)
-public final native Class<?> getClass()
-public native int hashCode()
-public int indexOf(String arg0)
-public int indexOf(String arg0, int arg1)
-public StringBuilder insert(int arg0, CharSequence arg1)
-public StringBuilder insert(int arg0, Object arg1)
-public StringBuilder insert(int arg0, String arg1)
-public StringBuilder insert(int arg0, boolean arg1)
-public StringBuilder insert(int arg0, char arg1)
-public StringBuilder insert(int arg0, char[] arg1)
-public StringBuilder insert(int arg0, double arg1)
-public StringBuilder insert(int arg0, float arg1)
-public StringBuilder insert(int arg0, int arg1)
-public StringBuilder insert(int arg0, long arg1)
-public StringBuilder insert(int arg0, CharSequence arg1, int arg2, int arg3)
-public StringBuilder insert(int arg0, char[] arg1, int arg2, int arg3)
-public int lastIndexOf(String arg0)
-public int lastIndexOf(String arg0, int arg1)
-public int length()
-public final native void notify()
-public final native void notifyAll()
-public int offsetByCodePoints(int arg0, int arg1)
-public StringBuilder replace(int arg0, int arg1, String arg2)
-public StringBuilder reverse()
-public void setCharAt(int arg0, char arg1)
-public void setLength(int arg0)
-public CharSequence subSequence(int arg0, int arg1)
-public String substring(int arg0)
-public String substring(int arg0, int arg1)
-public String toString()
-public void trimToSize()
-public final void wait()
-public final native void wait(long arg0)
-public final void wait(long arg0, int arg1)
\ No newline at end of file
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/14/AutoCompletion_CaseLabels_PatternMatchingSwitch_1.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/14/AutoCompletion_CaseLabels_PatternMatchingSwitch_1.pass
index 94f7b02274..14faa59aa0 100644
--- 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/14/AutoCompletion_CaseLabels_PatternMatchingSwitch_1.pass
+++ 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/14/AutoCompletion_CaseLabels_PatternMatchingSwitch_1.pass
@@ -1,4 +1,3 @@
-default
 null
 AbstractMethodError
 Appendable
@@ -21,6 +20,7 @@ ClassNotFoundException
 ClassValue
 CloneNotSupportedException
 Cloneable
+Color
 Comparable
 Compiler
 Deprecated
@@ -68,6 +68,7 @@ Object
 OutOfMemoryError
 Override
 Package
+Point
 Process
 ProcessBuilder
 ProcessHandle
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/14/AutoCompletion_CaseLabels_PatternMatchingSwitch_2.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/14/AutoCompletion_CaseLabels_PatternMatchingSwitch_2.pass
deleted file mode 100644
index 974c82f0f1..0000000000
--- 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/14/AutoCompletion_CaseLabels_PatternMatchingSwitch_2.pass
+++ /dev/null
@@ -1,112 +0,0 @@
-default
-AbstractMethodError
-Appendable
-ArithmeticException
-ArrayIndexOutOfBoundsException
-ArrayStoreException
-AssertionError
-AutoCloseable
-Boolean
-BootstrapMethodError
-Byte
-CharSequence
-Character
-Class
-ClassCastException
-ClassCircularityError
-ClassFormatError
-ClassLoader
-ClassNotFoundException
-ClassValue
-CloneNotSupportedException
-Cloneable
-Comparable
-Compiler
-Deprecated
-Double
-Enum
-EnumConstantNotPresentException
-Error
-Exception
-ExceptionInInitializerError
-Float
-FunctionalInterface
-IllegalAccessError
-IllegalAccessException
-IllegalArgumentException
-IllegalCallerException
-IllegalMonitorStateException
-IllegalStateException
-IllegalThreadStateException
-IncompatibleClassChangeError
-IndexOutOfBoundsException
-InheritableThreadLocal
-InstantiationError
-InstantiationException
-IntStream
-Integer
-InternalError
-InterruptedException
-Iterable
-LayerInstantiationException
-LinkageError
-Long
-Math
-Module
-ModuleLayer
-NegativeArraySizeException
-NoClassDefFoundError
-NoSuchFieldError
-NoSuchFieldException
-NoSuchMethodError
-NoSuchMethodException
-NullPointerException
-Number
-NumberFormatException
-Object
-OutOfMemoryError
-Override
-Package
-Process
-ProcessBuilder
-ProcessHandle
-Readable
-Record
-ReflectiveOperationException
-Runnable
-Runtime
-RuntimeException
-RuntimePermission
-SafeVarargs
-SecurityException
-SecurityManager
-Short
-StackOverflowError
-StackTraceElement
-StackWalker
-StrictMath
-String
-StringBuffer
-StringBuilder
-StringIndexOutOfBoundsException
-SuppressWarnings
-System
-Test
-Thread
-ThreadDeath
-ThreadGroup
-ThreadLocal
-Throwable
-TypeNotPresentException
-UnknownError
-UnsatisfiedLinkError
-UnsupportedClassVersionError
-UnsupportedOperationException
-VerifyError
-VirtualMachineError
-Void
-com
-java
-javax
-org
-sun
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/14/AutoCompletion_CaseLabels_PatternMatchingSwitch_3.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/14/AutoCompletion_CaseLabels_PatternMatchingSwitch_3.pass
deleted file mode 100644
index d7afe4d119..0000000000
--- 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/14/AutoCompletion_CaseLabels_PatternMatchingSwitch_3.pass
+++ /dev/null
@@ -1,111 +0,0 @@
-AbstractMethodError
-Appendable
-ArithmeticException
-ArrayIndexOutOfBoundsException
-ArrayStoreException
-AssertionError
-AutoCloseable
-Boolean
-BootstrapMethodError
-Byte
-CharSequence
-Character
-Class
-ClassCastException
-ClassCircularityError
-ClassFormatError
-ClassLoader
-ClassNotFoundException
-ClassValue
-CloneNotSupportedException
-Cloneable
-Comparable
-Compiler
-Deprecated
-Double
-Enum
-EnumConstantNotPresentException
-Error
-Exception
-ExceptionInInitializerError
-Float
-FunctionalInterface
-IllegalAccessError
-IllegalAccessException
-IllegalArgumentException
-IllegalCallerException
-IllegalMonitorStateException
-IllegalStateException
-IllegalThreadStateException
-IncompatibleClassChangeError
-IndexOutOfBoundsException
-InheritableThreadLocal
-InstantiationError
-InstantiationException
-IntStream
-Integer
-InternalError
-InterruptedException
-Iterable
-LayerInstantiationException
-LinkageError
-Long
-Math
-Module
-ModuleLayer
-NegativeArraySizeException
-NoClassDefFoundError
-NoSuchFieldError
-NoSuchFieldException
-NoSuchMethodError
-NoSuchMethodException
-NullPointerException
-Number
-NumberFormatException
-Object
-OutOfMemoryError
-Override
-Package
-Process
-ProcessBuilder
-ProcessHandle
-Readable
-Record
-ReflectiveOperationException
-Runnable
-Runtime
-RuntimeException
-RuntimePermission
-SafeVarargs
-SecurityException
-SecurityManager
-Short
-StackOverflowError
-StackTraceElement
-StackWalker
-StrictMath
-String
-StringBuffer
-StringBuilder
-StringIndexOutOfBoundsException
-SuppressWarnings
-System
-Test
-Thread
-ThreadDeath
-ThreadGroup
-ThreadLocal
-Throwable
-TypeNotPresentException
-UnknownError
-UnsatisfiedLinkError
-UnsupportedClassVersionError
-UnsupportedOperationException
-VerifyError
-VirtualMachineError
-Void
-com
-java
-javax
-org
-sun
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/17/AutoCompletion_CaseLabels_PatternMatchingSwitch_1.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/17/AutoCompletion_CaseLabels_PatternMatchingSwitch_1.pass
index 94f7b02274..14faa59aa0 100644
--- 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/17/AutoCompletion_CaseLabels_PatternMatchingSwitch_1.pass
+++ 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/17/AutoCompletion_CaseLabels_PatternMatchingSwitch_1.pass
@@ -1,4 +1,3 @@
-default
 null
 AbstractMethodError
 Appendable
@@ -21,6 +20,7 @@ ClassNotFoundException
 ClassValue
 CloneNotSupportedException
 Cloneable
+Color
 Comparable
 Compiler
 Deprecated
@@ -68,6 +68,7 @@ Object
 OutOfMemoryError
 Override
 Package
+Point
 Process
 ProcessBuilder
 ProcessHandle
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/17/AutoCompletion_CaseLabels_PatternMatchingSwitch_2.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/17/AutoCompletion_CaseLabels_PatternMatchingSwitch_2.pass
deleted file mode 100644
index 974c82f0f1..0000000000
--- 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/17/AutoCompletion_CaseLabels_PatternMatchingSwitch_2.pass
+++ /dev/null
@@ -1,112 +0,0 @@
-default
-AbstractMethodError
-Appendable
-ArithmeticException
-ArrayIndexOutOfBoundsException
-ArrayStoreException
-AssertionError
-AutoCloseable
-Boolean
-BootstrapMethodError
-Byte
-CharSequence
-Character
-Class
-ClassCastException
-ClassCircularityError
-ClassFormatError
-ClassLoader
-ClassNotFoundException
-ClassValue
-CloneNotSupportedException
-Cloneable
-Comparable
-Compiler
-Deprecated
-Double
-Enum
-EnumConstantNotPresentException
-Error
-Exception
-ExceptionInInitializerError
-Float
-FunctionalInterface
-IllegalAccessError
-IllegalAccessException
-IllegalArgumentException
-IllegalCallerException
-IllegalMonitorStateException
-IllegalStateException
-IllegalThreadStateException
-IncompatibleClassChangeError
-IndexOutOfBoundsException
-InheritableThreadLocal
-InstantiationError
-InstantiationException
-IntStream
-Integer
-InternalError
-InterruptedException
-Iterable
-LayerInstantiationException
-LinkageError
-Long
-Math
-Module
-ModuleLayer
-NegativeArraySizeException
-NoClassDefFoundError
-NoSuchFieldError
-NoSuchFieldException
-NoSuchMethodError
-NoSuchMethodException
-NullPointerException
-Number
-NumberFormatException
-Object
-OutOfMemoryError
-Override
-Package
-Process
-ProcessBuilder
-ProcessHandle
-Readable
-Record
-ReflectiveOperationException
-Runnable
-Runtime
-RuntimeException
-RuntimePermission
-SafeVarargs
-SecurityException
-SecurityManager
-Short
-StackOverflowError
-StackTraceElement
-StackWalker
-StrictMath
-String
-StringBuffer
-StringBuilder
-StringIndexOutOfBoundsException
-SuppressWarnings
-System
-Test
-Thread
-ThreadDeath
-ThreadGroup
-ThreadLocal
-Throwable
-TypeNotPresentException
-UnknownError
-UnsatisfiedLinkError
-UnsupportedClassVersionError
-UnsupportedOperationException
-VerifyError
-VirtualMachineError
-Void
-com
-java
-javax
-org
-sun
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/17/AutoCompletion_CaseLabels_PatternMatchingSwitch_3.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/17/AutoCompletion_CaseLabels_PatternMatchingSwitch_3.pass
deleted file mode 100644
index d7afe4d119..0000000000
--- 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/17/AutoCompletion_CaseLabels_PatternMatchingSwitch_3.pass
+++ /dev/null
@@ -1,111 +0,0 @@
-AbstractMethodError
-Appendable
-ArithmeticException
-ArrayIndexOutOfBoundsException
-ArrayStoreException
-AssertionError
-AutoCloseable
-Boolean
-BootstrapMethodError
-Byte
-CharSequence
-Character
-Class
-ClassCastException
-ClassCircularityError
-ClassFormatError
-ClassLoader
-ClassNotFoundException
-ClassValue
-CloneNotSupportedException
-Cloneable
-Comparable
-Compiler
-Deprecated
-Double
-Enum
-EnumConstantNotPresentException
-Error
-Exception
-ExceptionInInitializerError
-Float
-FunctionalInterface
-IllegalAccessError
-IllegalAccessException
-IllegalArgumentException
-IllegalCallerException
-IllegalMonitorStateException
-IllegalStateException
-IllegalThreadStateException
-IncompatibleClassChangeError
-IndexOutOfBoundsException
-InheritableThreadLocal
-InstantiationError
-InstantiationException
-IntStream
-Integer
-InternalError
-InterruptedException
-Iterable
-LayerInstantiationException
-LinkageError
-Long
-Math
-Module
-ModuleLayer
-NegativeArraySizeException
-NoClassDefFoundError
-NoSuchFieldError
-NoSuchFieldException
-NoSuchMethodError
-NoSuchMethodException
-NullPointerException
-Number
-NumberFormatException
-Object
-OutOfMemoryError
-Override
-Package
-Process
-ProcessBuilder
-ProcessHandle
-Readable
-Record
-ReflectiveOperationException
-Runnable
-Runtime
-RuntimeException
-RuntimePermission
-SafeVarargs
-SecurityException
-SecurityManager
-Short
-StackOverflowError
-StackTraceElement
-StackWalker
-StrictMath
-String
-StringBuffer
-StringBuilder
-StringIndexOutOfBoundsException
-SuppressWarnings
-System
-Test
-Thread
-ThreadDeath
-ThreadGroup
-ThreadLocal
-Throwable
-TypeNotPresentException
-UnknownError
-UnsatisfiedLinkError
-UnsupportedClassVersionError
-UnsupportedOperationException
-VerifyError
-VirtualMachineError
-Void
-com
-java
-javax
-org
-sun
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/17/AutoCompletion_MembersSelect_GuardedPatternMatchingSwitch_2.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/17/AutoCompletion_MembersSelect_GuardedPatternMatchingSwitch_2.pass
deleted file mode 100644
index f29c24e3fa..0000000000
--- 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/17/AutoCompletion_MembersSelect_GuardedPatternMatchingSwitch_2.pass
+++ /dev/null
@@ -1,51 +0,0 @@
-public abstract boolean allMatch(IntPredicate arg0)
-public abstract boolean anyMatch(IntPredicate arg0)
-public abstract R collect(Supplier<R> arg0, ObjIntConsumer<R> arg1, 
BiConsumer<R, R> arg2)
-public boolean equals(Object arg0)
-public abstract boolean isParallel()
-public abstract boolean noneMatch(IntPredicate arg0)
-public abstract DoubleStream asDoubleStream()
-public abstract LongStream asLongStream()
-public abstract OptionalDouble average()
-public abstract Stream<Integer> boxed()
-public abstract void close()
-public abstract long count()
-public abstract IntStream distinct()
-public default IntStream dropWhile(IntPredicate arg0)
-public abstract IntStream filter(IntPredicate arg0)
-public abstract OptionalInt findAny()
-public abstract OptionalInt findFirst()
-public abstract IntStream flatMap(IntFunction<? extends IntStream> arg0)
-public abstract void forEach(IntConsumer arg0)
-public abstract void forEachOrdered(IntConsumer arg0)
-public final native Class<?> getClass()
-public native int hashCode()
-public abstract OfInt iterator()
-public abstract IntStream limit(long arg0)
-public abstract IntStream map(IntUnaryOperator arg0)
-public default IntStream mapMulti(IntMapMultiConsumer arg0)
-public abstract DoubleStream mapToDouble(IntToDoubleFunction arg0)
-public abstract LongStream mapToLong(IntToLongFunction arg0)
-public abstract Stream<U> mapToObj(IntFunction<? extends U> arg0)
-public abstract OptionalInt max()
-public abstract OptionalInt min()
-public final native void notify()
-public final native void notifyAll()
-public abstract IntStream onClose(Runnable arg0)
-public abstract IntStream parallel()
-public abstract IntStream peek(IntConsumer arg0)
-public abstract OptionalInt reduce(IntBinaryOperator arg0)
-public abstract int reduce(int arg0, IntBinaryOperator arg1)
-public abstract IntStream sequential()
-public abstract IntStream skip(long arg0)
-public abstract IntStream sorted()
-public abstract OfInt spliterator()
-public abstract int sum()
-public abstract IntSummaryStatistics summaryStatistics()
-public default IntStream takeWhile(IntPredicate arg0)
-public abstract int[] toArray()
-public String toString()
-public abstract IntStream unordered()
-public final void wait()
-public final native void wait(long arg0)
-public final void wait(long arg0, int arg1)
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/17/AutoCompletion_MembersSelect_ParenthesizedPatternMatchingSwitch.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/17/AutoCompletion_MembersSelect_ParenthesizedPatternMatchingSwitch.pass
deleted file mode 100644
index 10c56d9563..0000000000
--- 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/17/AutoCompletion_MembersSelect_ParenthesizedPatternMatchingSwitch.pass
+++ /dev/null
@@ -1,40 +0,0 @@
-public abstract boolean add(Object arg0)
-public abstract void add(int arg0, Object arg1)
-public abstract boolean addAll(Collection arg0)
-public abstract boolean addAll(int arg0, Collection arg1)
-public abstract void clear()
-public abstract boolean contains(Object arg0)
-public abstract boolean containsAll(Collection arg0)
-public abstract boolean equals(Object arg0)
-public default void forEach(Consumer arg0)
-public abstract Object get(int arg0)
-public final native Class<?> getClass()
-public abstract int hashCode()
-public abstract int indexOf(Object arg0)
-public abstract boolean isEmpty()
-public abstract Iterator iterator()
-public abstract int lastIndexOf(Object arg0)
-public abstract ListIterator listIterator()
-public abstract ListIterator listIterator(int arg0)
-public final native void notify()
-public final native void notifyAll()
-public default Stream parallelStream()
-public abstract boolean remove(Object arg0)
-public abstract Object remove(int arg0)
-public abstract boolean removeAll(Collection arg0)
-public default boolean removeIf(Predicate arg0)
-public default void replaceAll(UnaryOperator arg0)
-public abstract boolean retainAll(Collection arg0)
-public abstract Object set(int arg0, Object arg1)
-public abstract int size()
-public default void sort(Comparator arg0)
-public default Spliterator spliterator()
-public default Stream stream()
-public abstract List subList(int arg0, int arg1)
-public abstract Object[] toArray()
-public default Object[] toArray(IntFunction arg0)
-public abstract Object[] toArray(Object[] arg0)
-public String toString()
-public final void wait()
-public final native void wait(long arg0)
-public final void wait(long arg0, int arg1)
\ No newline at end of file
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/17/AutoCompletion_MembersSelect_ParenthesizedPatternMatchingSwitch_1.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/17/AutoCompletion_MembersSelect_ParenthesizedPatternMatchingSwitch_1.pass
deleted file mode 100644
index 80d9da227c..0000000000
--- 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/17/AutoCompletion_MembersSelect_ParenthesizedPatternMatchingSwitch_1.pass
+++ /dev/null
@@ -1,62 +0,0 @@
-public boolean equals(Object arg0)
-public default boolean isEmpty()
-public StringBuilder append(CharSequence arg0)
-public StringBuilder append(Object arg0)
-public StringBuilder append(String arg0)
-public StringBuilder append(StringBuffer arg0)
-public StringBuilder append(boolean arg0)
-public StringBuilder append(char arg0)
-public StringBuilder append(char[] arg0)
-public StringBuilder append(double arg0)
-public StringBuilder append(float arg0)
-public StringBuilder append(int arg0)
-public StringBuilder append(long arg0)
-public StringBuilder append(CharSequence arg0, int arg1, int arg2)
-public StringBuilder append(char[] arg0, int arg1, int arg2)
-public StringBuilder appendCodePoint(int arg0)
-public int capacity()
-public char charAt(int arg0)
-public IntStream chars()
-public int codePointAt(int arg0)
-public int codePointBefore(int arg0)
-public int codePointCount(int arg0, int arg1)
-public IntStream codePoints()
-public int compareTo(StringBuilder arg0)
-public StringBuilder delete(int arg0, int arg1)
-public StringBuilder deleteCharAt(int arg0)
-public void ensureCapacity(int arg0)
-public void getChars(int arg0, int arg1, char[] arg2, int arg3)
-public final native Class<?> getClass()
-public native int hashCode()
-public int indexOf(String arg0)
-public int indexOf(String arg0, int arg1)
-public StringBuilder insert(int arg0, CharSequence arg1)
-public StringBuilder insert(int arg0, Object arg1)
-public StringBuilder insert(int arg0, String arg1)
-public StringBuilder insert(int arg0, boolean arg1)
-public StringBuilder insert(int arg0, char arg1)
-public StringBuilder insert(int arg0, char[] arg1)
-public StringBuilder insert(int arg0, double arg1)
-public StringBuilder insert(int arg0, float arg1)
-public StringBuilder insert(int arg0, int arg1)
-public StringBuilder insert(int arg0, long arg1)
-public StringBuilder insert(int arg0, CharSequence arg1, int arg2, int arg3)
-public StringBuilder insert(int arg0, char[] arg1, int arg2, int arg3)
-public int lastIndexOf(String arg0)
-public int lastIndexOf(String arg0, int arg1)
-public int length()
-public final native void notify()
-public final native void notifyAll()
-public int offsetByCodePoints(int arg0, int arg1)
-public StringBuilder replace(int arg0, int arg1, String arg2)
-public StringBuilder reverse()
-public void setCharAt(int arg0, char arg1)
-public void setLength(int arg0)
-public CharSequence subSequence(int arg0, int arg1)
-public String substring(int arg0)
-public String substring(int arg0, int arg1)
-public String toString()
-public void trimToSize()
-public final void wait()
-public final native void wait(long arg0)
-public final void wait(long arg0, int arg1)
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/17/AutoCompletion_VarNameSuggestion_PatternMatchingSwitch.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/17/AutoCompletion_VarNameSuggestion_PatternMatchingSwitch.pass
deleted file mode 100644
index d5fbcfcc54..0000000000
--- 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/17/AutoCompletion_VarNameSuggestion_PatternMatchingSwitch.pass
+++ /dev/null
@@ -1,2 +0,0 @@
-s
-string
\ No newline at end of file
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/19/AutoCompletion_CaseLabels_PatternMatchingSwitch_1.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/19/AutoCompletion_CaseLabels_PatternMatchingSwitch_1.pass
index 3899b3092f..cc1f630047 100644
--- 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/19/AutoCompletion_CaseLabels_PatternMatchingSwitch_1.pass
+++ 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/19/AutoCompletion_CaseLabels_PatternMatchingSwitch_1.pass
@@ -1,4 +1,3 @@
-default
 null
 AbstractMethodError
 Appendable
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/19/AutoCompletion_CaseLabels_PatternMatchingSwitch_2.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/19/AutoCompletion_CaseLabels_PatternMatchingSwitch_2.pass
deleted file mode 100644
index effe0050d3..0000000000
--- 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/19/AutoCompletion_CaseLabels_PatternMatchingSwitch_2.pass
+++ /dev/null
@@ -1,114 +0,0 @@
-default
-AbstractMethodError
-Appendable
-ArithmeticException
-ArrayIndexOutOfBoundsException
-ArrayStoreException
-AssertionError
-AutoCloseable
-Boolean
-BootstrapMethodError
-Byte
-CharSequence
-Character
-Class
-ClassCastException
-ClassCircularityError
-ClassFormatError
-ClassLoader
-ClassNotFoundException
-ClassValue
-CloneNotSupportedException
-Cloneable
-Comparable
-Compiler
-Deprecated
-Double
-Enum
-EnumConstantNotPresentException
-Error
-Exception
-ExceptionInInitializerError
-Float
-FunctionalInterface
-IllegalAccessError
-IllegalAccessException
-IllegalArgumentException
-IllegalCallerException
-IllegalMonitorStateException
-IllegalStateException
-IllegalThreadStateException
-IncompatibleClassChangeError
-IndexOutOfBoundsException
-InheritableThreadLocal
-InstantiationError
-InstantiationException
-IntStream
-Integer
-InternalError
-InterruptedException
-Iterable
-LayerInstantiationException
-LinkageError
-Long
-MatchException
-Math
-Module
-ModuleLayer
-NegativeArraySizeException
-NoClassDefFoundError
-NoSuchFieldError
-NoSuchFieldException
-NoSuchMethodError
-NoSuchMethodException
-NullPointerException
-Number
-NumberFormatException
-Object
-OutOfMemoryError
-Override
-Package
-Process
-ProcessBuilder
-ProcessHandle
-Readable
-Record
-ReflectiveOperationException
-Runnable
-Runtime
-RuntimeException
-RuntimePermission
-SafeVarargs
-SecurityException
-SecurityManager
-Short
-StackOverflowError
-StackTraceElement
-StackWalker
-StrictMath
-String
-StringBuffer
-StringBuilder
-StringIndexOutOfBoundsException
-SuppressWarnings
-System
-Test
-Thread
-ThreadDeath
-ThreadGroup
-ThreadLocal
-Throwable
-TypeNotPresentException
-UnknownError
-UnsatisfiedLinkError
-UnsupportedClassVersionError
-UnsupportedOperationException
-VerifyError
-VirtualMachineError
-Void
-WrongThreadException
-com
-java
-javax
-org
-sun
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/19/AutoCompletion_CaseLabels_PatternMatchingSwitch_3.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/19/AutoCompletion_CaseLabels_PatternMatchingSwitch_3.pass
deleted file mode 100644
index 8f3cc16bbd..0000000000
--- 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/19/AutoCompletion_CaseLabels_PatternMatchingSwitch_3.pass
+++ /dev/null
@@ -1,113 +0,0 @@
-AbstractMethodError
-Appendable
-ArithmeticException
-ArrayIndexOutOfBoundsException
-ArrayStoreException
-AssertionError
-AutoCloseable
-Boolean
-BootstrapMethodError
-Byte
-CharSequence
-Character
-Class
-ClassCastException
-ClassCircularityError
-ClassFormatError
-ClassLoader
-ClassNotFoundException
-ClassValue
-CloneNotSupportedException
-Cloneable
-Comparable
-Compiler
-Deprecated
-Double
-Enum
-EnumConstantNotPresentException
-Error
-Exception
-ExceptionInInitializerError
-Float
-FunctionalInterface
-IllegalAccessError
-IllegalAccessException
-IllegalArgumentException
-IllegalCallerException
-IllegalMonitorStateException
-IllegalStateException
-IllegalThreadStateException
-IncompatibleClassChangeError
-IndexOutOfBoundsException
-InheritableThreadLocal
-InstantiationError
-InstantiationException
-IntStream
-Integer
-InternalError
-InterruptedException
-Iterable
-LayerInstantiationException
-LinkageError
-Long
-MatchException
-Math
-Module
-ModuleLayer
-NegativeArraySizeException
-NoClassDefFoundError
-NoSuchFieldError
-NoSuchFieldException
-NoSuchMethodError
-NoSuchMethodException
-NullPointerException
-Number
-NumberFormatException
-Object
-OutOfMemoryError
-Override
-Package
-Process
-ProcessBuilder
-ProcessHandle
-Readable
-Record
-ReflectiveOperationException
-Runnable
-Runtime
-RuntimeException
-RuntimePermission
-SafeVarargs
-SecurityException
-SecurityManager
-Short
-StackOverflowError
-StackTraceElement
-StackWalker
-StrictMath
-String
-StringBuffer
-StringBuilder
-StringIndexOutOfBoundsException
-SuppressWarnings
-System
-Test
-Thread
-ThreadDeath
-ThreadGroup
-ThreadLocal
-Throwable
-TypeNotPresentException
-UnknownError
-UnsatisfiedLinkError
-UnsupportedClassVersionError
-UnsupportedOperationException
-VerifyError
-VirtualMachineError
-Void
-WrongThreadException
-com
-java
-javax
-org
-sun
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/19/AutoCompletion_CaseRecordPattern_4.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/19/AutoCompletion_CaseRecordPattern_4.pass
new file mode 100644
index 0000000000..d35ff815ed
--- /dev/null
+++ 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/19/AutoCompletion_CaseRecordPattern_4.pass
@@ -0,0 +1,15 @@
+public byte byteValue()
+public abstract double doubleValue()
+public boolean equals(Object arg0)
+public abstract float floatValue()
+public final native Class<?> getClass()
+public native int hashCode()
+public abstract int intValue()
+public abstract long longValue()
+public final native void notify()
+public final native void notifyAll()
+public short shortValue()
+public String toString()
+public final void wait()
+public final void wait(long arg0)
+public final void wait(long arg0, int arg1)
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/19/AutoCompletion_Guard_PatternMatchingSwitch.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/19/AutoCompletion_Guard_PatternMatchingSwitch.pass
deleted file mode 100644
index 8685dd8edf..0000000000
--- 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/19/AutoCompletion_Guard_PatternMatchingSwitch.pass
+++ /dev/null
@@ -1 +0,0 @@
-when
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/19/AutoCompletion_MembersSelect_GuardedPatternMatchingSwitch_2.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/19/AutoCompletion_MembersSelect_GuardedPatternMatchingSwitch_2.pass
deleted file mode 100644
index ac147772ff..0000000000
--- 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/19/AutoCompletion_MembersSelect_GuardedPatternMatchingSwitch_2.pass
+++ /dev/null
@@ -1,51 +0,0 @@
-public abstract boolean allMatch(IntPredicate arg0)
-public abstract boolean anyMatch(IntPredicate arg0)
-public abstract R collect(Supplier<R> arg0, ObjIntConsumer<R> arg1, 
BiConsumer<R, R> arg2)
-public boolean equals(Object arg0)
-public abstract boolean isParallel()
-public abstract boolean noneMatch(IntPredicate arg0)
-public abstract DoubleStream asDoubleStream()
-public abstract LongStream asLongStream()
-public abstract OptionalDouble average()
-public abstract Stream<Integer> boxed()
-public abstract void close()
-public abstract long count()
-public abstract IntStream distinct()
-public default IntStream dropWhile(IntPredicate arg0)
-public abstract IntStream filter(IntPredicate arg0)
-public abstract OptionalInt findAny()
-public abstract OptionalInt findFirst()
-public abstract IntStream flatMap(IntFunction<? extends IntStream> arg0)
-public abstract void forEach(IntConsumer arg0)
-public abstract void forEachOrdered(IntConsumer arg0)
-public final native Class<?> getClass()
-public native int hashCode()
-public abstract OfInt iterator()
-public abstract IntStream limit(long arg0)
-public abstract IntStream map(IntUnaryOperator arg0)
-public default IntStream mapMulti(IntMapMultiConsumer arg0)
-public abstract DoubleStream mapToDouble(IntToDoubleFunction arg0)
-public abstract LongStream mapToLong(IntToLongFunction arg0)
-public abstract Stream<U> mapToObj(IntFunction<? extends U> arg0)
-public abstract OptionalInt max()
-public abstract OptionalInt min()
-public final native void notify()
-public final native void notifyAll()
-public abstract IntStream onClose(Runnable arg0)
-public abstract IntStream parallel()
-public abstract IntStream peek(IntConsumer arg0)
-public abstract OptionalInt reduce(IntBinaryOperator arg0)
-public abstract int reduce(int arg0, IntBinaryOperator arg1)
-public abstract IntStream sequential()
-public abstract IntStream skip(long arg0)
-public abstract IntStream sorted()
-public abstract OfInt spliterator()
-public abstract int sum()
-public abstract IntSummaryStatistics summaryStatistics()
-public default IntStream takeWhile(IntPredicate arg0)
-public abstract int[] toArray()
-public String toString()
-public abstract IntStream unordered()
-public final void wait()
-public final void wait(long arg0)
-public final void wait(long arg0, int arg1)
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/19/AutoCompletion_MembersSelect_ParenthesizedPatternMatchingSwitch.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/19/AutoCompletion_MembersSelect_ParenthesizedPatternMatchingSwitch.pass
deleted file mode 100644
index 2dcd4d253c..0000000000
--- 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/19/AutoCompletion_MembersSelect_ParenthesizedPatternMatchingSwitch.pass
+++ /dev/null
@@ -1,40 +0,0 @@
-public abstract boolean add(Object arg0)
-public abstract void add(int arg0, Object arg1)
-public abstract boolean addAll(Collection arg0)
-public abstract boolean addAll(int arg0, Collection arg1)
-public abstract void clear()
-public abstract boolean contains(Object arg0)
-public abstract boolean containsAll(Collection arg0)
-public abstract boolean equals(Object arg0)
-public default void forEach(Consumer arg0)
-public abstract Object get(int arg0)
-public final native Class<?> getClass()
-public abstract int hashCode()
-public abstract int indexOf(Object arg0)
-public abstract boolean isEmpty()
-public abstract Iterator iterator()
-public abstract int lastIndexOf(Object arg0)
-public abstract ListIterator listIterator()
-public abstract ListIterator listIterator(int arg0)
-public final native void notify()
-public final native void notifyAll()
-public default Stream parallelStream()
-public abstract boolean remove(Object arg0)
-public abstract Object remove(int arg0)
-public abstract boolean removeAll(Collection arg0)
-public default boolean removeIf(Predicate arg0)
-public default void replaceAll(UnaryOperator arg0)
-public abstract boolean retainAll(Collection arg0)
-public abstract Object set(int arg0, Object arg1)
-public abstract int size()
-public default void sort(Comparator arg0)
-public default Spliterator spliterator()
-public default Stream stream()
-public abstract List subList(int arg0, int arg1)
-public abstract Object[] toArray()
-public default Object[] toArray(IntFunction arg0)
-public abstract Object[] toArray(Object[] arg0)
-public String toString()
-public final void wait()
-public final void wait(long arg0)
-public final void wait(long arg0, int arg1)
\ No newline at end of file
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/19/AutoCompletion_MembersSelect_ParenthesizedPatternMatchingSwitch_1.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/19/AutoCompletion_MembersSelect_ParenthesizedPatternMatchingSwitch_1.pass
deleted file mode 100644
index 5273a759e0..0000000000
--- 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/19/AutoCompletion_MembersSelect_ParenthesizedPatternMatchingSwitch_1.pass
+++ /dev/null
@@ -1,62 +0,0 @@
-public boolean equals(Object arg0)
-public default boolean isEmpty()
-public StringBuilder append(CharSequence arg0)
-public StringBuilder append(Object arg0)
-public StringBuilder append(String arg0)
-public StringBuilder append(StringBuffer arg0)
-public StringBuilder append(boolean arg0)
-public StringBuilder append(char arg0)
-public StringBuilder append(char[] arg0)
-public StringBuilder append(double arg0)
-public StringBuilder append(float arg0)
-public StringBuilder append(int arg0)
-public StringBuilder append(long arg0)
-public StringBuilder append(CharSequence arg0, int arg1, int arg2)
-public StringBuilder append(char[] arg0, int arg1, int arg2)
-public StringBuilder appendCodePoint(int arg0)
-public int capacity()
-public char charAt(int arg0)
-public IntStream chars()
-public int codePointAt(int arg0)
-public int codePointBefore(int arg0)
-public int codePointCount(int arg0, int arg1)
-public IntStream codePoints()
-public int compareTo(StringBuilder arg0)
-public StringBuilder delete(int arg0, int arg1)
-public StringBuilder deleteCharAt(int arg0)
-public void ensureCapacity(int arg0)
-public void getChars(int arg0, int arg1, char[] arg2, int arg3)
-public final native Class<?> getClass()
-public native int hashCode()
-public int indexOf(String arg0)
-public int indexOf(String arg0, int arg1)
-public StringBuilder insert(int arg0, CharSequence arg1)
-public StringBuilder insert(int arg0, Object arg1)
-public StringBuilder insert(int arg0, String arg1)
-public StringBuilder insert(int arg0, boolean arg1)
-public StringBuilder insert(int arg0, char arg1)
-public StringBuilder insert(int arg0, char[] arg1)
-public StringBuilder insert(int arg0, double arg1)
-public StringBuilder insert(int arg0, float arg1)
-public StringBuilder insert(int arg0, int arg1)
-public StringBuilder insert(int arg0, long arg1)
-public StringBuilder insert(int arg0, CharSequence arg1, int arg2, int arg3)
-public StringBuilder insert(int arg0, char[] arg1, int arg2, int arg3)
-public int lastIndexOf(String arg0)
-public int lastIndexOf(String arg0, int arg1)
-public int length()
-public final native void notify()
-public final native void notifyAll()
-public int offsetByCodePoints(int arg0, int arg1)
-public StringBuilder replace(int arg0, int arg1, String arg2)
-public StringBuilder reverse()
-public void setCharAt(int arg0, char arg1)
-public void setLength(int arg0)
-public CharSequence subSequence(int arg0, int arg1)
-public String substring(int arg0)
-public String substring(int arg0, int arg1)
-public String toString()
-public void trimToSize()
-public final void wait()
-public final void wait(long arg0)
-public final void wait(long arg0, int arg1)
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/19/AutoCompletion_RecordPattern_1.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/19/AutoCompletion_RecordPattern_1.pass
deleted file mode 100644
index 6daf41cb8c..0000000000
--- 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/19/AutoCompletion_RecordPattern_1.pass
+++ /dev/null
@@ -1 +0,0 @@
-Person(String name, int a)
\ No newline at end of file
diff --git 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/19/AutoCompletion_RecordPattern_2.pass
 
b/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/19/AutoCompletion_RecordPattern_2.pass
deleted file mode 100644
index a1346a9156..0000000000
--- 
a/java/java.completion/test/unit/data/goldenfiles/org/netbeans/modules/java/completion/JavaCompletionTaskTest/19/AutoCompletion_RecordPattern_2.pass
+++ /dev/null
@@ -1 +0,0 @@
-Rect(ColoredPoint upperLeft, ColoredPoint lr)
\ No newline at end of file
diff --git 
a/java/java.completion/test/unit/data/org/netbeans/modules/java/completion/data/SwitchPatternMatching.java
 
b/java/java.completion/test/unit/data/org/netbeans/modules/java/completion/data/InstanceofPattern.java
similarity index 60%
copy from 
java/java.completion/test/unit/data/org/netbeans/modules/java/completion/data/SwitchPatternMatching.java
copy to 
java/java.completion/test/unit/data/org/netbeans/modules/java/completion/data/InstanceofPattern.java
index d5edee7db2..9e3476facc 100644
--- 
a/java/java.completion/test/unit/data/org/netbeans/modules/java/completion/data/SwitchPatternMatching.java
+++ 
b/java/java.completion/test/unit/data/org/netbeans/modules/java/completion/data/InstanceofPattern.java
@@ -17,22 +17,10 @@
  * under the License.
  */
 
-package test;
-
-import java.util.stream.IntStream;
-
-public class Test{
-    
-     public void op(int a) {
-        Object obj = "test";
-        String result = switch (obj) {
-            case null, String  ->
-                "null & String";
-            case CharSequence s when s. && obj. && IntStream.of(1).max().->
-                "CharSequence";
-            case java.util.List list when list. && new StringBuilder().ERROR. 
&& java.util.ArrayList<String>.->"list";
-            default ->
-                "default";
-        };
+public class InstanceofPattern {  
+    public void op(Object o) {
+        if (o instanceof String s) {
+            s.
+        }
     }
-}    
+}
diff --git 
a/java/java.completion/test/unit/data/org/netbeans/modules/java/completion/data/SwitchPatternMatching.java
 
b/java/java.completion/test/unit/data/org/netbeans/modules/java/completion/data/SwitchPatternMatching.java
index d5edee7db2..610c304283 100644
--- 
a/java/java.completion/test/unit/data/org/netbeans/modules/java/completion/data/SwitchPatternMatching.java
+++ 
b/java/java.completion/test/unit/data/org/netbeans/modules/java/completion/data/SwitchPatternMatching.java
@@ -21,18 +21,21 @@ package test;
 
 import java.util.stream.IntStream;
 
-public class Test{
-    
-     public void op(int a) {
-        Object obj = "test";
+public class Test {
+
+     public void op(Object obj) {
         String result = switch (obj) {
-            case null, String  ->
-                "null & String";
-            case CharSequence s when s. && obj. && IntStream.of(1).max().->
+            case null ->
+                "null";
+            case CharSequence s when s. && obj. ->
                 "CharSequence";
-            case java.util.List list when list. && new StringBuilder().ERROR. 
&& java.util.ArrayList<String>.->"list";
+            case Point(var v, Integer j) when v. ->
+                "Point";
             default ->
                 "default";
         };
     }
-}    
+}
+
+record Point(Number x, Number y) {}
+enum Color {RED, GREEN, BLUE}
\ No newline at end of file
diff --git 
a/java/java.completion/test/unit/src/org/netbeans/modules/java/completion/JavaCompletionTask116FeaturesTest.java
 
b/java/java.completion/test/unit/src/org/netbeans/modules/java/completion/JavaCompletionTask116FeaturesTest.java
new file mode 100644
index 0000000000..00fbe2ae9b
--- /dev/null
+++ 
b/java/java.completion/test/unit/src/org/netbeans/modules/java/completion/JavaCompletionTask116FeaturesTest.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.netbeans.modules.java.completion;
+
+import org.netbeans.modules.java.source.parsing.JavacParser;
+
+public class JavaCompletionTask116FeaturesTest extends CompletionTestBase {
+
+    private static final String SOURCE_LEVEL = "16"; //NOI18N
+
+    public JavaCompletionTask116FeaturesTest(String testName) {
+        super(testName);
+    }
+
+    public void testInstanceofPatternCompletion_1() throws Exception {
+        performTest("InstanceofPattern", 907, null, "stringVarName.pass", 
SOURCE_LEVEL);
+    }
+
+    public void testInstanceofPatternCompletion_2() throws Exception {
+        performTest("InstanceofPattern", 908, " ", "empty.pass", SOURCE_LEVEL);
+    }
+
+    public void testInstanceofPatternCompletion_3() throws Exception {
+        performTest("InstanceofPattern", 926, null, "stringContent.pass", 
SOURCE_LEVEL);
+    }
+
+    static {
+        JavacParser.DISABLE_SOURCE_LEVEL_DOWNGRADE = true;
+    }
+}
diff --git 
a/java/java.completion/test/unit/src/org/netbeans/modules/java/completion/JavaCompletionTask117FeaturesTest.java
 
b/java/java.completion/test/unit/src/org/netbeans/modules/java/completion/JavaCompletionTask117FeaturesTest.java
deleted file mode 100644
index 3d4bbdab92..0000000000
--- 
a/java/java.completion/test/unit/src/org/netbeans/modules/java/completion/JavaCompletionTask117FeaturesTest.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.netbeans.modules.java.completion;
-
-import org.netbeans.modules.java.source.parsing.JavacParser;
-
-/**
- *
- * @author aksinsin
- */
-public class JavaCompletionTask117FeaturesTest extends CompletionTestBase {
-
-    public JavaCompletionTask117FeaturesTest(String testName) {
-        super(testName);
-    }
-
-    public void testCaseLabels_1() throws Exception {
-        performTest("SwitchPatternMatching", 998, null, 
"AutoCompletion_CaseLabels_PatternMatchingSwitch_1.pass", "21");
-    }
-
-    public void testCaseLabels_2() throws Exception {
-        performTest("SwitchPatternMatching", 1004, null, 
"AutoCompletion_CaseLabels_PatternMatchingSwitch_2.pass", "21");
-    }
-
-    public void testCaseLabels_3() throws Exception {
-        performTest("SwitchPatternMatching", 1011, "s, ", 
"AutoCompletion_CaseLabels_PatternMatchingSwitch_3.pass", "21");
-    }
-
-    public void testVariableNameSuggestion() throws Exception {
-        performTest("SwitchPatternMatching", 1011, null, 
"AutoCompletion_VarNameSuggestion_PatternMatchingSwitch.pass", "21");
-    } 
-
-    public void testClassMembersAutoCompletion_GuardedPattern() throws 
Exception {
-        performTest("SwitchPatternMatching", 1087, null, 
"AutoCompletion_MembersSelect_GuardedPatternMatchingSwitch.pass", "21");
-    }
-
-    public void testClassMembersAutoCompletion_GuardedPattern_1() throws 
Exception {
-        performTest("SwitchPatternMatching", 1095, null, 
"AutoCompletion_MembersSelect_GuardedPatternMatchingSwitch_1.pass", "21");
-    }
-    public void testClassMembersAutoCompletion_GuardedPattern_2() throws 
Exception {
-        performTest("SwitchPatternMatching", 1115, null, 
"AutoCompletion_MembersSelect_GuardedPatternMatchingSwitch_2.pass", "21");
-    }
-    public void testClassMembersAutoCompletion_ParanthesizedPattern() throws 
Exception {
-        performTest("SwitchPatternMatching", 1204, null, 
"AutoCompletion_MembersSelect_ParenthesizedPatternMatchingSwitch.pass", "21");
-    }
-    public void testClassMembersAutoCompletion_ParanthesizedPattern_1() throws 
Exception {
-        performTest("SwitchPatternMatching", 1227, null, 
"AutoCompletion_MembersSelect_ParenthesizedPatternMatchingSwitch_1.pass", "21");
-    }
-
-    static {
-        JavacParser.DISABLE_SOURCE_LEVEL_DOWNGRADE = true;
-    }
-    
-}
diff --git 
a/java/java.completion/test/unit/src/org/netbeans/modules/java/completion/JavaCompletionTask119FeaturesTest.java
 
b/java/java.completion/test/unit/src/org/netbeans/modules/java/completion/JavaCompletionTask119FeaturesTest.java
deleted file mode 100644
index c203efaa6f..0000000000
--- 
a/java/java.completion/test/unit/src/org/netbeans/modules/java/completion/JavaCompletionTask119FeaturesTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.netbeans.modules.java.completion;
-
-import org.netbeans.modules.java.source.parsing.JavacParser;
-
-/**
- *
- * @author Dusan Balek
- */
-public class JavaCompletionTask119FeaturesTest extends CompletionTestBase {
-
-    public JavaCompletionTask119FeaturesTest(String testName) {
-        super(testName);
-    }
-
-    public void testRecordPatternCompletion_1() throws Exception {
-        performTest("RecordPattern", 930, null, 
"AutoCompletion_RecordPattern_1.pass", "21");
-    }
-
-    public void testRecordPatternCompletion_2() throws Exception {
-        performTest("RecordPattern", 1013, null, 
"AutoCompletion_RecordPattern_2.pass", "21");
-    }
-
-    public void testRecordPatternCompletion_3() throws Exception {
-        performTest("RecordPattern", 1107, null, 
"AutoCompletion_RecordPattern_3.pass", "21");
-    }
-
-    public void testCasePatternGuard_1() throws Exception {
-        performTest("SwitchPatternMatching", 1080, null, 
"AutoCompletion_Guard_PatternMatchingSwitch.pass", "21");
-    }
-
-    public void testCasePatternGuard_2() throws Exception {
-        performTest("SwitchPatternMatching", 1193, null, 
"AutoCompletion_Guard_PatternMatchingSwitch.pass", "21");
-    }
-
-    public void TODOtestNoCrash() throws Exception {
-        performTest("SwitchPatternMatching", 1275, "case R(var s,", 
"AutoCompletion_Guard_PatternMatchingSwitch.pass", "21");
-    }
-
-    static {
-        JavacParser.DISABLE_SOURCE_LEVEL_DOWNGRADE = true;
-    }
-
-}
diff --git 
a/java/java.completion/test/unit/src/org/netbeans/modules/java/completion/JavaCompletionTask121FeaturesTest.java
 
b/java/java.completion/test/unit/src/org/netbeans/modules/java/completion/JavaCompletionTask121FeaturesTest.java
new file mode 100644
index 0000000000..b116b43066
--- /dev/null
+++ 
b/java/java.completion/test/unit/src/org/netbeans/modules/java/completion/JavaCompletionTask121FeaturesTest.java
@@ -0,0 +1,123 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.netbeans.modules.java.completion;
+
+import org.netbeans.modules.java.source.parsing.JavacParser;
+
+/**
+ *
+ * @author aksinsin
+ */
+public class JavaCompletionTask121FeaturesTest extends CompletionTestBase {
+
+    private static final String SOURCE_LEVEL = "21"; //NOI18N
+
+    public JavaCompletionTask121FeaturesTest(String testName) {
+        super(testName);
+    }
+
+    public void testRecordPatternCompletion_1() throws Exception {
+        performTest("RecordPattern", 930, null, 
"AutoCompletion_RecordPattern_1.pass", SOURCE_LEVEL);
+    }
+
+    public void testRecordPatternCompletion_2() throws Exception {
+        performTest("RecordPattern", 1013, null, 
"AutoCompletion_RecordPattern_2.pass", SOURCE_LEVEL);
+    }
+
+    public void testRecordPatternCompletion_3() throws Exception {
+        performTest("RecordPattern", 1014, null, 
"AutoCompletion_RecordPattern_3.pass", SOURCE_LEVEL);
+    }
+
+    public void testRecordPatternCompletion_4() throws Exception {
+        performTest("RecordPattern", 1095, null, 
"AutoCompletion_RecordPattern_4.pass", SOURCE_LEVEL);
+    }
+
+    public void testRecordPatternCompletion_5() throws Exception {
+        performTest("RecordPattern", 1107, null, 
"AutoCompletion_RecordPattern_5.pass", SOURCE_LEVEL);
+    }
+
+    public void testCaseLabels_1() throws Exception {
+        performTest("SwitchPatternMatching", 971, null, 
"AutoCompletion_CaseLabels_PatternMatchingSwitch_1.pass", SOURCE_LEVEL);
+    }
+
+    public void testCaseLabels_2() throws Exception {
+        performTest("SwitchPatternMatching", 975, ", ", "defaultKeyword.pass", 
SOURCE_LEVEL);
+    }
+
+    public void testCaseLabels_3() throws Exception {
+        performTest("SwitchPatternMatching", 976, null, "empty.pass", 
SOURCE_LEVEL);
+    }
+
+    public void testCaseLabels_4() throws Exception {
+        performTest("SwitchPatternMatching", 1015, "case default, ", 
"empty.pass", SOURCE_LEVEL);
+    }
+
+    public void testVariableNameSuggestion() throws Exception {
+        performTest("SwitchPatternMatching", 1033, null, 
"AutoCompletion_VarNameSuggestion_PatternMatchingSwitch.pass", SOURCE_LEVEL);
+    }
+
+    public void testCasePatternGuard_1() throws Exception {
+        performTest("SwitchPatternMatching", 1035, null, 
"AutoCompletion_Guard_PatternMatchingSwitch.pass", SOURCE_LEVEL);
+    }
+
+    public void testCasePatternGuard_2() throws Exception {
+        performTest("SwitchPatternMatching", 1127, null, 
"AutoCompletion_Guard_PatternMatchingSwitch.pass", SOURCE_LEVEL);
+    }
+
+    public void testCasePatternGuard_3() throws Exception {
+        performTest("SwitchPatternMatching", 1040, null, 
"AutoCompletion_Guard_PatternMatchingSwitch_1.pass", SOURCE_LEVEL);
+    }
+
+    public void testClassMembersAutoCompletion_GuardedPattern() throws 
Exception {
+        performTest("SwitchPatternMatching", 1042, null, 
"AutoCompletion_MembersSelect_GuardedPatternMatchingSwitch.pass", SOURCE_LEVEL);
+    }
+
+    public void testClassMembersAutoCompletion_GuardedPattern_1() throws 
Exception {
+        performTest("SwitchPatternMatching", 1050, null, 
"AutoCompletion_MembersSelect_GuardedPatternMatchingSwitch_1.pass", 
SOURCE_LEVEL);
+    }
+
+    public void testCaseRecordPattern_1() throws Exception {
+        performTest("SwitchPatternMatching", 1108, null, 
"AutoCompletion_CaseRecordPattern_1.pass", SOURCE_LEVEL);
+    }
+
+    public void testCaseRecordPattern_2() throws Exception {
+        performTest("SwitchPatternMatching", 1109, null, 
"AutoCompletion_CaseRecordPattern_2.pass", SOURCE_LEVEL);
+    }
+
+    public void testCaseRecordPattern_3() throws Exception {
+        performTest("SwitchPatternMatching", 1113, null, 
"AutoCompletion_CaseRecordPattern_3.pass", SOURCE_LEVEL);
+    }
+
+    public void testCaseRecordPattern_4() throws Exception {
+        performTest("SwitchPatternMatching", 1134, null, 
"AutoCompletion_CaseRecordPattern_4.pass", SOURCE_LEVEL);
+    }
+
+    public void testCaseBodyCompletion_GuardedPattern() throws Exception {
+        performTest("SwitchPatternMatching", 1137, null, 
"AutoCompletion_CaseBody_PatternMatchingSwitch.pass", SOURCE_LEVEL);
+    }
+
+    public void TODOtestNoCrash() throws Exception {
+        performTest("SwitchPatternMatching", 1275, "case R(var s,", 
"AutoCompletion_Guard_PatternMatchingSwitch.pass", SOURCE_LEVEL);
+    }
+
+    static {
+        JavacParser.DISABLE_SOURCE_LEVEL_DOWNGRADE = true;
+    }
+}
diff --git 
a/java/java.editor/src/org/netbeans/modules/editor/java/JavaCompletionCollector.java
 
b/java/java.editor/src/org/netbeans/modules/editor/java/JavaCompletionCollector.java
index 679a3b84b3..e97d4a8a8c 100644
--- 
a/java/java.editor/src/org/netbeans/modules/editor/java/JavaCompletionCollector.java
+++ 
b/java/java.editor/src/org/netbeans/modules/editor/java/JavaCompletionCollector.java
@@ -52,6 +52,7 @@ import javax.lang.model.element.Element;
 import javax.lang.model.element.ElementKind;
 import javax.lang.model.element.ExecutableElement;
 import javax.lang.model.element.Modifier;
+import javax.lang.model.element.RecordComponentElement;
 import javax.lang.model.element.TypeElement;
 import javax.lang.model.element.TypeParameterElement;
 import javax.lang.model.element.VariableElement;
@@ -154,7 +155,7 @@ public class JavaCompletionCollector implements 
CompletionCollector {
         return ret.get();
     }
 
-    public static final Set<String> SUPPORTED_ELEMENT_KINDS = new 
HashSet<>(Arrays.asList("PACKAGE", "CLASS", "INTERFACE", "ENUM", 
"ANNOTATION_TYPE", "METHOD", "CONSTRUCTOR", "INSTANCE_INIT", "STATIC_INIT", 
"FIELD", "ENUM_CONSTANT", "TYPE_PARAMETER", "MODULE"));
+    public static final Set<String> SUPPORTED_ELEMENT_KINDS = new 
HashSet<>(Arrays.asList("PACKAGE", "CLASS", "INTERFACE", "ENUM", 
"ANNOTATION_TYPE", "RECORD", "METHOD", "CONSTRUCTOR", "INSTANCE_INIT", 
"STATIC_INIT", "FIELD", "ENUM_CONSTANT", "TYPE_PARAMETER", "MODULE"));
 
     public static Supplier<String> getDocumentation(Document doc, int offset, 
ElementHandle handle) {
         return () -> {
@@ -189,6 +190,8 @@ public class JavaCompletionCollector implements 
CompletionCollector {
                 return Completion.Kind.Enum;
             case CLASS:
                 return Completion.Kind.Class;
+            case RECORD:
+                return Completion.Kind.Struct;
             case ANNOTATION_TYPE:
                 return Completion.Kind.Interface;
             case INTERFACE:
@@ -294,7 +297,8 @@ public class JavaCompletionCollector implements 
CompletionCollector {
     }
 
     private static class ItemFactoryImpl implements 
JavaCompletionTask.TypeCastableItemFactory<Completion>,
-            JavaCompletionTask.LambdaItemFactory<Completion>, 
JavaCompletionTask.ModuleItemFactory<Completion> {
+            JavaCompletionTask.LambdaItemFactory<Completion>, 
JavaCompletionTask.ModuleItemFactory<Completion>,
+            JavaCompletionTask.RecordPatternItemFactory<Completion> {
 
         private static final String EMPTY = "";
         private static final String ERROR = "<error>";
@@ -931,6 +935,41 @@ public class JavaCompletionCollector implements 
CompletionCollector {
                     .build();
         }
 
+
+        @Override
+        public Completion createRecordPatternItem(CompilationInfo info, 
TypeElement elem, DeclaredType type, int substitutionOffset, ReferencesCount 
referencesCount, boolean isDeprecated, boolean insideNew, boolean addTypeVars) {
+            String simpleName = elem.getSimpleName().toString();
+            Iterator<? extends RecordComponentElement> it = 
elem.getRecordComponents().iterator();
+            StringBuilder label = new StringBuilder(elem.getSimpleName());
+            StringBuilder insertText = new StringBuilder(elem.getSimpleName());
+            RecordComponentElement recordComponent;
+            int cnt = 1;
+            label.append("(");
+            insertText.append("(");
+            while (it.hasNext()) {
+                recordComponent = it.next();
+                CharSequence typeName = Utilities.getTypeName(info, 
recordComponent.getAccessor().getReturnType(), false);
+                label.append(typeName);
+                
insertText.append("${").append(cnt++).append(":").append(typeName).append("}");
+                label.append(" ");
+                insertText.append(" ");
+                label.append(recordComponent.getSimpleName());
+                
insertText.append("${").append(cnt++).append(":").append(recordComponent.getSimpleName()).append("}");
+                if (it.hasNext()) {
+                    label.append(", ");
+                    insertText.append(", ");
+                }
+            }
+            label.append(")");
+            insertText.append(")");
+            return CompletionCollector.newBuilder(label.toString())
+                    .kind(Completion.Kind.Struct)
+                    .insertText(insertText.toString())
+                    .insertTextFormat(Completion.TextFormat.Snippet)
+                    .sortText(String.format("%04d%s#", 650, simpleName))
+                    .build();
+        }
+
         private Completion createTypeItem(CompilationInfo info, String prefix, 
ElementHandle<TypeElement> handle, TypeElement elem, DeclaredType type, int 
substitutionOffset, ReferencesCount referencesCount, boolean isDeprecated, 
boolean insideNew, boolean addTypeVars, boolean addSimpleName, boolean 
smartType) {
             int off = info.getSnapshot().getEmbeddedOffset(substitutionOffset);
             String name = elem.getQualifiedName().toString();
diff --git 
a/java/java.editor/src/org/netbeans/modules/editor/java/JavaCompletionItem.java 
b/java/java.editor/src/org/netbeans/modules/editor/java/JavaCompletionItem.java
index d715406d51..733ba9ad32 100644
--- 
a/java/java.editor/src/org/netbeans/modules/editor/java/JavaCompletionItem.java
+++ 
b/java/java.editor/src/org/netbeans/modules/editor/java/JavaCompletionItem.java
@@ -1357,15 +1357,12 @@ public abstract class JavaCompletionItem implements 
CompletionItem {
             Iterator<? extends RecordComponentElement> it = 
elem.getRecordComponents().iterator();
             StringBuilder sb = new StringBuilder();
             RecordComponentElement recordComponent;
-            String name;
             sb.append("(");
             while (it.hasNext()) {
                 recordComponent = it.next();
-                name = 
recordComponent.getAccessor().getReturnType().toString();
-                name = name.substring(name.lastIndexOf(".") + 1);
-                sb.append(name);
+                sb.append(Utilities.getTypeName(info, 
recordComponent.getAccessor().getReturnType(), false));
                 sb.append(" ");
-                sb.append(recordComponent.getSimpleName().toString());
+                sb.append(recordComponent.getSimpleName());
                 if (it.hasNext()) {
                     sb.append(", "); //NOI18N
                 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@netbeans.apache.org
For additional commands, e-mail: commits-h...@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists

Reply via email to