You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by db...@apache.org on 2021/06/08 08:34:39 UTC

[netbeans] branch master updated: LSP: groovy initial support (#2983)

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 d3ca797  LSP: groovy initial support (#2983)
d3ca797 is described below

commit d3ca7971bb0c1f59366eb96e1bc7854808ec7e4c
Author: Dusan Balek <du...@oracle.com>
AuthorDate: Tue Jun 8 10:34:02 2021 +0200

    LSP: groovy initial support (#2983)
    
    * Upgrading groovy libs to 3.0.8
    * Initial Groovy support added to NBLS.
---
 groovy/groovy.editor/manifest.mf                   |   4 +-
 .../org-netbeans-modules-groovy-editor.sig         |  37 +++--
 groovy/groovy.editor/nbproject/project.xml         |   2 +-
 .../groovy/editor/api/PathFinderVisitor.java       |   5 +
 .../groovy/editor/api/completion/Bundle.properties |   2 +-
 .../api/completion/util/CompletionContext.java     |   9 +-
 .../editor/api/elements/index/IndexedMethod.java   |   2 +-
 .../groovy/editor/api/parser/GroovyParser.java     |  54 +++++++-
 .../editor/completion/NamedParamsCompletion.java   |  28 +++-
 .../groovy/editor/utils/ASTChildrenVisitor.java    |  27 ++--
 .../test/unit/data/testfiles/Hello.groovy.indexed  |   8 ++
 ...evels1.groovy.testBasicAccessLevels1.completion |   5 +-
 ...Closure1.groovy.testInsideClosure1_1.completion |  11 +-
 ...llections1.groovy.testCollections1_3.completion |   2 +
 ...llections1.groovy.testCollections1_5.completion |   8 +-
 ...ls1.groovy.testCollectionLiterals1_1.completion |   2 +
 ...ls2.groovy.testCollectionLiterals2_1.completion |   2 +
 ...1.groovy.testCompletionReturnType1_1.completion |   2 +
 ...1.groovy.testCompletionReturnType1_2.completion |   2 +
 ...1.groovy.testCompletionReturnType1_3.completion |   2 +
 ...1.groovy.testCompletionReturnType1_4.completion |   2 +
 ...1.groovy.testCompletionReturnType1_5.completion |   2 +
 ...1.groovy.testCompletionReturnType1_6.completion |   2 +
 ...1.groovy.testCompletionReturnType1_7.completion |   2 +
 .../Inference1.groovy.testInference1.completion    |   2 +
 .../Inference1.groovy.testInference2.completion    |   8 ++
 ...n1.groovy.testInterfaceCompletion1_1.completion |   2 +-
 ...1.groovy.testCompletionForLiteral1_3.completion |   2 +
 ....testCompletionGeneratedAccessors1_1.completion |   2 +-
 ....testCompletionGeneratedAccessors1_2.completion |   2 +-
 ....groovy.testCompletionGroovyClass1_1.completion |   5 +-
 ....groovy.testCompletionGroovySuper1_1.completion |   1 +
 ...1.groovy.testCompletionGroovyThis1_1.completion |   2 +-
 ...r1.groovy.testCompletionInsideFor1_2.completion |   3 +-
 ...groovy.testCompletionNoPrefixString1.completion |  15 +++
 ...groovy.testCompletionNoPrefixString2.completion |  15 +++
 .../Methods1.groovy.testMethods1_4.completion      |   1 +
 .../Methods2.groovy.testMethods2_1.completion      |   1 +
 ...structor.groovy.testEmptyConstructor.completion |  13 +-
 ....testFewParamsConstructor_AfterComma.completion |   9 ++
 ...ramsConstructor_AfterLeftParenthesis.completion |   9 ++
 ...amsConstructor_InsideNamedParameter2.completion |   9 ++
 ...perator1.groovy.testElvisOperator1_1.completion |   1 +
 ...perator2.groovy.testElvisOperator2_1.completion |   1 +
 ...perator3.groovy.testElvisOperator3_1.completion |   1 +
 ....testSpreadOperator1_stringArray_all.completion |  17 ++-
 ...tSpreadOperator2_stringArray_sPrefix.completion |   5 +-
 ...ovy.testSpreadOperator3_intArray_all.completion |   1 +
 ...testSpreadOperator4_intArray_sPrefix.completion |   3 +-
 ...oovy.testAfterExtendsTypeCompletion1.completion |  11 +-
 ...te1_interfaceDelegator_withoutPrefix.completion |   5 +-
 ....groovy.testSingleton2_withGetPrefix.completion |   2 +-
 ....groovy.testSingleton3_withoutPrefix.completion |   5 +-
 .../editor/api/GroovyDeclarationFinderTest.java    |  29 ++--
 .../modules/groovy/editor/api/GroovyIndexTest.java |   3 +-
 .../parser/GroovyVirtualSourceProviderTest.java    |  26 +++-
 groovy/groovy.gsp/nbproject/project.xml            |  14 +-
 groovy/groovy.kit/nbproject/project.xml            |   4 +-
 groovy/groovy.refactoring/nbproject/project.xml    |  26 ++--
 groovy/libs.groovy/external/binaries-list          |   4 +-
 ...2.5.14-license.txt => groovy-3.0.8-license.txt} |   4 +-
 ...y-2.5.14-notice.txt => groovy-3.0.8-notice.txt} |   0
 groovy/libs.groovy/manifest.mf                     |   2 +-
 groovy/libs.groovy/nbproject/project.properties    |   4 +-
 groovy/libs.groovy/nbproject/project.xml           |   7 +-
 .../parser/antlr4/util/PositionConfigureUtils.java | 150 +++++++++++++++++++++
 .../nbcode/nbproject/platform.properties           |  10 +-
 java/java.lsp.server/script/etc/nbcode.clusters    |   1 +
 java/java.lsp.server/vscode/src/extension.ts       |   7 +-
 69 files changed, 543 insertions(+), 123 deletions(-)

diff --git a/groovy/groovy.editor/manifest.mf b/groovy/groovy.editor/manifest.mf
index 33dcedb..ec33846 100644
--- a/groovy/groovy.editor/manifest.mf
+++ b/groovy/groovy.editor/manifest.mf
@@ -1,6 +1,6 @@
 Manifest-Version: 1.0
 AutoUpdate-Show-In-Client: false
-OpenIDE-Module: org.netbeans.modules.groovy.editor/2
+OpenIDE-Module: org.netbeans.modules.groovy.editor/3
 OpenIDE-Module-Layer: org/netbeans/modules/groovy/editor/resources/layer.xml
 OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/groovy/editor/Bundle.properties
-OpenIDE-Module-Specification-Version: 1.75
+OpenIDE-Module-Specification-Version: 1.76
diff --git a/groovy/groovy.editor/nbproject/org-netbeans-modules-groovy-editor.sig b/groovy/groovy.editor/nbproject/org-netbeans-modules-groovy-editor.sig
index 118f8f2..cd58674 100644
--- a/groovy/groovy.editor/nbproject/org-netbeans-modules-groovy-editor.sig
+++ b/groovy/groovy.editor/nbproject/org-netbeans-modules-groovy-editor.sig
@@ -1,5 +1,5 @@
 #Signature file v4.1
-#Version 1.74
+#Version 1.76
 
 CLSS public abstract interface java.io.Serializable
 
@@ -21,7 +21,6 @@ meth public final java.lang.String name()
 meth public java.lang.String toString()
 meth public static <%0 extends java.lang.Enum<{%%0}>> {%%0} valueOf(java.lang.Class<{%%0}>,java.lang.String)
 supr java.lang.Object
-hfds name,ordinal
 
 CLSS public abstract interface java.lang.Iterable<%0 extends java.lang.Object>
 meth public abstract java.util.Iterator<{java.lang.Iterable%0}> iterator()
@@ -44,24 +43,19 @@ meth public java.lang.String toString()
 
 CLSS public org.codehaus.groovy.ast.ASTNode
 cons public init()
-meth public <%0 extends java.lang.Object> {%%0} getNodeMetaData(java.lang.Object)
-meth public boolean equals(java.lang.Object)
+intf org.codehaus.groovy.ast.NodeMetaDataHandler
 meth public int getColumnNumber()
 meth public int getLastColumnNumber()
 meth public int getLastLineNumber()
 meth public int getLineNumber()
-meth public int hashCode()
-meth public java.lang.Object putNodeMetaData(java.lang.Object,java.lang.Object)
 meth public java.lang.String getText()
-meth public java.util.Map<?,?> getNodeMetaData()
-meth public org.codehaus.groovy.util.ListHashMap getMetaDataMap()
+meth public java.util.Map<?,?> getMetaDataMap()
 meth public void copyNodeMetaData(org.codehaus.groovy.ast.ASTNode)
-meth public void removeNodeMetaData(java.lang.Object)
 meth public void setColumnNumber(int)
 meth public void setLastColumnNumber(int)
 meth public void setLastLineNumber(int)
 meth public void setLineNumber(int)
-meth public void setNodeMetaData(java.lang.Object,java.lang.Object)
+meth public void setMetaDataMap(java.util.Map<?,?>)
 meth public void setSourcePosition(org.codehaus.groovy.ast.ASTNode)
 meth public void visit(org.codehaus.groovy.ast.GroovyCodeVisitor)
 supr java.lang.Object
@@ -72,6 +66,7 @@ cons public init()
 intf org.codehaus.groovy.ast.GroovyClassVisitor
 intf org.codehaus.groovy.transform.ErrorCollecting
 meth protected abstract org.codehaus.groovy.control.SourceUnit getSourceUnit()
+meth protected void visitAnnotation(org.codehaus.groovy.ast.AnnotationNode)
 meth protected void visitClassCodeContainer(org.codehaus.groovy.ast.stmt.Statement)
 meth protected void visitConstructorOrMethod(org.codehaus.groovy.ast.MethodNode,boolean)
 meth protected void visitObjectInitializerStatements(org.codehaus.groovy.ast.ClassNode)
@@ -107,8 +102,7 @@ supr org.codehaus.groovy.ast.CodeVisitorSupport
 CLSS public abstract org.codehaus.groovy.ast.CodeVisitorSupport
 cons public init()
 intf org.codehaus.groovy.ast.GroovyCodeVisitor
-meth protected void visitEmptyStatement(org.codehaus.groovy.ast.stmt.EmptyStatement)
-meth protected void visitListOfExpressions(java.util.List<? extends org.codehaus.groovy.ast.expr.Expression>)
+meth protected void afterSwitchConditionExpressionVisited(org.codehaus.groovy.ast.stmt.SwitchStatement)
 meth public void visitArgumentlistExpression(org.codehaus.groovy.ast.expr.ArgumentListExpression)
 meth public void visitArrayExpression(org.codehaus.groovy.ast.expr.ArrayExpression)
 meth public void visitAssertStatement(org.codehaus.groovy.ast.stmt.AssertStatement)
@@ -130,16 +124,19 @@ meth public void visitConstructorCallExpression(org.codehaus.groovy.ast.expr.Con
 meth public void visitContinueStatement(org.codehaus.groovy.ast.stmt.ContinueStatement)
 meth public void visitDeclarationExpression(org.codehaus.groovy.ast.expr.DeclarationExpression)
 meth public void visitDoWhileLoop(org.codehaus.groovy.ast.stmt.DoWhileStatement)
+meth public void visitEmptyStatement(org.codehaus.groovy.ast.stmt.EmptyStatement)
 meth public void visitExpressionStatement(org.codehaus.groovy.ast.stmt.ExpressionStatement)
 meth public void visitFieldExpression(org.codehaus.groovy.ast.expr.FieldExpression)
 meth public void visitForLoop(org.codehaus.groovy.ast.stmt.ForStatement)
 meth public void visitGStringExpression(org.codehaus.groovy.ast.expr.GStringExpression)
 meth public void visitIfElse(org.codehaus.groovy.ast.stmt.IfStatement)
+meth public void visitLambdaExpression(org.codehaus.groovy.ast.expr.LambdaExpression)
 meth public void visitListExpression(org.codehaus.groovy.ast.expr.ListExpression)
 meth public void visitMapEntryExpression(org.codehaus.groovy.ast.expr.MapEntryExpression)
 meth public void visitMapExpression(org.codehaus.groovy.ast.expr.MapExpression)
 meth public void visitMethodCallExpression(org.codehaus.groovy.ast.expr.MethodCallExpression)
 meth public void visitMethodPointerExpression(org.codehaus.groovy.ast.expr.MethodPointerExpression)
+meth public void visitMethodReferenceExpression(org.codehaus.groovy.ast.expr.MethodReferenceExpression)
 meth public void visitNotExpression(org.codehaus.groovy.ast.expr.NotExpression)
 meth public void visitPostfixExpression(org.codehaus.groovy.ast.expr.PostfixExpression)
 meth public void visitPrefixExpression(org.codehaus.groovy.ast.expr.PrefixExpression)
@@ -196,11 +193,13 @@ meth public abstract void visitFieldExpression(org.codehaus.groovy.ast.expr.Fiel
 meth public abstract void visitForLoop(org.codehaus.groovy.ast.stmt.ForStatement)
 meth public abstract void visitGStringExpression(org.codehaus.groovy.ast.expr.GStringExpression)
 meth public abstract void visitIfElse(org.codehaus.groovy.ast.stmt.IfStatement)
+meth public abstract void visitLambdaExpression(org.codehaus.groovy.ast.expr.LambdaExpression)
 meth public abstract void visitListExpression(org.codehaus.groovy.ast.expr.ListExpression)
 meth public abstract void visitMapEntryExpression(org.codehaus.groovy.ast.expr.MapEntryExpression)
 meth public abstract void visitMapExpression(org.codehaus.groovy.ast.expr.MapExpression)
 meth public abstract void visitMethodCallExpression(org.codehaus.groovy.ast.expr.MethodCallExpression)
 meth public abstract void visitMethodPointerExpression(org.codehaus.groovy.ast.expr.MethodPointerExpression)
+meth public abstract void visitMethodReferenceExpression(org.codehaus.groovy.ast.expr.MethodReferenceExpression)
 meth public abstract void visitNotExpression(org.codehaus.groovy.ast.expr.NotExpression)
 meth public abstract void visitPostfixExpression(org.codehaus.groovy.ast.expr.PostfixExpression)
 meth public abstract void visitPrefixExpression(org.codehaus.groovy.ast.expr.PrefixExpression)
@@ -221,6 +220,20 @@ meth public abstract void visitUnaryMinusExpression(org.codehaus.groovy.ast.expr
 meth public abstract void visitUnaryPlusExpression(org.codehaus.groovy.ast.expr.UnaryPlusExpression)
 meth public abstract void visitVariableExpression(org.codehaus.groovy.ast.expr.VariableExpression)
 meth public abstract void visitWhileLoop(org.codehaus.groovy.ast.stmt.WhileStatement)
+meth public void visitEmptyExpression(org.codehaus.groovy.ast.expr.EmptyExpression)
+meth public void visitEmptyStatement(org.codehaus.groovy.ast.stmt.EmptyStatement)
+meth public void visitListOfExpressions(java.util.List<? extends org.codehaus.groovy.ast.expr.Expression>)
+
+CLSS public abstract interface org.codehaus.groovy.ast.NodeMetaDataHandler
+meth public <%0 extends java.lang.Object> {%%0} getNodeMetaData(java.lang.Object)
+meth public <%0 extends java.lang.Object> {%%0} getNodeMetaData(java.lang.Object,java.util.function.Function<?,? extends {%%0}>)
+meth public abstract java.util.Map<?,?> getMetaDataMap()
+meth public abstract void setMetaDataMap(java.util.Map<?,?>)
+meth public java.lang.Object putNodeMetaData(java.lang.Object,java.lang.Object)
+meth public java.util.Map<?,?> getNodeMetaData()
+meth public void copyNodeMetaData(org.codehaus.groovy.ast.NodeMetaDataHandler)
+meth public void removeNodeMetaData(java.lang.Object)
+meth public void setNodeMetaData(java.lang.Object,java.lang.Object)
 
 CLSS public abstract interface org.codehaus.groovy.transform.ErrorCollecting
 meth public abstract void addError(java.lang.String,org.codehaus.groovy.ast.ASTNode)
diff --git a/groovy/groovy.editor/nbproject/project.xml b/groovy/groovy.editor/nbproject/project.xml
index d971f65..206ae05 100644
--- a/groovy/groovy.editor/nbproject/project.xml
+++ b/groovy/groovy.editor/nbproject/project.xml
@@ -249,7 +249,7 @@
                     <build-prerequisite/>
                     <compile-dependency/>
                     <run-dependency>
-                        <specification-version>1.0</specification-version>
+                        <specification-version>2.11</specification-version>
                     </run-dependency>
                 </dependency>
                 <dependency>
diff --git a/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/api/PathFinderVisitor.java b/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/api/PathFinderVisitor.java
index 52e52f6..b53c49e 100644
--- a/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/api/PathFinderVisitor.java
+++ b/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/api/PathFinderVisitor.java
@@ -594,6 +594,11 @@ public class PathFinderVisitor extends ClassCodeVisitorSupport {
             return addToPath ? true : false;
         }
 
+        if (node instanceof ArgumentListExpression || node instanceof TupleExpression) {
+            beginColumn++;
+            endColumn--;
+        }
+
         boolean result = false;
 
         if (beginLine == endLine) {
diff --git a/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/api/completion/Bundle.properties b/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/api/completion/Bundle.properties
index 227f1ef..5e40dc7 100644
--- a/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/api/completion/Bundle.properties
+++ b/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/api/completion/Bundle.properties
@@ -16,4 +16,4 @@
 # under the License.
 
 GroovyCompletion_NoJavaDocFound=<h2>Unable to find the doc for JDK/GDK.</h2><br>\
-You can configure GDK 2.4.5 doc folder in Tools/Options/Miscellaneous/Groovy.
+You can configure GDK 3.0.8 doc folder in Tools/Options/Miscellaneous/Groovy.
diff --git a/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/api/completion/util/CompletionContext.java b/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/api/completion/util/CompletionContext.java
index 20dccb3..222c205 100644
--- a/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/api/completion/util/CompletionContext.java
+++ b/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/api/completion/util/CompletionContext.java
@@ -247,12 +247,15 @@ public final class CompletionContext {
         // now were heading to the beginning to the document ...
 
         boolean classDefBeforePosition = false;
+        boolean openBraceBeforePosition = false;
 
         ts.move(position);
 
         while (ts.isValid() && ts.movePrevious() && ts.offset() >= 0) {
             Token<GroovyTokenId> t = ts.token();
-            if (t.id() == GroovyTokenId.LITERAL_class || t.id() == GroovyTokenId.LITERAL_interface || t.id() == GroovyTokenId.LITERAL_trait) {
+            if (t.id() == GroovyTokenId.LBRACE) {
+                openBraceBeforePosition = true;
+            } else if (t.id() == GroovyTokenId.LITERAL_class || t.id() == GroovyTokenId.LITERAL_interface || t.id() == GroovyTokenId.LITERAL_trait) {
                 classDefBeforePosition = true;
                 break;
             }
@@ -298,6 +301,10 @@ public final class CompletionContext {
             }
         }
 
+        if (classDefBeforePosition && !openBraceBeforePosition) {
+            return null;
+        }
+
         if (!scriptMode && !classDefBeforePosition && classDefAfterPosition) {
             return CaretLocation.ABOVE_FIRST_CLASS;
         }
diff --git a/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/api/elements/index/IndexedMethod.java b/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/api/elements/index/IndexedMethod.java
index ef549e3..f8f1ec4 100644
--- a/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/api/elements/index/IndexedMethod.java
+++ b/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/api/elements/index/IndexedMethod.java
@@ -96,7 +96,7 @@ public final class IndexedMethod extends IndexedElement implements MethodElement
         List<String> paramTypes = new ArrayList<>();
 
         for (MethodParameter parameter : getParameters()) {
-            paramTypes.add(parameter.getType());
+            paramTypes.add(parameter.getFqnType());
         }
         return paramTypes;
     }
diff --git a/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/api/parser/GroovyParser.java b/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/api/parser/GroovyParser.java
index f5ca9c2..b73d630 100644
--- a/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/api/parser/GroovyParser.java
+++ b/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/api/parser/GroovyParser.java
@@ -161,7 +161,9 @@ public class GroovyParser extends Parser {
         int offset = context.caretOffset;
 
         // Let caretOffset represent the offset of the portion of the buffer we'll be operating on
-        if ((sanitizing == Sanitize.ERROR_DOT) || (sanitizing == Sanitize.ERROR_LINE)) {
+        if (sanitizing == Sanitize.ERROR_DOT) {
+            offset = context.errorOffset + 1;
+        } else if (sanitizing == Sanitize.ERROR_LINE || sanitizing == Sanitize.PRIOR_ERROR_LINE) {
             offset = context.errorOffset;
         }
 
@@ -250,6 +252,41 @@ public class GroovyParser extends Parser {
                         context.sanitizedContents = doc.substring(lineStart, lineEnd);
                         return true;
                     }
+                } else if  (sanitizing == Sanitize.PRIOR_ERROR_LINE) {
+                    int errRowStart = GroovyUtils.getRowStart(doc, offset);
+                    if (errRowStart > 0) {
+                        int lineEnd = GroovyUtils.getRowLastNonWhite(doc, errRowStart - 1);
+                        if (lineEnd != -1) {
+                            lineEnd++; // lineEnd is exclusive, not inclusive
+                            StringBuilder sb = new StringBuilder(doc.length());
+                            int lineStart = GroovyUtils.getRowStart(doc, errRowStart - 1);
+                            if (lineEnd >= lineStart+2) {
+                                sb.append(doc.substring(0, lineStart));
+                                sb.append("//");
+                                int rest = lineStart + 2;
+                                if (rest < doc.length()) {
+                                    sb.append(doc.substring(rest, doc.length()));
+                                }
+                            } else {
+                                // A line with just one character - can't replace with a comment
+                                // Just replace the char with a space
+                                sb.append(doc.substring(0, lineStart));
+                                sb.append(" ");
+                                int rest = lineStart + 1;
+                                if (rest < doc.length()) {
+                                    sb.append(doc.substring(rest, doc.length()));
+                                }
+
+                            }
+
+                            assert sb.length() == doc.length();
+
+                            context.sanitizedRange = new OffsetRange(lineStart, lineEnd);
+                            context.sanitizedSource = sb.toString();
+                            context.sanitizedContents = doc.substring(lineStart, lineEnd);
+                            return true;
+                        }
+                    }
                 } else {
                     assert sanitizing == Sanitize.ERROR_DOT || sanitizing == Sanitize.EDITED_DOT;
                     // Try nuking dots/colons from this line
@@ -365,9 +402,16 @@ public class GroovyParser extends Parser {
         // Fall through to try the next trick
         case ERROR_LINE:
 
-            // Messing with the error line didn't work - we could try "around" the error line
-            // but I'm not attempting that now.
-            // Finally try removing the whole line around the user editing position
+            // We've tried removing error line - now try removing line prior the the error position
+            if (context.errorOffset != -1) {
+                return parseBuffer(context, Sanitize.PRIOR_ERROR_LINE);
+            }
+
+        // Fall through to try the next trick
+        case PRIOR_ERROR_LINE:
+
+            // Messing with the error line and the line prior didn't work -
+            // finally try removing the whole line around the user editing position
             // (which could be far from where the error is showing up - but if you're typing
             // say a new "def" statement in a class, this will show up as an error on a mismatched
             // "end" statement rather than here
@@ -709,6 +753,8 @@ public class GroovyParser extends Parser {
         ERROR_DOT,
         /** Try to cut out the error line */
         ERROR_LINE,
+        /** Try to cut out line prior the error line */
+        PRIOR_ERROR_LINE,
         /** Try to cut out the current edited line, if known */
         EDITED_LINE,
         /** Attempt to add an "end" to the end of the buffer to make it compile */
diff --git a/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/completion/NamedParamsCompletion.java b/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/completion/NamedParamsCompletion.java
index 6bc74ad..96e7cb4 100644
--- a/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/completion/NamedParamsCompletion.java
+++ b/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/completion/NamedParamsCompletion.java
@@ -20,6 +20,7 @@
 package org.netbeans.modules.groovy.editor.completion;
 
 import java.util.List;
+import java.util.ListIterator;
 import org.codehaus.groovy.ast.ASTNode;
 import org.codehaus.groovy.ast.ClassNode;
 import org.codehaus.groovy.ast.FieldNode;
@@ -66,12 +67,27 @@ public class NamedParamsCompletion extends BaseCompletion {
             }
         }
 
-        ASTNode leafParent = context.path.leafParent();
-        ASTNode leafGrandparent = context.path.leafGrandParent();
-        if (leafParent instanceof NamedArgumentListExpression &&
-            leafGrandparent instanceof ConstructorCallExpression) {
-
-            completeNamedParams(proposals, anchor, (ConstructorCallExpression) leafGrandparent, (NamedArgumentListExpression) leafParent);
+        ListIterator<ASTNode> leafToRoot = context.path.leafToRoot();
+        ASTNode previous = null;
+        NamedArgumentListExpression namedArgsListExp = null;
+        while(leafToRoot.hasNext()) {
+            ASTNode next = leafToRoot.next();
+            if (next instanceof MapEntryExpression) {
+                if (previous == null || ((MapEntryExpression) next).getValueExpression() == previous) {
+                    break;
+                }
+            } else if (next instanceof NamedArgumentListExpression) {
+                if (namedArgsListExp != null) {
+                    break;
+                }
+                namedArgsListExp = (NamedArgumentListExpression) next;
+            } else if (next instanceof ConstructorCallExpression) {
+                if (namedArgsListExp != null) {
+                    completeNamedParams(proposals, anchor, (ConstructorCallExpression) next, namedArgsListExp);
+                }
+                break;
+            }
+            previous = next;
         }
 
         return false;
diff --git a/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/utils/ASTChildrenVisitor.java b/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/utils/ASTChildrenVisitor.java
index e3d8eec..8e0025e 100644
--- a/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/utils/ASTChildrenVisitor.java
+++ b/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/utils/ASTChildrenVisitor.java
@@ -197,7 +197,12 @@ public class ASTChildrenVisitor implements GroovyCodeVisitor {
     public void visitClosureExpression(ClosureExpression expression) {
         children.add(expression.getCode());
     }
-    
+
+    @Override
+    public void visitLambdaExpression(LambdaExpression expression) {
+        visitClosureExpression(expression);
+    }
+
     @Override
     public void visitTupleExpression(TupleExpression expression) {
         visitListOfExpressions(expression.getExpressions());
@@ -217,14 +222,12 @@ public class ASTChildrenVisitor implements GroovyCodeVisitor {
     @Override
     public void visitMapExpression(MapExpression expression) {
         visitListOfExpressions(expression.getMapEntryExpressions());
-        
     }
 
     @Override
     public void visitMapEntryExpression(MapEntryExpression expression) {
         children.add(expression.getKeyExpression());
         children.add(expression.getValueExpression());
-        
     }
 
     @Override
@@ -250,6 +253,11 @@ public class ASTChildrenVisitor implements GroovyCodeVisitor {
     }
 
     @Override
+    public void visitMethodReferenceExpression(MethodReferenceExpression expression) {
+        visitMethodPointerExpression(expression);
+    }
+
+    @Override
     public void visitUnaryMinusExpression(UnaryMinusExpression expression) {
         children.add(expression.getExpression());
     }
@@ -308,19 +316,6 @@ public class ASTChildrenVisitor implements GroovyCodeVisitor {
         visitListOfExpressions(expression.getValues());
     }
 
-    private void visitListOfExpressions(List list) {
-        if (list==null) return;
-        for (Iterator iter = list.iterator(); iter.hasNext(); ) {
-            Expression expression = (Expression) iter.next();
-            if (expression instanceof SpreadExpression) {
-                Expression spread = ((SpreadExpression) expression).getExpression();
-                children.add(spread);
-            } else {
-                children.add(expression);
-            }
-        }
-    }
-    
     @Override
     public void visitCatchStatement(CatchStatement statement) {
     	children.add(statement.getCode());
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/Hello.groovy.indexed b/groovy/groovy.editor/test/unit/data/testfiles/Hello.groovy.indexed
index cb343e3..be7a9b0 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/Hello.groovy.indexed
+++ b/groovy/groovy.editor/test/unit/data/testfiles/Hello.groovy.indexed
@@ -5,6 +5,8 @@ Searchable Keys:
   class : FourthClass
   class-ig : fourthclass
   fqn : foo.FourthClass
+  method : getMetaClass;groovy.lang.MetaClass
+  method : setMetaClass(groovy.lang.MetaClass);void
 
 Not Searchable Keys:
 
@@ -35,10 +37,12 @@ Searchable Keys:
   method : dynamicmethod;void
   method : getField1;int
   method : getGreeting;java.lang.Object
+  method : getMetaClass;groovy.lang.MetaClass
   method : getName;java.lang.Object
   method : main(java.lang.String[]);void;08
   method : setField1(int);void
   method : setGreeting(java.lang.Object);void
+  method : setMetaClass(groovy.lang.MetaClass);void
   method : setName(java.lang.Object);void
 
 Not Searchable Keys:
@@ -51,6 +55,8 @@ Searchable Keys:
   ctor : SecondTestClass;String
   ctor : SecondTestClass;int
   fqn : foo.SecondTestClass
+  method : getMetaClass;groovy.lang.MetaClass
+  method : setMetaClass(groovy.lang.MetaClass);void
 
 Not Searchable Keys:
 
@@ -62,5 +68,7 @@ Searchable Keys:
   ctor : ThirdTestClass;String
   ctor : ThirdTestClass;int
   fqn : foo.ThirdTestClass
+  method : getMetaClass;groovy.lang.MetaClass
+  method : setMetaClass(groovy.lang.MetaClass);void
 
 Not Searchable Keys:
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/access/basicAccessLevels1/BasicAccessLevels1.groovy.testBasicAccessLevels1.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/access/basicAccessLevels1/BasicAccessLevels1.groovy.testBasicAccessLevels1.completion
index 8e9d3c5..d3f7040 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/access/basicAccessLevels1/BasicAccessLevels1.groovy.testBasicAccessLevels1.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/access/basicAccessLevels1/BasicAccessLevels1.groovy.testBasicAccessLevels1.completion
@@ -32,7 +32,7 @@ METHOD     findResult(Closure)                        Object
 METHOD     findResult(Object, Closure)                Object
 METHOD     getAt(String)                              Object
 METHOD     getClass()                      [PUBLIC]   Class<?>
-METHOD     getMetaClass()                             MetaClass
+METHOD     getMetaClass()                  [PUBLIC]   MetaClass
 METHOD     getMetaPropertyValues()                    List
 METHOD     getProperties()                            Map
 METHOD     getProperty(String)             [PUBLIC]   Object
@@ -65,13 +65,14 @@ METHOD     println(PrintWriter)                       void
 METHOD     putAt(String, Object)                      void
 METHOD     respondsTo(String)                         List
 METHOD     respondsTo(String, Object)                 List
-METHOD     setMetaClass(MetaClass)                    void
+METHOD     setMetaClass(MetaClass)         [PUBLIC]   void
 METHOD     setProperty(String, Object)     [PUBLIC]   void
 METHOD     sleep(long)                                void
 METHOD     sleep(long, Closure)                       void
 METHOD     split(Closure)                             Collection
 METHOD     sprintf(String, Object)                    String
 METHOD     sprintf(String, Object)                    String
+METHOD     stream()                                   Stream
 METHOD     tap(Closure)                               Object
 METHOD     test()                          [PUBLIC]   Object
 METHOD     toString()                      [PUBLIC]   String
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/closures/insideClosure1/InsideClosure1.groovy.testInsideClosure1_1.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/closures/insideClosure1/InsideClosure1.groovy.testInsideClosure1_1.completion
index f6165dd..c4f2dd3 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/closures/insideClosure1/InsideClosure1.groovy.testInsideClosure1_1.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/closures/insideClosure1/InsideClosure1.groovy.testInsideClosure1_1.completion
@@ -5,8 +5,8 @@ Code completion result for source line:
 PACKAGE    com                                        null
 PACKAGE    groovy                                     null
 PACKAGE    groovyjarjarantlr                          null
+PACKAGE    groovyjarjarantlr4                         null
 PACKAGE    groovyjarjarasm                            null
-PACKAGE    groovyjarjarcommonscli                     null
 PACKAGE    groovyjarjarpicocli                        null
 PACKAGE    java                                       null
 PACKAGE    javax                                      null
@@ -179,6 +179,7 @@ CLASS      GroovyRuntimeException                     null
 CLASS      GroovyScriptEngine                         null
 CLASS      GroovyShell                                null
 CLASS      GroovySystem                               null
+CLASS      Groovydoc                                  null
 CLASS      HashMap                                    null
 CLASS      HashSet                                    null
 CLASS      Hashtable                                  null
@@ -441,7 +442,15 @@ CLASS      TracingInterceptor                         null
 CLASS      TreeMap                                    null
 CLASS      TreeSet                                    null
 CLASS      Tuple                                      null
+CLASS      Tuple0                                     null
 CLASS      Tuple1                                     null
+CLASS      Tuple10                                    null
+CLASS      Tuple11                                    null
+CLASS      Tuple12                                    null
+CLASS      Tuple13                                    null
+CLASS      Tuple14                                    null
+CLASS      Tuple15                                    null
+CLASS      Tuple16                                    null
 CLASS      Tuple2                                     null
 CLASS      Tuple3                                     null
 CLASS      Tuple4                                     null
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/collections/collections1/Collections1.groovy.testCollections1_3.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/collections/collections1/Collections1.groovy.testCollections1_3.completion
index 3a98426..0de24cd46 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/collections/collections1/Collections1.groovy.testCollections1_3.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/collections/collections1/Collections1.groovy.testCollections1_3.completion
@@ -20,3 +20,5 @@ METHOD     asList()                                   List
 METHOD     asSynchronized()                           List
 METHOD     asType(Class)                              Object
 METHOD     asUnmodifiable()                           List
+METHOD     average()                                  Object
+METHOD     average(Closure)                           Object
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/collections/collections1/Collections1.groovy.testCollections1_5.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/collections/collections1/Collections1.groovy.testCollections1_5.completion
index 784fb17..5d19a81 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/collections/collections1/Collections1.groovy.testCollections1_5.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/collections/collections1/Collections1.groovy.testCollections1_5.completion
@@ -20,6 +20,8 @@ METHOD     asList()                                   List
 METHOD     asSynchronized()                           List
 METHOD     asType(Class)                              Object
 METHOD     asUnmodifiable()                           List
+METHOD     average()                                  Object
+METHOD     average(Closure)                           Object
 METHOD     bufferedIterator()                         BufferedIterator
 METHOD     chop(int[])                                List
 METHOD     clear()                         [PUBLIC]   void
@@ -188,6 +190,10 @@ METHOD     reverse(boolean)                           List
 METHOD     reverseEach(Closure)                       List
 METHOD     set(int, E)                     [PUBLIC]   E
 METHOD     setMetaClass(MetaClass)                    void
+METHOD     shuffle()                                  void
+METHOD     shuffle(Random)                            void
+METHOD     shuffled()                                 List
+METHOD     shuffled(Random)                           List
 METHOD     size()                          [PUBLIC]   int
 METHOD     sleep(long)                                void
 METHOD     sleep(long, Closure)                       void
@@ -203,7 +209,7 @@ METHOD     sprintf(String, Object)                    String
 METHOD     sprintf(String, Object)                    String
 METHOD     step(int)                       [PUBLIC]   List<T>
 METHOD     step(int, Closure)              [PUBLIC]   void
-METHOD     stream()                        [PUBLIC]   Stream<E>
+METHOD     stream()                                   Stream
 METHOD     subList(int, int)               [PUBLIC]   List<E>
 METHOD     subsequences()                             Set
 METHOD     sum()                                      Object
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/flow/collectionLiterals1/CollectionLiterals1.groovy.testCollectionLiterals1_1.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/flow/collectionLiterals1/CollectionLiterals1.groovy.testCollectionLiterals1_1.completion
index 144b69b..965459b 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/flow/collectionLiterals1/CollectionLiterals1.groovy.testCollectionLiterals1_1.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/flow/collectionLiterals1/CollectionLiterals1.groovy.testCollectionLiterals1_1.completion
@@ -20,3 +20,5 @@ METHOD     asList()                                   List
 METHOD     asSynchronized()                           List
 METHOD     asType(Class)                              Object
 METHOD     asUnmodifiable()                           List
+METHOD     average()                                  Object
+METHOD     average(Closure)                           Object
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/flow/collectionLiterals2/CollectionLiterals2.groovy.testCollectionLiterals2_1.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/flow/collectionLiterals2/CollectionLiterals2.groovy.testCollectionLiterals2_1.completion
index 144b69b..965459b 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/flow/collectionLiterals2/CollectionLiterals2.groovy.testCollectionLiterals2_1.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/flow/collectionLiterals2/CollectionLiterals2.groovy.testCollectionLiterals2_1.completion
@@ -20,3 +20,5 @@ METHOD     asList()                                   List
 METHOD     asSynchronized()                           List
 METHOD     asType(Class)                              Object
 METHOD     asUnmodifiable()                           List
+METHOD     average()                                  Object
+METHOD     average(Closure)                           Object
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/flow/completionReturnType1/CompletionReturnType1.groovy.testCompletionReturnType1_1.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/flow/completionReturnType1/CompletionReturnType1.groovy.testCompletionReturnType1_1.completion
index 4fde144..fe8eab7 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/flow/completionReturnType1/CompletionReturnType1.groovy.testCompletionReturnType1_1.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/flow/completionReturnType1/CompletionReturnType1.groovy.testCompletionReturnType1_1.completion
@@ -15,11 +15,13 @@ METHOD     collect()                                  Collection
 METHOD     collect(Closure)                           List
 METHOD     collect(Collection, Closure)               Collection
 METHOD     collectReplacements(Closure)               String
+METHOD     collectReplacements(List)                  String
 METHOD     compareTo(String)               [PUBLIC]   int
 METHOD     compareTo(T)                    [PUBLIC]   int
 METHOD     compareToIgnoreCase(String)     [PUBLIC]   int
 METHOD     concat(String)                  [PUBLIC]   String
 METHOD     contains(CharSequence)          [PUBLIC]   boolean
+METHOD     containsIgnoreCase(CharSequenc             boolean
 METHOD     contentEquals(CharSequence)     [PUBLIC]   boolean
 METHOD     contentEquals(StringBuffer)     [PUBLIC]   boolean
 METHOD     copyValueOf(char[])             [STATIC,   String
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/flow/completionReturnType1/CompletionReturnType1.groovy.testCompletionReturnType1_2.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/flow/completionReturnType1/CompletionReturnType1.groovy.testCompletionReturnType1_2.completion
index 53463bc..8980f2f 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/flow/completionReturnType1/CompletionReturnType1.groovy.testCompletionReturnType1_2.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/flow/completionReturnType1/CompletionReturnType1.groovy.testCompletionReturnType1_2.completion
@@ -15,11 +15,13 @@ METHOD     collect()                                  Collection
 METHOD     collect(Closure)                           List
 METHOD     collect(Collection, Closure)               Collection
 METHOD     collectReplacements(Closure)               String
+METHOD     collectReplacements(List)                  String
 METHOD     compareTo(String)               [PUBLIC]   int
 METHOD     compareTo(T)                    [PUBLIC]   int
 METHOD     compareToIgnoreCase(String)     [PUBLIC]   int
 METHOD     concat(String)                  [PUBLIC]   String
 METHOD     contains(CharSequence)          [PUBLIC]   boolean
+METHOD     containsIgnoreCase(CharSequenc             boolean
 METHOD     contentEquals(CharSequence)     [PUBLIC]   boolean
 METHOD     contentEquals(StringBuffer)     [PUBLIC]   boolean
 METHOD     copyValueOf(char[])             [STATIC,   String
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/flow/completionReturnType1/CompletionReturnType1.groovy.testCompletionReturnType1_3.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/flow/completionReturnType1/CompletionReturnType1.groovy.testCompletionReturnType1_3.completion
index 5fd3523..c250ee9 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/flow/completionReturnType1/CompletionReturnType1.groovy.testCompletionReturnType1_3.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/flow/completionReturnType1/CompletionReturnType1.groovy.testCompletionReturnType1_3.completion
@@ -15,11 +15,13 @@ METHOD     collect()                                  Collection
 METHOD     collect(Closure)                           List
 METHOD     collect(Collection, Closure)               Collection
 METHOD     collectReplacements(Closure)               String
+METHOD     collectReplacements(List)                  String
 METHOD     compareTo(String)               [PUBLIC]   int
 METHOD     compareTo(T)                    [PUBLIC]   int
 METHOD     compareToIgnoreCase(String)     [PUBLIC]   int
 METHOD     concat(String)                  [PUBLIC]   String
 METHOD     contains(CharSequence)          [PUBLIC]   boolean
+METHOD     containsIgnoreCase(CharSequenc             boolean
 METHOD     contentEquals(CharSequence)     [PUBLIC]   boolean
 METHOD     contentEquals(StringBuffer)     [PUBLIC]   boolean
 METHOD     copyValueOf(char[])             [STATIC,   String
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/flow/completionReturnType1/CompletionReturnType1.groovy.testCompletionReturnType1_4.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/flow/completionReturnType1/CompletionReturnType1.groovy.testCompletionReturnType1_4.completion
index 493a7a6..24af460 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/flow/completionReturnType1/CompletionReturnType1.groovy.testCompletionReturnType1_4.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/flow/completionReturnType1/CompletionReturnType1.groovy.testCompletionReturnType1_4.completion
@@ -15,11 +15,13 @@ METHOD     collect()                                  Collection
 METHOD     collect(Closure)                           List
 METHOD     collect(Collection, Closure)               Collection
 METHOD     collectReplacements(Closure)               String
+METHOD     collectReplacements(List)                  String
 METHOD     compareTo(String)               [PUBLIC]   int
 METHOD     compareTo(T)                    [PUBLIC]   int
 METHOD     compareToIgnoreCase(String)     [PUBLIC]   int
 METHOD     concat(String)                  [PUBLIC]   String
 METHOD     contains(CharSequence)          [PUBLIC]   boolean
+METHOD     containsIgnoreCase(CharSequenc             boolean
 METHOD     contentEquals(CharSequence)     [PUBLIC]   boolean
 METHOD     contentEquals(StringBuffer)     [PUBLIC]   boolean
 METHOD     copyValueOf(char[])             [STATIC,   String
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/flow/completionReturnType1/CompletionReturnType1.groovy.testCompletionReturnType1_5.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/flow/completionReturnType1/CompletionReturnType1.groovy.testCompletionReturnType1_5.completion
index 492308d..1cd44be 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/flow/completionReturnType1/CompletionReturnType1.groovy.testCompletionReturnType1_5.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/flow/completionReturnType1/CompletionReturnType1.groovy.testCompletionReturnType1_5.completion
@@ -15,11 +15,13 @@ METHOD     collect()                                  Collection
 METHOD     collect(Closure)                           List
 METHOD     collect(Collection, Closure)               Collection
 METHOD     collectReplacements(Closure)               String
+METHOD     collectReplacements(List)                  String
 METHOD     compareTo(String)               [PUBLIC]   int
 METHOD     compareTo(T)                    [PUBLIC]   int
 METHOD     compareToIgnoreCase(String)     [PUBLIC]   int
 METHOD     concat(String)                  [PUBLIC]   String
 METHOD     contains(CharSequence)          [PUBLIC]   boolean
+METHOD     containsIgnoreCase(CharSequenc             boolean
 METHOD     contentEquals(CharSequence)     [PUBLIC]   boolean
 METHOD     contentEquals(StringBuffer)     [PUBLIC]   boolean
 METHOD     copyValueOf(char[])             [STATIC,   String
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/flow/completionReturnType1/CompletionReturnType1.groovy.testCompletionReturnType1_6.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/flow/completionReturnType1/CompletionReturnType1.groovy.testCompletionReturnType1_6.completion
index b471cd1..dfab82e 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/flow/completionReturnType1/CompletionReturnType1.groovy.testCompletionReturnType1_6.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/flow/completionReturnType1/CompletionReturnType1.groovy.testCompletionReturnType1_6.completion
@@ -15,11 +15,13 @@ METHOD     collect()                                  Collection
 METHOD     collect(Closure)                           List
 METHOD     collect(Collection, Closure)               Collection
 METHOD     collectReplacements(Closure)               String
+METHOD     collectReplacements(List)                  String
 METHOD     compareTo(String)               [PUBLIC]   int
 METHOD     compareTo(T)                    [PUBLIC]   int
 METHOD     compareToIgnoreCase(String)     [PUBLIC]   int
 METHOD     concat(String)                  [PUBLIC]   String
 METHOD     contains(CharSequence)          [PUBLIC]   boolean
+METHOD     containsIgnoreCase(CharSequenc             boolean
 METHOD     contentEquals(CharSequence)     [PUBLIC]   boolean
 METHOD     contentEquals(StringBuffer)     [PUBLIC]   boolean
 METHOD     copyValueOf(char[])             [STATIC,   String
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/flow/completionReturnType1/CompletionReturnType1.groovy.testCompletionReturnType1_7.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/flow/completionReturnType1/CompletionReturnType1.groovy.testCompletionReturnType1_7.completion
index b210308..3910625 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/flow/completionReturnType1/CompletionReturnType1.groovy.testCompletionReturnType1_7.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/flow/completionReturnType1/CompletionReturnType1.groovy.testCompletionReturnType1_7.completion
@@ -15,11 +15,13 @@ METHOD     collect()                                  Collection
 METHOD     collect(Closure)                           List
 METHOD     collect(Collection, Closure)               Collection
 METHOD     collectReplacements(Closure)               String
+METHOD     collectReplacements(List)                  String
 METHOD     compareTo(String)               [PUBLIC]   int
 METHOD     compareTo(T)                    [PUBLIC]   int
 METHOD     compareToIgnoreCase(String)     [PUBLIC]   int
 METHOD     concat(String)                  [PUBLIC]   String
 METHOD     contains(CharSequence)          [PUBLIC]   boolean
+METHOD     containsIgnoreCase(CharSequenc             boolean
 METHOD     contentEquals(CharSequence)     [PUBLIC]   boolean
 METHOD     contentEquals(StringBuffer)     [PUBLIC]   boolean
 METHOD     copyValueOf(char[])             [STATIC,   String
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/inference/Inference1.groovy.testInference1.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/inference/Inference1.groovy.testInference1.completion
index b83ea06..a9cf23a 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/inference/Inference1.groovy.testInference1.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/inference/Inference1.groovy.testInference1.completion
@@ -17,3 +17,5 @@ METHOD     asList()                                   List
 METHOD     asSynchronized()                           Set
 METHOD     asType(Class)                              Object
 METHOD     asUnmodifiable()                           Set
+METHOD     average()                                  Object
+METHOD     average(Closure)                           Object
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/inference/Inference1.groovy.testInference2.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/inference/Inference1.groovy.testInference2.completion
index a3f7356..3e38b90 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/inference/Inference1.groovy.testInference2.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/inference/Inference1.groovy.testInference2.completion
@@ -3,6 +3,14 @@ text.t|
 (QueryType=COMPLETION, prefixSearch=true, caseSensitive=true)
 ------------------------------------
 METHOD     take(int)                                  String
+METHOD     takeAfter(CharSequence)                    String
+METHOD     takeBefore(CharSequence)                   CharSequence
+METHOD     takeBefore(String)                         String
+METHOD     takeBetween(CharSequence)                  String
+METHOD     takeBetween(CharSequence,  int             String
+METHOD     takeBetween(CharSequence, Char             String
+METHOD     takeBetween(CharSequence, Char             String
+METHOD     takeRight(int)                             String
 METHOD     takeWhile(Closure)                         String
 METHOD     tap(Closure)                               Object
 METHOD     toBigDecimal()                             BigDecimal
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/interface/interfaceCompletion1/InterfaceCompletion1.groovy.testInterfaceCompletion1_1.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/interface/interfaceCompletion1/InterfaceCompletion1.groovy.testInterfaceCompletion1_1.completion
index 306604e..86cc691 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/interface/interfaceCompletion1/InterfaceCompletion1.groovy.testInterfaceCompletion1_1.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/interface/interfaceCompletion1/InterfaceCompletion1.groovy.testInterfaceCompletion1_1.completion
@@ -5,8 +5,8 @@ class SpecialGroovyClass implements |Runnable, Serializable {
 PACKAGE    com                                        null
 PACKAGE    groovy                                     null
 PACKAGE    groovyjarjarantlr                          null
+PACKAGE    groovyjarjarantlr4                         null
 PACKAGE    groovyjarjarasm                            null
-PACKAGE    groovyjarjarcommonscli                     null
 PACKAGE    groovyjarjarpicocli                        null
 PACKAGE    java                                       null
 PACKAGE    javax                                      null
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionForLiteral1/CompletionForLiteral1.groovy.testCompletionForLiteral1_3.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionForLiteral1/CompletionForLiteral1.groovy.testCompletionForLiteral1_3.completion
index 4a4eb43..1b53022 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionForLiteral1/CompletionForLiteral1.groovy.testCompletionForLiteral1_3.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionForLiteral1/CompletionForLiteral1.groovy.testCompletionForLiteral1_3.completion
@@ -15,11 +15,13 @@ METHOD     collect()                                  Collection
 METHOD     collect(Closure)                           List
 METHOD     collect(Collection, Closure)               Collection
 METHOD     collectReplacements(Closure)               String
+METHOD     collectReplacements(List)                  String
 METHOD     compareTo(String)               [PUBLIC]   int
 METHOD     compareTo(T)                    [PUBLIC]   int
 METHOD     compareToIgnoreCase(String)     [PUBLIC]   int
 METHOD     concat(String)                  [PUBLIC]   String
 METHOD     contains(CharSequence)          [PUBLIC]   boolean
+METHOD     containsIgnoreCase(CharSequenc             boolean
 METHOD     contentEquals(CharSequence)     [PUBLIC]   boolean
 METHOD     contentEquals(StringBuffer)     [PUBLIC]   boolean
 METHOD     copyValueOf(char[])             [STATIC,   String
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionGeneratedAccessors1/CompletionGeneratedAccessors1.groovy.testCompletionGeneratedAccessors1_1.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionGeneratedAccessors1/CompletionGeneratedAccessors1.groovy.testCompletionGeneratedAccessors1_1.completion
index bc756c7..816dcf3 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionGeneratedAccessors1/CompletionGeneratedAccessors1.groovy.testCompletionGeneratedAccessors1_1.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionGeneratedAccessors1/CompletionGeneratedAccessors1.groovy.testCompletionGeneratedAccessors1_1.completion
@@ -5,7 +5,7 @@ new Test().get|
 METHOD     getAge()                        [PUBLIC]   Object
 METHOD     getAt(String)                              Object
 METHOD     getClass()                      [PUBLIC]   Class<?>
-METHOD     getMetaClass()                             MetaClass
+METHOD     getMetaClass()                  [PUBLIC]   MetaClass
 METHOD     getMetaPropertyValues()                    List
 METHOD     getName()                       [PUBLIC]   String
 METHOD     getOkDef()                      [PUBLIC]   boolean
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionGeneratedAccessors1/CompletionGeneratedAccessors1.groovy.testCompletionGeneratedAccessors1_2.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionGeneratedAccessors1/CompletionGeneratedAccessors1.groovy.testCompletionGeneratedAccessors1_2.completion
index c4f1b54..ada963d 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionGeneratedAccessors1/CompletionGeneratedAccessors1.groovy.testCompletionGeneratedAccessors1_2.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionGeneratedAccessors1/CompletionGeneratedAccessors1.groovy.testCompletionGeneratedAccessors1_2.completion
@@ -3,7 +3,7 @@ new Test().set|
 (QueryType=COMPLETION, prefixSearch=true, caseSensitive=true)
 ------------------------------------
 METHOD     setAge(Object)                  [PUBLIC]   void
-METHOD     setMetaClass(MetaClass)                    void
+METHOD     setMetaClass(MetaClass)         [PUBLIC]   void
 METHOD     setName(String)                 [PUBLIC]   void
 METHOD     setOkDef(boolean)               [PUBLIC]   void
 METHOD     setProperty(String, Object)     [PUBLIC]   void
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionGroovyClass1/CompletionGroovyClass1.groovy.testCompletionGroovyClass1_1.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionGroovyClass1/CompletionGroovyClass1.groovy.testCompletionGroovyClass1_1.completion
index 068beea..0a1fa4f 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionGroovyClass1/CompletionGroovyClass1.groovy.testCompletionGroovyClass1_1.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionGroovyClass1/CompletionGroovyClass1.groovy.testCompletionGroovyClass1_1.completion
@@ -30,7 +30,7 @@ METHOD     findResult(Closure)                        Object
 METHOD     findResult(Object, Closure)                Object
 METHOD     getAt(String)                              Object
 METHOD     getClass()                      [PUBLIC]   Class<?>
-METHOD     getMetaClass()                             MetaClass
+METHOD     getMetaClass()                  [PUBLIC]   MetaClass
 METHOD     getMetaPropertyValues()                    List
 METHOD     getProperties()                            Map
 METHOD     getProperty(String)             [PUBLIC]   Object
@@ -60,7 +60,7 @@ METHOD     println(PrintWriter)                       void
 METHOD     putAt(String, Object)                      void
 METHOD     respondsTo(String)                         List
 METHOD     respondsTo(String, Object)                 List
-METHOD     setMetaClass(MetaClass)                    void
+METHOD     setMetaClass(MetaClass)         [PUBLIC]   void
 METHOD     setProperty(String, Object)     [PUBLIC]   void
 METHOD     setX(String)                    [PUBLIC]   void
 METHOD     sleep(long)                                void
@@ -68,6 +68,7 @@ METHOD     sleep(long, Closure)                       void
 METHOD     split(Closure)                             Collection
 METHOD     sprintf(String, Object)                    String
 METHOD     sprintf(String, Object)                    String
+METHOD     stream()                                   Stream
 METHOD     tap(Closure)                               Object
 METHOD     toString()                      [PUBLIC]   String
 METHOD     use(Class, Closure)                        Object
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionGroovySuper1/CompletionGroovySuper1.groovy.testCompletionGroovySuper1_1.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionGroovySuper1/CompletionGroovySuper1.groovy.testCompletionGroovySuper1_1.completion
index aefe1fe..5dffa4e 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionGroovySuper1/CompletionGroovySuper1.groovy.testCompletionGroovySuper1_1.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionGroovySuper1/CompletionGroovySuper1.groovy.testCompletionGroovySuper1_1.completion
@@ -66,6 +66,7 @@ METHOD     sleep(long, Closure)                       void
 METHOD     split(Closure)                             Collection
 METHOD     sprintf(String, Object)                    String
 METHOD     sprintf(String, Object)                    String
+METHOD     stream()                                   Stream
 METHOD     tap(Closure)                               Object
 METHOD     toString()                      [PUBLIC]   String
 METHOD     use(Class, Closure)                        Object
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionGroovyThis1/CompletionGroovyThis1.groovy.testCompletionGroovyThis1_1.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionGroovyThis1/CompletionGroovyThis1.groovy.testCompletionGroovyThis1_1.completion
index 864dfef..ee07533 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionGroovyThis1/CompletionGroovyThis1.groovy.testCompletionGroovyThis1_1.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionGroovyThis1/CompletionGroovyThis1.groovy.testCompletionGroovyThis1_1.completion
@@ -4,7 +4,7 @@ this.get|
 ------------------------------------
 METHOD     getAt(String)                              Object
 METHOD     getClass()                      [PUBLIC]   Class<?>
-METHOD     getMetaClass()                             MetaClass
+METHOD     getMetaClass()                  [PUBLIC]   MetaClass
 METHOD     getMetaPropertyValues()                    List
 METHOD     getProperties()                            Map
 METHOD     getProperty(String)             [PUBLIC]   Object
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionInsideFor1/CompletionInsideFor1.groovy.testCompletionInsideFor1_2.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionInsideFor1/CompletionInsideFor1.groovy.testCompletionInsideFor1_2.completion
index 2eee575..f750089 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionInsideFor1/CompletionInsideFor1.groovy.testCompletionInsideFor1_2.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionInsideFor1/CompletionInsideFor1.groovy.testCompletionInsideFor1_2.completion
@@ -16,7 +16,7 @@ METHOD     collect(Closure)                           List
 METHOD     collect(Collection, Closure)               Collection
 METHOD     collectEntries(Closure)                    Map
 METHOD     collectEntries(Map, Closure)               Map
-METHOD     collectMany(Closure)                       Collection
+METHOD     collectMany(Closure)                       List
 METHOD     collectMany(Collection, Closur             Collection
 METHOD     compute(K, BiFunction<? super   [PUBLIC]   V
 METHOD     computeIfAbsent(K, Function<?   [PUBLIC]   V
@@ -122,6 +122,7 @@ METHOD     split(Closure)                             Collection
 METHOD     spread()                                   SpreadMap
 METHOD     sprintf(String, Object)                    String
 METHOD     sprintf(String, Object)                    String
+METHOD     stream()                                   Stream
 METHOD     subMap(Collection)                         Map
 METHOD     subMap(Object[])                           Map
 METHOD     take(int)                                  Map
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionNoPrefixString1/CompletionNoPrefixString1.groovy.testCompletionNoPrefixString1.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionNoPrefixString1/CompletionNoPrefixString1.groovy.testCompletionNoPrefixString1.completion
index 9f6ab19..ef5b7a2 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionNoPrefixString1/CompletionNoPrefixString1.groovy.testCompletionNoPrefixString1.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionNoPrefixString1/CompletionNoPrefixString1.groovy.testCompletionNoPrefixString1.completion
@@ -21,11 +21,13 @@ METHOD     collect()                                  Collection
 METHOD     collect(Closure)                           List
 METHOD     collect(Collection, Closure)               Collection
 METHOD     collectReplacements(Closure)               String
+METHOD     collectReplacements(List)                  String
 METHOD     compareTo(String)               [PUBLIC]   int
 METHOD     compareTo(T)                    [PUBLIC]   int
 METHOD     compareToIgnoreCase(String)     [PUBLIC]   int
 METHOD     concat(String)                  [PUBLIC]   String
 METHOD     contains(CharSequence)          [PUBLIC]   boolean
+METHOD     containsIgnoreCase(CharSequenc             boolean
 METHOD     contentEquals(CharSequence)     [PUBLIC]   boolean
 METHOD     contentEquals(StringBuffer)     [PUBLIC]   boolean
 METHOD     copyValueOf(char[])             [STATIC,   String
@@ -37,6 +39,7 @@ METHOD     decodeHex()                                byte[]
 METHOD     denormalize()                              String
 METHOD     digest(String)                             String
 METHOD     drop(int)                                  String
+METHOD     dropRight(int)                             String
 METHOD     dropWhile(Closure)                         String
 METHOD     dump()                                     String
 METHOD     each(Closure)                              Object
@@ -48,6 +51,7 @@ METHOD     eachMatch(String, Closure)                 String
 METHOD     eachWithIndex(Closure)                     Object
 METHOD     endsWith(String)                [PUBLIC]   boolean
 METHOD     endsWithAny(CharSequence[])                boolean
+METHOD     endsWithIgnoreCase(CharSequenc             boolean
 METHOD     equals(Object)                  [PUBLIC]   boolean
 METHOD     equalsIgnoreCase(String)        [PUBLIC]   boolean
 METHOD     every()                                    boolean
@@ -196,7 +200,10 @@ METHOD     sprintf(String, Object)                    String
 METHOD     startsWith(String)              [PUBLIC]   boolean
 METHOD     startsWith(String, int)         [PUBLIC]   boolean
 METHOD     startsWithAny(CharSequence[])              boolean
+METHOD     startsWithIgnoreCase(CharSeque             boolean
+METHOD     stream()                                   Stream
 METHOD     stripIndent()                              String
+METHOD     stripIndent(boolean)                       String
 METHOD     stripIndent(int)                           String
 METHOD     stripMargin()                              String
 METHOD     stripMargin(CharSequence)                  String
@@ -205,6 +212,14 @@ METHOD     subSequence(int, int)           [PUBLIC]   CharSequence
 METHOD     substring(int)                  [PUBLIC]   String
 METHOD     substring(int, int)             [PUBLIC]   String
 METHOD     take(int)                                  String
+METHOD     takeAfter(CharSequence)                    String
+METHOD     takeBefore(CharSequence)                   CharSequence
+METHOD     takeBefore(String)                         String
+METHOD     takeBetween(CharSequence)                  String
+METHOD     takeBetween(CharSequence,  int             String
+METHOD     takeBetween(CharSequence, Char             String
+METHOD     takeBetween(CharSequence, Char             String
+METHOD     takeRight(int)                             String
 METHOD     takeWhile(Closure)                         String
 METHOD     tap(Closure)                               Object
 METHOD     toBigDecimal()                             BigDecimal
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionNoPrefixString2/CompletionNoPrefixString2.groovy.testCompletionNoPrefixString2.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionNoPrefixString2/CompletionNoPrefixString2.groovy.testCompletionNoPrefixString2.completion
index 2e0a500..47b7366 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionNoPrefixString2/CompletionNoPrefixString2.groovy.testCompletionNoPrefixString2.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionNoPrefixString2/CompletionNoPrefixString2.groovy.testCompletionNoPrefixString2.completion
@@ -21,11 +21,13 @@ METHOD     collect()                                  Collection
 METHOD     collect(Closure)                           List
 METHOD     collect(Collection, Closure)               Collection
 METHOD     collectReplacements(Closure)               String
+METHOD     collectReplacements(List)                  String
 METHOD     compareTo(String)               [PUBLIC]   int
 METHOD     compareTo(T)                    [PUBLIC]   int
 METHOD     compareToIgnoreCase(String)     [PUBLIC]   int
 METHOD     concat(String)                  [PUBLIC]   String
 METHOD     contains(CharSequence)          [PUBLIC]   boolean
+METHOD     containsIgnoreCase(CharSequenc             boolean
 METHOD     contentEquals(CharSequence)     [PUBLIC]   boolean
 METHOD     contentEquals(StringBuffer)     [PUBLIC]   boolean
 METHOD     copyValueOf(char[])             [STATIC,   String
@@ -37,6 +39,7 @@ METHOD     decodeHex()                                byte[]
 METHOD     denormalize()                              String
 METHOD     digest(String)                             String
 METHOD     drop(int)                                  String
+METHOD     dropRight(int)                             String
 METHOD     dropWhile(Closure)                         String
 METHOD     dump()                                     String
 METHOD     each(Closure)                              Object
@@ -48,6 +51,7 @@ METHOD     eachMatch(String, Closure)                 String
 METHOD     eachWithIndex(Closure)                     Object
 METHOD     endsWith(String)                [PUBLIC]   boolean
 METHOD     endsWithAny(CharSequence[])                boolean
+METHOD     endsWithIgnoreCase(CharSequenc             boolean
 METHOD     equals(Object)                  [PUBLIC]   boolean
 METHOD     equalsIgnoreCase(String)        [PUBLIC]   boolean
 METHOD     every()                                    boolean
@@ -196,7 +200,10 @@ METHOD     sprintf(String, Object)                    String
 METHOD     startsWith(String)              [PUBLIC]   boolean
 METHOD     startsWith(String, int)         [PUBLIC]   boolean
 METHOD     startsWithAny(CharSequence[])              boolean
+METHOD     startsWithIgnoreCase(CharSeque             boolean
+METHOD     stream()                                   Stream
 METHOD     stripIndent()                              String
+METHOD     stripIndent(boolean)                       String
 METHOD     stripIndent(int)                           String
 METHOD     stripMargin()                              String
 METHOD     stripMargin(CharSequence)                  String
@@ -205,6 +212,14 @@ METHOD     subSequence(int, int)           [PUBLIC]   CharSequence
 METHOD     substring(int)                  [PUBLIC]   String
 METHOD     substring(int, int)             [PUBLIC]   String
 METHOD     take(int)                                  String
+METHOD     takeAfter(CharSequence)                    String
+METHOD     takeBefore(CharSequence)                   CharSequence
+METHOD     takeBefore(String)                         String
+METHOD     takeBetween(CharSequence)                  String
+METHOD     takeBetween(CharSequence,  int             String
+METHOD     takeBetween(CharSequence, Char             String
+METHOD     takeBetween(CharSequence, Char             String
+METHOD     takeRight(int)                             String
 METHOD     takeWhile(Closure)                         String
 METHOD     tap(Closure)                               Object
 METHOD     toBigDecimal()                             BigDecimal
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/method/methods1/Methods1.groovy.testMethods1_4.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/method/methods1/Methods1.groovy.testMethods1_4.completion
index a18d3ec..8fd8213 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/method/methods1/Methods1.groovy.testMethods1_4.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/method/methods1/Methods1.groovy.testMethods1_4.completion
@@ -109,6 +109,7 @@ METHOD     splitEachLine(String, Closure)             Object
 METHOD     splitEachLine(String, String,              Object
 METHOD     sprintf(String, Object)                    String
 METHOD     sprintf(String, Object)                    String
+METHOD     stream()                                   Stream
 METHOD     tap(Closure)                               Object
 METHOD     toExternalForm()                [PUBLIC]   String
 METHOD     toString()                      [PUBLIC]   String
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/method/methods2/Methods2.groovy.testMethods2_1.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/method/methods2/Methods2.groovy.testMethods2_1.completion
index 55b57ec..d922c1e 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/method/methods2/Methods2.groovy.testMethods2_1.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/method/methods2/Methods2.groovy.testMethods2_1.completion
@@ -104,6 +104,7 @@ METHOD     split(Closure)                             Collection
 METHOD     sprintf(String, Object)                    String
 METHOD     sprintf(String, Object)                    String
 METHOD     step(Number, Number, Closure)              void
+METHOD     stream()                                   Stream
 METHOD     tap(Closure)                               Object
 METHOD     times(Closure)                             void
 METHOD     toBigDecimal()                             BigDecimal
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/namedparams/emptyConstructor/EmptyConstructor.groovy.testEmptyConstructor.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/namedparams/emptyConstructor/EmptyConstructor.groovy.testEmptyConstructor.completion
index 87d629b..5be5b16 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/namedparams/emptyConstructor/EmptyConstructor.groovy.testEmptyConstructor.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/namedparams/emptyConstructor/EmptyConstructor.groovy.testEmptyConstructor.completion
@@ -10,8 +10,8 @@ PARAMETER  e: Object                                  null
 PACKAGE    com                                        null
 PACKAGE    groovy                                     null
 PACKAGE    groovyjarjarantlr                          null
+PACKAGE    groovyjarjarantlr4                         null
 PACKAGE    groovyjarjarasm                            null
-PACKAGE    groovyjarjarcommonscli                     null
 PACKAGE    groovyjarjarpicocli                        null
 PACKAGE    java                                       null
 PACKAGE    javax                                      null
@@ -186,6 +186,7 @@ CLASS      GroovyRuntimeException                     null
 CLASS      GroovyScriptEngine                         null
 CLASS      GroovyShell                                null
 CLASS      GroovySystem                               null
+CLASS      Groovydoc                                  null
 CLASS      HashMap                                    null
 CLASS      HashSet                                    null
 CLASS      Hashtable                                  null
@@ -447,7 +448,15 @@ CLASS      TracingInterceptor                         null
 CLASS      TreeMap                                    null
 CLASS      TreeSet                                    null
 CLASS      Tuple                                      null
+CLASS      Tuple0                                     null
 CLASS      Tuple1                                     null
+CLASS      Tuple10                                    null
+CLASS      Tuple11                                    null
+CLASS      Tuple12                                    null
+CLASS      Tuple13                                    null
+CLASS      Tuple14                                    null
+CLASS      Tuple15                                    null
+CLASS      Tuple16                                    null
 CLASS      Tuple2                                     null
 CLASS      Tuple3                                     null
 CLASS      Tuple4                                     null
@@ -489,4 +498,4 @@ CLASS      WriteAbortedException                      null
 CLASS      Writer                                     null
 FIELD      binding                         [PUBLIC]   Binding
 FIELD      class                           [PUBLIC]   Class
-FIELD      defaultMetaClass                [PRIVATE]  MetaClass
+FIELD      defaultMetaClass                [PRIVATE]  MetaClass
\ No newline at end of file
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/namedparams/fewParamsConstructor/FewParamsConstructor.groovy.testFewParamsConstructor_AfterComma.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/namedparams/fewParamsConstructor/FewParamsConstructor.groovy.testFewParamsConstructor_AfterComma.completion
index 374a9d8..027abe5 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/namedparams/fewParamsConstructor/FewParamsConstructor.groovy.testFewParamsConstructor_AfterComma.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/namedparams/fewParamsConstructor/FewParamsConstructor.groovy.testFewParamsConstructor_AfterComma.completion
@@ -173,6 +173,7 @@ CLASS      GroovyRuntimeException                     null
 CLASS      GroovyScriptEngine                         null
 CLASS      GroovyShell                                null
 CLASS      GroovySystem                               null
+CLASS      Groovydoc                                  null
 CLASS      HashMap                                    null
 CLASS      HashSet                                    null
 CLASS      Hashtable                                  null
@@ -434,7 +435,15 @@ CLASS      TracingInterceptor                         null
 CLASS      TreeMap                                    null
 CLASS      TreeSet                                    null
 CLASS      Tuple                                      null
+CLASS      Tuple0                                     null
 CLASS      Tuple1                                     null
+CLASS      Tuple10                                    null
+CLASS      Tuple11                                    null
+CLASS      Tuple12                                    null
+CLASS      Tuple13                                    null
+CLASS      Tuple14                                    null
+CLASS      Tuple15                                    null
+CLASS      Tuple16                                    null
 CLASS      Tuple2                                     null
 CLASS      Tuple3                                     null
 CLASS      Tuple4                                     null
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/namedparams/fewParamsConstructor/FewParamsConstructor.groovy.testFewParamsConstructor_AfterLeftParenthesis.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/namedparams/fewParamsConstructor/FewParamsConstructor.groovy.testFewParamsConstructor_AfterLeftParenthesis.completion
index 7de7118..bfc8159 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/namedparams/fewParamsConstructor/FewParamsConstructor.groovy.testFewParamsConstructor_AfterLeftParenthesis.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/namedparams/fewParamsConstructor/FewParamsConstructor.groovy.testFewParamsConstructor_AfterLeftParenthesis.completion
@@ -173,6 +173,7 @@ CLASS      GroovyRuntimeException                     null
 CLASS      GroovyScriptEngine                         null
 CLASS      GroovyShell                                null
 CLASS      GroovySystem                               null
+CLASS      Groovydoc                                  null
 CLASS      HashMap                                    null
 CLASS      HashSet                                    null
 CLASS      Hashtable                                  null
@@ -434,7 +435,15 @@ CLASS      TracingInterceptor                         null
 CLASS      TreeMap                                    null
 CLASS      TreeSet                                    null
 CLASS      Tuple                                      null
+CLASS      Tuple0                                     null
 CLASS      Tuple1                                     null
+CLASS      Tuple10                                    null
+CLASS      Tuple11                                    null
+CLASS      Tuple12                                    null
+CLASS      Tuple13                                    null
+CLASS      Tuple14                                    null
+CLASS      Tuple15                                    null
+CLASS      Tuple16                                    null
 CLASS      Tuple2                                     null
 CLASS      Tuple3                                     null
 CLASS      Tuple4                                     null
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/namedparams/fewParamsConstructor/FewParamsConstructor.groovy.testFewParamsConstructor_InsideNamedParameter2.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/namedparams/fewParamsConstructor/FewParamsConstructor.groovy.testFewParamsConstructor_InsideNamedParameter2.completion
index 63d22c3..266b1d9 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/namedparams/fewParamsConstructor/FewParamsConstructor.groovy.testFewParamsConstructor_InsideNamedParameter2.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/namedparams/fewParamsConstructor/FewParamsConstructor.groovy.testFewParamsConstructor_InsideNamedParameter2.completion
@@ -170,6 +170,7 @@ CLASS      GroovyRuntimeException                     null
 CLASS      GroovyScriptEngine                         null
 CLASS      GroovyShell                                null
 CLASS      GroovySystem                               null
+CLASS      Groovydoc                                  null
 CLASS      HashMap                                    null
 CLASS      HashSet                                    null
 CLASS      Hashtable                                  null
@@ -431,7 +432,15 @@ CLASS      TracingInterceptor                         null
 CLASS      TreeMap                                    null
 CLASS      TreeSet                                    null
 CLASS      Tuple                                      null
+CLASS      Tuple0                                     null
 CLASS      Tuple1                                     null
+CLASS      Tuple10                                    null
+CLASS      Tuple11                                    null
+CLASS      Tuple12                                    null
+CLASS      Tuple13                                    null
+CLASS      Tuple14                                    null
+CLASS      Tuple15                                    null
+CLASS      Tuple16                                    null
 CLASS      Tuple2                                     null
 CLASS      Tuple3                                     null
 CLASS      Tuple4                                     null
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/operators/elvisOperator1/ElvisOperator1.groovy.testElvisOperator1_1.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/operators/elvisOperator1/ElvisOperator1.groovy.testElvisOperator1_1.completion
index 48598b0..e8d59b2 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/operators/elvisOperator1/ElvisOperator1.groovy.testElvisOperator1_1.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/operators/elvisOperator1/ElvisOperator1.groovy.testElvisOperator1_1.completion
@@ -11,6 +11,7 @@ METHOD     eachMatch(String, Closure)                 String
 METHOD     eachWithIndex(Closure)                     Object
 METHOD     endsWith(String)                [PUBLIC]   boolean
 METHOD     endsWithAny(CharSequence[])                boolean
+METHOD     endsWithIgnoreCase(CharSequenc             boolean
 METHOD     equals(Object)                  [PUBLIC]   boolean
 METHOD     equalsIgnoreCase(String)        [PUBLIC]   boolean
 METHOD     every()                                    boolean
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/operators/elvisOperator2/ElvisOperator2.groovy.testElvisOperator2_1.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/operators/elvisOperator2/ElvisOperator2.groovy.testElvisOperator2_1.completion
index e6a0458..bb681b6 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/operators/elvisOperator2/ElvisOperator2.groovy.testElvisOperator2_1.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/operators/elvisOperator2/ElvisOperator2.groovy.testElvisOperator2_1.completion
@@ -11,6 +11,7 @@ METHOD     eachMatch(String, Closure)                 String
 METHOD     eachWithIndex(Closure)                     Object
 METHOD     endsWith(String)                [PUBLIC]   boolean
 METHOD     endsWithAny(CharSequence[])                boolean
+METHOD     endsWithIgnoreCase(CharSequenc             boolean
 METHOD     equals(Object)                  [PUBLIC]   boolean
 METHOD     equalsIgnoreCase(String)        [PUBLIC]   boolean
 METHOD     every()                                    boolean
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/operators/elvisOperator3/ElvisOperator3.groovy.testElvisOperator3_1.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/operators/elvisOperator3/ElvisOperator3.groovy.testElvisOperator3_1.completion
index 6bacceb..b785a40 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/operators/elvisOperator3/ElvisOperator3.groovy.testElvisOperator3_1.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/operators/elvisOperator3/ElvisOperator3.groovy.testElvisOperator3_1.completion
@@ -11,6 +11,7 @@ METHOD     eachMatch(String, Closure)                 String
 METHOD     eachWithIndex(Closure)                     Object
 METHOD     endsWith(String)                [PUBLIC]   boolean
 METHOD     endsWithAny(CharSequence[])                boolean
+METHOD     endsWithIgnoreCase(CharSequenc             boolean
 METHOD     equals(Object)                  [PUBLIC]   boolean
 METHOD     equalsIgnoreCase(String)        [PUBLIC]   boolean
 METHOD     every()                                    boolean
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/operators/spreadOperator1/SpreadOperator1.groovy.testSpreadOperator1_stringArray_all.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/operators/spreadOperator1/SpreadOperator1.groovy.testSpreadOperator1_stringArray_all.completion
index 472b2a9..9bdce2c 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/operators/spreadOperator1/SpreadOperator1.groovy.testSpreadOperator1_stringArray_all.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/operators/spreadOperator1/SpreadOperator1.groovy.testSpreadOperator1_stringArray_all.completion
@@ -21,11 +21,13 @@ METHOD     collect()                                  Collection
 METHOD     collect(Closure)                           List
 METHOD     collect(Collection, Closure)               Collection
 METHOD     collectReplacements(Closure)               String
+METHOD     collectReplacements(List)                  String
 METHOD     compareTo(String)               [PUBLIC]   int
 METHOD     compareTo(T)                    [PUBLIC]   int
 METHOD     compareToIgnoreCase(String)     [PUBLIC]   int
 METHOD     concat(String)                  [PUBLIC]   String
 METHOD     contains(CharSequence)          [PUBLIC]   boolean
+METHOD     containsIgnoreCase(CharSequenc             boolean
 METHOD     contentEquals(CharSequence)     [PUBLIC]   boolean
 METHOD     contentEquals(StringBuffer)     [PUBLIC]   boolean
 METHOD     copyValueOf(char[])             [STATIC,   String
@@ -37,6 +39,7 @@ METHOD     decodeHex()                                byte[]
 METHOD     denormalize()                              String
 METHOD     digest(String)                             String
 METHOD     drop(int)                                  String
+METHOD     dropRight(int)                             String
 METHOD     dropWhile(Closure)                         String
 METHOD     dump()                                     String
 METHOD     each(Closure)                              Object
@@ -48,6 +51,7 @@ METHOD     eachMatch(String, Closure)                 String
 METHOD     eachWithIndex(Closure)                     Object
 METHOD     endsWith(String)                [PUBLIC]   boolean
 METHOD     endsWithAny(CharSequence[])                boolean
+METHOD     endsWithIgnoreCase(CharSequenc             boolean
 METHOD     equals(Object)                  [PUBLIC]   boolean
 METHOD     equalsIgnoreCase(String)        [PUBLIC]   boolean
 METHOD     every()                                    boolean
@@ -196,7 +200,10 @@ METHOD     sprintf(String, Object)                    String
 METHOD     startsWith(String)              [PUBLIC]   boolean
 METHOD     startsWith(String, int)         [PUBLIC]   boolean
 METHOD     startsWithAny(CharSequence[])              boolean
+METHOD     startsWithIgnoreCase(CharSeque             boolean
+METHOD     stream()                                   Stream
 METHOD     stripIndent()                              String
+METHOD     stripIndent(boolean)                       String
 METHOD     stripIndent(int)                           String
 METHOD     stripMargin()                              String
 METHOD     stripMargin(CharSequence)                  String
@@ -205,6 +212,14 @@ METHOD     subSequence(int, int)           [PUBLIC]   CharSequence
 METHOD     substring(int)                  [PUBLIC]   String
 METHOD     substring(int, int)             [PUBLIC]   String
 METHOD     take(int)                                  String
+METHOD     takeAfter(CharSequence)                    String
+METHOD     takeBefore(CharSequence)                   CharSequence
+METHOD     takeBefore(String)                         String
+METHOD     takeBetween(CharSequence)                  String
+METHOD     takeBetween(CharSequence,  int             String
+METHOD     takeBetween(CharSequence, Char             String
+METHOD     takeBetween(CharSequence, Char             String
+METHOD     takeRight(int)                             String
 METHOD     takeWhile(Closure)                         String
 METHOD     tap(Closure)                               Object
 METHOD     toBigDecimal()                             BigDecimal
@@ -256,4 +271,4 @@ METHOD     withTraits(Class[])                        Object
 FIELD      CASE_INSENSITIVE_ORDER          [STATIC,   Comparator<String>
 FIELD      bytes                           [PUBLIC]   byte[]
 FIELD      class                           [PUBLIC]   Class
-FIELD      empty                           [PUBLIC]   boolean
+FIELD      empty                           [PUBLIC]   boolean
\ No newline at end of file
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/operators/spreadOperator2/SpreadOperator2.groovy.testSpreadOperator2_stringArray_sPrefix.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/operators/spreadOperator2/SpreadOperator2.groovy.testSpreadOperator2_stringArray_sPrefix.completion
index c8d9e8b..3b1c381 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/operators/spreadOperator2/SpreadOperator2.groovy.testSpreadOperator2_stringArray_sPrefix.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/operators/spreadOperator2/SpreadOperator2.groovy.testSpreadOperator2_stringArray_sPrefix.completion
@@ -18,11 +18,14 @@ METHOD     sprintf(String, Object)                    String
 METHOD     startsWith(String)              [PUBLIC]   boolean
 METHOD     startsWith(String, int)         [PUBLIC]   boolean
 METHOD     startsWithAny(CharSequence[])              boolean
+METHOD     startsWithIgnoreCase(CharSeque             boolean
+METHOD     stream()                                   Stream
 METHOD     stripIndent()                              String
+METHOD     stripIndent(boolean)                       String
 METHOD     stripIndent(int)                           String
 METHOD     stripMargin()                              String
 METHOD     stripMargin(CharSequence)                  String
 METHOD     stripMargin(char)                          String
 METHOD     subSequence(int, int)           [PUBLIC]   CharSequence
 METHOD     substring(int)                  [PUBLIC]   String
-METHOD     substring(int, int)             [PUBLIC]   String
+METHOD     substring(int, int)             [PUBLIC]   String
\ No newline at end of file
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/operators/spreadOperator3/SpreadOperator3.groovy.testSpreadOperator3_intArray_all.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/operators/spreadOperator3/SpreadOperator3.groovy.testSpreadOperator3_intArray_all.completion
index a3a8abc..f6a7545 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/operators/spreadOperator3/SpreadOperator3.groovy.testSpreadOperator3_intArray_all.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/operators/spreadOperator3/SpreadOperator3.groovy.testSpreadOperator3_intArray_all.completion
@@ -127,6 +127,7 @@ METHOD     split(Closure)                             Collection
 METHOD     sprintf(String, Object)                    String
 METHOD     sprintf(String, Object)                    String
 METHOD     step(Number, Number, Closure)              void
+METHOD     stream()                                   Stream
 METHOD     stringSize(int)                 [STATIC]   int
 METHOD     sum(int, int)                   [STATIC,   int
 METHOD     tap(Closure)                               Object
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/operators/spreadOperator4/SpreadOperator4.groovy.testSpreadOperator4_intArray_sPrefix.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/operators/spreadOperator4/SpreadOperator4.groovy.testSpreadOperator4_intArray_sPrefix.completion
index 36108ce..ae8957a 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/operators/spreadOperator4/SpreadOperator4.groovy.testSpreadOperator4_intArray_sPrefix.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/operators/spreadOperator4/SpreadOperator4.groovy.testSpreadOperator4_intArray_sPrefix.completion
@@ -11,5 +11,6 @@ METHOD     split(Closure)                             Collection
 METHOD     sprintf(String, Object)                    String
 METHOD     sprintf(String, Object)                    String
 METHOD     step(Number, Number, Closure)              void
+METHOD     stream()                                   Stream
 METHOD     stringSize(int)                 [STATIC]   int
-METHOD     sum(int, int)                   [STATIC,   int
+METHOD     sum(int, int)                   [STATIC,   int
\ No newline at end of file
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/package/afterExtendsTypeCompletion1/AfterExtendsTypeCompletion1.groovy.testAfterExtendsTypeCompletion1.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/package/afterExtendsTypeCompletion1/AfterExtendsTypeCompletion1.groovy.testAfterExtendsTypeCompletion1.completion
index 10147c2..52cdd9d 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/package/afterExtendsTypeCompletion1/AfterExtendsTypeCompletion1.groovy.testAfterExtendsTypeCompletion1.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/package/afterExtendsTypeCompletion1/AfterExtendsTypeCompletion1.groovy.testAfterExtendsTypeCompletion1.completion
@@ -5,8 +5,8 @@ class NoPrefix extends | {
 PACKAGE    com                                        null
 PACKAGE    groovy                                     null
 PACKAGE    groovyjarjarantlr                          null
+PACKAGE    groovyjarjarantlr4                         null
 PACKAGE    groovyjarjarasm                            null
-PACKAGE    groovyjarjarcommonscli                     null
 PACKAGE    groovyjarjarpicocli                        null
 PACKAGE    java                                       null
 PACKAGE    javax                                      null
@@ -179,6 +179,7 @@ CLASS      GroovyRuntimeException                     null
 CLASS      GroovyScriptEngine                         null
 CLASS      GroovyShell                                null
 CLASS      GroovySystem                               null
+CLASS      Groovydoc                                  null
 CLASS      HashMap                                    null
 CLASS      HashSet                                    null
 CLASS      Hashtable                                  null
@@ -440,7 +441,15 @@ CLASS      TracingInterceptor                         null
 CLASS      TreeMap                                    null
 CLASS      TreeSet                                    null
 CLASS      Tuple                                      null
+CLASS      Tuple0                                     null
 CLASS      Tuple1                                     null
+CLASS      Tuple10                                    null
+CLASS      Tuple11                                    null
+CLASS      Tuple12                                    null
+CLASS      Tuple13                                    null
+CLASS      Tuple14                                    null
+CLASS      Tuple15                                    null
+CLASS      Tuple16                                    null
 CLASS      Tuple2                                     null
 CLASS      Tuple3                                     null
 CLASS      Tuple4                                     null
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/transformations/delegate1/Delegate1.groovy.testDelegate1_interfaceDelegator_withoutPrefix.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/transformations/delegate1/Delegate1.groovy.testDelegate1_interfaceDelegator_withoutPrefix.completion
index baabbcf..304e1c3 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/transformations/delegate1/Delegate1.groovy.testDelegate1_interfaceDelegator_withoutPrefix.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/transformations/delegate1/Delegate1.groovy.testDelegate1_interfaceDelegator_withoutPrefix.completion
@@ -31,7 +31,7 @@ METHOD     findResult(Object, Closure)                Object
 METHOD     getAt(String)                              Object
 METHOD     getClass()                      [PUBLIC]   Class<?>
 METHOD     getDelegation()                 [PUBLIC]   Delegation
-METHOD     getMetaClass()                             MetaClass
+METHOD     getMetaClass()                  [PUBLIC]   MetaClass
 METHOD     getMetaPropertyValues()                    List
 METHOD     getProperties()                            Map
 METHOD     getProperty(String)             [PUBLIC]   Object
@@ -62,7 +62,7 @@ METHOD     putAt(String, Object)                      void
 METHOD     respondsTo(String)                         List
 METHOD     respondsTo(String, Object)                 List
 METHOD     setDelegation(Delegation)       [PUBLIC]   void
-METHOD     setMetaClass(MetaClass)                    void
+METHOD     setMetaClass(MetaClass)         [PUBLIC]   void
 METHOD     setProperty(String, Object)     [PUBLIC]   void
 METHOD     showMe()                        [PROTECTE  void
 METHOD     sleep(long)                                void
@@ -70,6 +70,7 @@ METHOD     sleep(long, Closure)                       void
 METHOD     split(Closure)                             Collection
 METHOD     sprintf(String, Object)                    String
 METHOD     sprintf(String, Object)                    String
+METHOD     stream()                                   Stream
 METHOD     tap(Closure)                               Object
 METHOD     toString()                      [PUBLIC]   String
 METHOD     use(Class, Closure)                        Object
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/transformations/singleton2/Singleton2.groovy.testSingleton2_withGetPrefix.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/transformations/singleton2/Singleton2.groovy.testSingleton2_withGetPrefix.completion
index 36a544f..1002484 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/transformations/singleton2/Singleton2.groovy.testSingleton2_withGetPrefix.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/transformations/singleton2/Singleton2.groovy.testSingleton2_withGetPrefix.completion
@@ -5,7 +5,7 @@ Singleton2.get|
 METHOD     getAt(String)                              Object
 METHOD     getClass()                      [PUBLIC]   Class<?>
 METHOD     getInstance()                   [STATIC]   Singleton2
-METHOD     getMetaClass()                             MetaClass
+METHOD     getMetaClass()                  [PUBLIC]   MetaClass
 METHOD     getMetaPropertyValues()                    List
 METHOD     getProperties()                            Map
 METHOD     getProperty(String)             [PUBLIC]   Object
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/transformations/singleton3/Singleton3.groovy.testSingleton3_withoutPrefix.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/transformations/singleton3/Singleton3.groovy.testSingleton3_withoutPrefix.completion
index bc1dbe8..980762b 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/transformations/singleton3/Singleton3.groovy.testSingleton3_withoutPrefix.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/transformations/singleton3/Singleton3.groovy.testSingleton3_withoutPrefix.completion
@@ -33,7 +33,7 @@ METHOD     findResult(Object, Closure)                Object
 METHOD     getAt(String)                              Object
 METHOD     getClass()                      [PUBLIC]   Class<?>
 METHOD     getInstance()                   [STATIC]   Singleton3
-METHOD     getMetaClass()                             MetaClass
+METHOD     getMetaClass()                  [PUBLIC]   MetaClass
 METHOD     getMetaPropertyValues()                    List
 METHOD     getProperties()                            Map
 METHOD     getProperty(String)             [PUBLIC]   Object
@@ -62,13 +62,14 @@ METHOD     println(PrintWriter)                       void
 METHOD     putAt(String, Object)                      void
 METHOD     respondsTo(String)                         List
 METHOD     respondsTo(String, Object)                 List
-METHOD     setMetaClass(MetaClass)                    void
+METHOD     setMetaClass(MetaClass)         [PUBLIC]   void
 METHOD     setProperty(String, Object)     [PUBLIC]   void
 METHOD     sleep(long)                                void
 METHOD     sleep(long, Closure)                       void
 METHOD     split(Closure)                             Collection
 METHOD     sprintf(String, Object)                    String
 METHOD     sprintf(String, Object)                    String
+METHOD     stream()                                   Stream
 METHOD     tap(Closure)                               Object
 METHOD     toString()                      [PUBLIC]   String
 METHOD     use(Class, Closure)                        Object
diff --git a/groovy/groovy.editor/test/unit/src/org/netbeans/modules/groovy/editor/api/GroovyDeclarationFinderTest.java b/groovy/groovy.editor/test/unit/src/org/netbeans/modules/groovy/editor/api/GroovyDeclarationFinderTest.java
index 7aaba23..29ddabc 100644
--- a/groovy/groovy.editor/test/unit/src/org/netbeans/modules/groovy/editor/api/GroovyDeclarationFinderTest.java
+++ b/groovy/groovy.editor/test/unit/src/org/netbeans/modules/groovy/editor/api/GroovyDeclarationFinderTest.java
@@ -130,19 +130,18 @@ public class GroovyDeclarationFinderTest extends GroovyTestBase {
                 "        return Inner^Classes.Type.DUMMY_1;", "InnerClasses.java", 12);
     }
 
-    // TESTFAIL wrongly parsed source by groovy
-//    public void testInnerClasses2() throws Exception {
-//        checkDeclaration(TEST_BASE + "a/Declaration3.groovy",
-//                "        return InnerClasses.Ty^pe.DUMMY_1;", "InnerClasses.java", 45);
-//    }
-//
-//    public void testInnerClasses3() throws Exception {
-//        checkDeclaration(TEST_BASE + "a/Declaration3.groovy",
-//                "        InnerClasses.Type.ca^ll()", "InnerClasses.java", 45);
-//    }
-//
-//    public void testInnerClasses4() throws Exception {
-//        checkDeclaration(TEST_BASE + "a/Declaration3.groovy",
-//                "        return InnerClasses.Type.DU^MMY_1;", "InnerClasses.java", 80);
-//    }
+    public void testInnerClasses2() throws Exception {
+        checkDeclaration(TEST_BASE + "a/Declaration3.groovy",
+                "        return InnerClasses.Ty^pe.DUMMY_1;", "InnerClasses.java", 45);
+    }
+
+    public void testInnerClasses3() throws Exception {
+        checkDeclaration(TEST_BASE + "a/Declaration3.groovy",
+                "        InnerClasses.Type.ca^ll()", "InnerClasses.java", 114);
+    }
+
+    public void testInnerClasses4() throws Exception {
+        checkDeclaration(TEST_BASE + "a/Declaration3.groovy",
+                "        return InnerClasses.Type.DU^MMY_1;", "InnerClasses.java", 79);
+    }
 }
diff --git a/groovy/groovy.editor/test/unit/src/org/netbeans/modules/groovy/editor/api/GroovyIndexTest.java b/groovy/groovy.editor/test/unit/src/org/netbeans/modules/groovy/editor/api/GroovyIndexTest.java
index ee14067..e337a15 100644
--- a/groovy/groovy.editor/test/unit/src/org/netbeans/modules/groovy/editor/api/GroovyIndexTest.java
+++ b/groovy/groovy.editor/test/unit/src/org/netbeans/modules/groovy/editor/api/GroovyIndexTest.java
@@ -23,7 +23,6 @@ import java.io.File;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Set;
-import static junit.framework.Assert.assertEquals;
 import org.netbeans.modules.groovy.editor.api.elements.index.IndexedClass;
 import org.netbeans.modules.groovy.editor.api.elements.index.IndexedMethod;
 import org.netbeans.modules.groovy.editor.test.GroovyTestBase;
@@ -48,7 +47,7 @@ public class GroovyIndexTest extends GroovyTestBase {
         assertEquals(3, methods.size());
 
         methods = index.getMethods(".*", "demo.GroovyClass1", QuerySupport.Kind.REGEXP);
-        assertEquals(4, methods.size());
+        assertEquals(6, methods.size());
     }
 
     public void testGetClasses() throws Exception {
diff --git a/groovy/groovy.editor/test/unit/src/org/netbeans/modules/groovy/editor/api/parser/GroovyVirtualSourceProviderTest.java b/groovy/groovy.editor/test/unit/src/org/netbeans/modules/groovy/editor/api/parser/GroovyVirtualSourceProviderTest.java
index 419dbec..b175e8e 100644
--- a/groovy/groovy.editor/test/unit/src/org/netbeans/modules/groovy/editor/api/parser/GroovyVirtualSourceProviderTest.java
+++ b/groovy/groovy.editor/test/unit/src/org/netbeans/modules/groovy/editor/api/parser/GroovyVirtualSourceProviderTest.java
@@ -55,8 +55,8 @@ public class GroovyVirtualSourceProviderTest extends GroovyTestBase {
         CharSequence charSequence = generator.generateClass(classNodes.get(0));
         assertEquals(
                 "import groovy.lang.*;" + lineSep +
-                "import java.net.*;" + lineSep +
                 "import java.util.*;" + lineSep +
+                "import java.net.*;" + lineSep +
                 "import java.lang.*;" + lineSep +
                 "import groovy.util.*;" + lineSep +
                 "import java.io.*;" + lineSep +
@@ -66,6 +66,8 @@ public class GroovyVirtualSourceProviderTest extends GroovyTestBase {
                 "    groovy.lang.GroovyObject {" + lineSep +
                 "public Foo() {}" + lineSep +
                 "public java.lang.Object method1() { return null;}" + lineSep +
+                "public groovy.lang.MetaClass getMetaClass() { return (groovy.lang.MetaClass)null;}" + lineSep +
+                "public void setMetaClass(groovy.lang.MetaClass mc) { }" + lineSep +
                 "public java.lang.Object getClosure1() { return null;}" + lineSep +
                 "public void setClosure1(java.lang.Object value) { }" + lineSep +
                 "}" + lineSep, charSequence);
@@ -86,8 +88,8 @@ public class GroovyVirtualSourceProviderTest extends GroovyTestBase {
         CharSequence charSequence = generator.generateClass(classNodes.get(0));
         assertEquals(
                 "import groovy.lang.*;" + lineSep +
-                "import java.net.*;" + lineSep +
                 "import java.util.*;" + lineSep +
+                "import java.net.*;" + lineSep +
                 "import java.lang.*;" + lineSep +
                 "import groovy.util.*;" + lineSep +
                 "import java.io.*;" + lineSep +
@@ -118,8 +120,8 @@ public class GroovyVirtualSourceProviderTest extends GroovyTestBase {
         CharSequence charSequence = generator.generateClass(classNodes.get(0));
         assertEquals(
                 "import groovy.lang.*;" + lineSep +
-                "import java.net.*;" + lineSep +
                 "import java.util.*;" + lineSep +
+                "import java.net.*;" + lineSep +
                 "import java.lang.*;" + lineSep +
                 "import groovy.util.*;" + lineSep +
                 "import java.io.*;" + lineSep +
@@ -129,6 +131,8 @@ public class GroovyVirtualSourceProviderTest extends GroovyTestBase {
                 "    groovy.lang.GroovyObject {" + lineSep +
                 "public Foo() {}" + lineSep +
                 "public static java.util.List<java.lang.String> get() { return (java.util.List<java.lang.String>)null;}" + lineSep +
+                "public groovy.lang.MetaClass getMetaClass() { return (groovy.lang.MetaClass)null;}" + lineSep +
+                "public void setMetaClass(groovy.lang.MetaClass mc) { }" + lineSep +
                 "}" + lineSep, charSequence);
     }
 
@@ -148,8 +152,8 @@ public class GroovyVirtualSourceProviderTest extends GroovyTestBase {
         CharSequence charSequence = generator.generateClass(classNodes.get(0));
         assertEquals(
                 "import groovy.lang.*;" + lineSep +
-                "import java.net.*;" + lineSep +
                 "import java.util.*;" + lineSep +
+                "import java.net.*;" + lineSep +
                 "import java.lang.*;" + lineSep +
                 "import groovy.util.*;" + lineSep +
                 "import javax.swing.*;" + lineSep +
@@ -160,6 +164,8 @@ public class GroovyVirtualSourceProviderTest extends GroovyTestBase {
                 "    groovy.lang.GroovyObject {" + lineSep +
                 "public MyTest() {}" + lineSep +
                 "public javax.swing.JPanel getPanel() { return (javax.swing.JPanel)null;}" + lineSep +
+                "public groovy.lang.MetaClass getMetaClass() { return (groovy.lang.MetaClass)null;}" + lineSep +
+                "public void setMetaClass(groovy.lang.MetaClass mc) { }" + lineSep +
                 "}" + lineSep, charSequence);
     }
 
@@ -184,8 +190,8 @@ public class GroovyVirtualSourceProviderTest extends GroovyTestBase {
         CharSequence charSequence = generator.generateClass(classNodes.get(0));
         assertEquals(
                 "import groovy.lang.*;" + lineSep +
-                "import java.net.*;" + lineSep +
                 "import java.util.*;" + lineSep +
+                "import java.net.*;" + lineSep +
                 "import java.lang.*;" + lineSep +
                 "import groovy.util.*;" + lineSep +
                 "import java.io.*;" + lineSep +
@@ -195,6 +201,8 @@ public class GroovyVirtualSourceProviderTest extends GroovyTestBase {
                 "    groovy.lang.GroovyObject {" + lineSep +
                 "public PostService() {}" + lineSep +
                 "public java.lang.Object serviceMethod() throws PostException { return null;}" + lineSep +
+                "public groovy.lang.MetaClass getMetaClass() { return (groovy.lang.MetaClass)null;}" + lineSep +
+                "public void setMetaClass(groovy.lang.MetaClass mc) { }" + lineSep +
                 "public boolean getTransactional() { return (boolean)false;}" + lineSep +
                 "public void setTransactional(boolean value) { }" + lineSep +
                 "public boolean isTransactional() { return (boolean)false;}" + lineSep +
@@ -203,8 +211,8 @@ public class GroovyVirtualSourceProviderTest extends GroovyTestBase {
         charSequence = generator.generateClass(classNodes.get(1));
         assertEquals(
                 "import groovy.lang.*;" + lineSep +
-                "import java.net.*;" + lineSep +
                 "import java.util.*;" + lineSep +
+                "import java.net.*;" + lineSep +
                 "import java.lang.*;" + lineSep +
                 "import groovy.util.*;" + lineSep +
                 "import java.io.*;" + lineSep +
@@ -215,6 +223,8 @@ public class GroovyVirtualSourceProviderTest extends GroovyTestBase {
                 "public PostException() {" + lineSep +
                 "super ();" + lineSep +
                 "}" + lineSep +
+                "public groovy.lang.MetaClass getMetaClass() { return (groovy.lang.MetaClass)null;}" + lineSep +
+                "public void setMetaClass(groovy.lang.MetaClass mc) { }" + lineSep +
                 "}" + lineSep, charSequence);
     }
 
@@ -239,8 +249,8 @@ public class GroovyVirtualSourceProviderTest extends GroovyTestBase {
         CharSequence charSequence = generator.generateClass(classNodes.get(0));
         assertEquals(
                 "import groovy.lang.*;" + lineSep +
-                "import java.net.*;" + lineSep +
                 "import java.util.*;" + lineSep +
+                "import java.net.*;" + lineSep +
                 "import java.lang.*;" + lineSep +
                 "import groovy.util.*;" + lineSep +
                 "import java.io.*;" + lineSep +
@@ -252,6 +262,8 @@ public class GroovyVirtualSourceProviderTest extends GroovyTestBase {
                 "public void test1() throws java.lang.RuntimeException { }" + lineSep +
                 "public void test2() throws java.lang.Exception { }" + lineSep +
                 "public java.lang.Object test3() throws java.lang.RuntimeException { return null;}" + lineSep +
+                "public groovy.lang.MetaClass getMetaClass() { return (groovy.lang.MetaClass)null;}" + lineSep +
+                "public void setMetaClass(groovy.lang.MetaClass mc) { }" + lineSep +
                 "}" + lineSep, charSequence);
     }
 }
diff --git a/groovy/groovy.gsp/nbproject/project.xml b/groovy/groovy.gsp/nbproject/project.xml
index a969329..6327c30 100644
--- a/groovy/groovy.gsp/nbproject/project.xml
+++ b/groovy/groovy.gsp/nbproject/project.xml
@@ -154,8 +154,8 @@
                     <build-prerequisite/>
                     <compile-dependency/>
                     <run-dependency>
-                        <release-version>2</release-version>
-                        <specification-version>1.10</specification-version>
+                        <release-version>3</release-version>
+                        <specification-version>1.76</specification-version>
                     </run-dependency>
                 </dependency>
                 <dependency>
@@ -251,7 +251,7 @@
                     </run-dependency>
                 </dependency>
                 <dependency>
-                    <code-name-base>org.openide.util.ui</code-name-base>
+                    <code-name-base>org.openide.util</code-name-base>
                     <build-prerequisite/>
                     <compile-dependency/>
                     <run-dependency>
@@ -259,19 +259,19 @@
                     </run-dependency>
                 </dependency>
                 <dependency>
-                    <code-name-base>org.openide.util</code-name-base>
+                    <code-name-base>org.openide.util.lookup</code-name-base>
                     <build-prerequisite/>
                     <compile-dependency/>
                     <run-dependency>
-                        <specification-version>9.3</specification-version>
+                        <specification-version>8.0</specification-version>
                     </run-dependency>
                 </dependency>
                 <dependency>
-                    <code-name-base>org.openide.util.lookup</code-name-base>
+                    <code-name-base>org.openide.util.ui</code-name-base>
                     <build-prerequisite/>
                     <compile-dependency/>
                     <run-dependency>
-                        <specification-version>8.0</specification-version>
+                        <specification-version>9.3</specification-version>
                     </run-dependency>
                 </dependency>
                 <dependency>
diff --git a/groovy/groovy.kit/nbproject/project.xml b/groovy/groovy.kit/nbproject/project.xml
index 437eeed..88a7269 100644
--- a/groovy/groovy.kit/nbproject/project.xml
+++ b/groovy/groovy.kit/nbproject/project.xml
@@ -34,8 +34,8 @@
                 <dependency>
                     <code-name-base>org.netbeans.modules.groovy.editor</code-name-base>
                     <run-dependency>
-                        <release-version>2</release-version>
-                        <specification-version>1.10</specification-version>
+                        <release-version>3</release-version>
+                        <specification-version>1.76</specification-version>
                     </run-dependency>
                 </dependency>
                 <dependency>
diff --git a/groovy/groovy.refactoring/nbproject/project.xml b/groovy/groovy.refactoring/nbproject/project.xml
index 54e07cf..4c23925 100644
--- a/groovy/groovy.refactoring/nbproject/project.xml
+++ b/groovy/groovy.refactoring/nbproject/project.xml
@@ -70,20 +70,20 @@
                     </run-dependency>
                 </dependency>
                 <dependency>
-                    <code-name-base>org.netbeans.modules.editor.lib</code-name-base>
+                    <code-name-base>org.netbeans.modules.editor.document</code-name-base>
                     <build-prerequisite/>
                     <compile-dependency/>
                     <run-dependency>
-                        <release-version>3</release-version>
-                        <specification-version>4.0</specification-version>
+                        <specification-version>1.0</specification-version>
                     </run-dependency>
                 </dependency>
                 <dependency>
-                    <code-name-base>org.netbeans.modules.editor.document</code-name-base>
+                    <code-name-base>org.netbeans.modules.editor.lib</code-name-base>
                     <build-prerequisite/>
                     <compile-dependency/>
                     <run-dependency>
-                        <specification-version>1.0</specification-version>
+                        <release-version>3</release-version>
+                        <specification-version>4.0</specification-version>
                     </run-dependency>
                 </dependency>
                 <dependency>
@@ -109,8 +109,8 @@
                     <build-prerequisite/>
                     <compile-dependency/>
                     <run-dependency>
-                        <release-version>2</release-version>
-                        <specification-version>1.12</specification-version>
+                        <release-version>3</release-version>
+                        <specification-version>1.76</specification-version>
                     </run-dependency>
                 </dependency>
                 <dependency>
@@ -138,7 +138,7 @@
                         <release-version>1</release-version>
                         <specification-version>1.62</specification-version>
                     </run-dependency>
-                </dependency>                
+                </dependency>
                 <dependency>
                     <code-name-base>org.netbeans.modules.java.source.base</code-name-base>
                     <build-prerequisite/>
@@ -292,7 +292,7 @@
                     </run-dependency>
                 </dependency>
                 <dependency>
-                    <code-name-base>org.openide.util.ui</code-name-base>
+                    <code-name-base>org.openide.util</code-name-base>
                     <build-prerequisite/>
                     <compile-dependency/>
                     <run-dependency>
@@ -300,19 +300,19 @@
                     </run-dependency>
                 </dependency>
                 <dependency>
-                    <code-name-base>org.openide.util</code-name-base>
+                    <code-name-base>org.openide.util.lookup</code-name-base>
                     <build-prerequisite/>
                     <compile-dependency/>
                     <run-dependency>
-                        <specification-version>9.3</specification-version>
+                        <specification-version>8.0</specification-version>
                     </run-dependency>
                 </dependency>
                 <dependency>
-                    <code-name-base>org.openide.util.lookup</code-name-base>
+                    <code-name-base>org.openide.util.ui</code-name-base>
                     <build-prerequisite/>
                     <compile-dependency/>
                     <run-dependency>
-                        <specification-version>8.0</specification-version>
+                        <specification-version>9.3</specification-version>
                     </run-dependency>
                 </dependency>
                 <dependency>
diff --git a/groovy/libs.groovy/external/binaries-list b/groovy/libs.groovy/external/binaries-list
index d677d59..9f16028 100644
--- a/groovy/libs.groovy/external/binaries-list
+++ b/groovy/libs.groovy/external/binaries-list
@@ -14,5 +14,5 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-F0A005FB21E7BD9B7EBF04CD2ECDA0FC8F3BE59D org.codehaus.groovy:groovy:2.5.14
-A230C95333F584BF8FE215C608B04AFB3B11A9F9 org.codehaus.groovy:groovy-ant:2.5.14
+43A7ECF3B8A9D7DD9FC8D468AE96B97CFF4616DF org.codehaus.groovy:groovy:3.0.8
+3077166ED6635F777064AD79C8CA080AB8DC3247 org.codehaus.groovy:groovy-ant:3.0.8
diff --git a/groovy/libs.groovy/external/groovy-2.5.14-license.txt b/groovy/libs.groovy/external/groovy-3.0.8-license.txt
similarity index 99%
rename from groovy/libs.groovy/external/groovy-2.5.14-license.txt
rename to groovy/libs.groovy/external/groovy-3.0.8-license.txt
index a8742d7..524bce7 100644
--- a/groovy/libs.groovy/external/groovy-2.5.14-license.txt
+++ b/groovy/libs.groovy/external/groovy-3.0.8-license.txt
@@ -1,6 +1,6 @@
 Name: Groovy
-Version: 2.5.14
-Files: groovy-2.5.14.jar groovy-ant-2.5.14.jar
+Version: 3.0.8
+Files: groovy-3.0.8.jar groovy-ant-3.0.8.jar
 Description: Groovy Language distribution.
 License: Apache-2.0-groovy
 Origin: http://groovy-lang.org/
diff --git a/groovy/libs.groovy/external/groovy-2.5.14-notice.txt b/groovy/libs.groovy/external/groovy-3.0.8-notice.txt
similarity index 100%
rename from groovy/libs.groovy/external/groovy-2.5.14-notice.txt
rename to groovy/libs.groovy/external/groovy-3.0.8-notice.txt
diff --git a/groovy/libs.groovy/manifest.mf b/groovy/libs.groovy/manifest.mf
index 63b9831..e28f718 100644
--- a/groovy/libs.groovy/manifest.mf
+++ b/groovy/libs.groovy/manifest.mf
@@ -3,5 +3,5 @@ AutoUpdate-Show-In-Client: false
 OpenIDE-Module: org.netbeans.modules.libs.groovy
 OpenIDE-Module-Layer: org/netbeans/modules/libs/groovy/layer.xml
 OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/libs/groovy/Bundle.properties
-OpenIDE-Module-Specification-Version: 2.10
+OpenIDE-Module-Specification-Version: 2.11
 
diff --git a/groovy/libs.groovy/nbproject/project.properties b/groovy/libs.groovy/nbproject/project.properties
index e4c3909..9978e23 100644
--- a/groovy/libs.groovy/nbproject/project.properties
+++ b/groovy/libs.groovy/nbproject/project.properties
@@ -24,5 +24,5 @@ javac.compilerargs=-Xlint -Xlint:-serial
 sigtest.gen.fail.on.error=false
 
 #cp.extra=external/groovy-all-2.1.7.jar
-release.external/groovy-2.5.14.jar=modules/ext/groovy.jar
-release.external/groovy-ant-2.5.14.jar=modules/ext/groovy-ant.jar
+release.external/groovy-3.0.8.jar=modules/ext/groovy.jar
+release.external/groovy-ant-3.0.8.jar=modules/ext/groovy-ant.jar
diff --git a/groovy/libs.groovy/nbproject/project.xml b/groovy/libs.groovy/nbproject/project.xml
index 5fc093e..db18113 100644
--- a/groovy/libs.groovy/nbproject/project.xml
+++ b/groovy/libs.groovy/nbproject/project.xml
@@ -30,6 +30,7 @@
                 <friend>org.netbeans.modules.groovy.refactoring</friend>
                 <friend>org.netbeans.modules.groovy.support</friend>
                 <package>groovy.lang</package>
+                <package>groovy.lang.groovydoc</package>
                 <package>groovyjarjarantlr</package>
                 <package>groovyjarjarasm.asm</package>
                 <package>org.codehaus.groovy</package>
@@ -45,17 +46,19 @@
                 <package>org.codehaus.groovy.control.customizers.builder</package>
                 <package>org.codehaus.groovy.control.messages</package>
                 <package>org.codehaus.groovy.reflection</package>
+                <package>org.codehaus.groovy.runtime</package>
+                <package>org.codehaus.groovy.runtime.callsite</package>
                 <package>org.codehaus.groovy.syntax</package>
                 <package>org.codehaus.groovy.transform</package>
                 <package>org.codehaus.groovy.transform.stc</package>
             </friend-packages>
             <class-path-extension>
                 <runtime-relative-path>ext/groovy.jar</runtime-relative-path>
-                <binary-origin>external/groovy-2.5.14.jar</binary-origin>
+                <binary-origin>external/groovy-3.0.8.jar</binary-origin>
             </class-path-extension>
             <class-path-extension>
                 <runtime-relative-path>ext/groovy-ant.jar</runtime-relative-path>
-                <binary-origin>external/groovy-ant-2.5.14.jar</binary-origin>
+                <binary-origin>external/groovy-ant-3.0.8.jar</binary-origin>
             </class-path-extension>
         </data>
     </configuration>
diff --git a/groovy/libs.groovy/src/org/apache/groovy/parser/antlr4/util/PositionConfigureUtils.java b/groovy/libs.groovy/src/org/apache/groovy/parser/antlr4/util/PositionConfigureUtils.java
new file mode 100644
index 0000000..838df3f
--- /dev/null
+++ b/groovy/libs.groovy/src/org/apache/groovy/parser/antlr4/util/PositionConfigureUtils.java
@@ -0,0 +1,150 @@
+/*
+ *  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.apache.groovy.parser.antlr4.util;
+
+import groovy.lang.Tuple2;
+import groovyjarjarantlr4.v4.runtime.Token;
+import groovyjarjarantlr4.v4.runtime.tree.TerminalNode;
+import org.apache.groovy.parser.antlr4.GroovyParser;
+import org.codehaus.groovy.ast.ASTNode;
+
+import static groovy.lang.Tuple.tuple;
+import org.codehaus.groovy.ast.expr.Expression;
+import org.codehaus.groovy.ast.expr.MethodCallExpression;
+import org.codehaus.groovy.ast.expr.PropertyExpression;
+import static org.codehaus.groovy.runtime.DefaultGroovyMethods.asBoolean;
+
+/**
+ * Utilities for configuring node positions
+ */
+public class PositionConfigureUtils {
+    /**
+     * Sets location(lineNumber, colNumber, lastLineNumber, lastColumnNumber) for node using standard context information.
+     * Note: this method is implemented to be closed over ASTNode. It returns same node as it received in arguments.
+     *
+     * @param astNode Node to be modified.
+     * @param ctx     Context from which information is obtained.
+     * @return Modified astNode.
+     */
+    public static <T extends ASTNode> T configureAST(T astNode, GroovyParser.GroovyParserRuleContext ctx) {
+        Token start = ctx.getStart();
+        Token stop = ctx.getStop();
+
+        astNode.setLineNumber(start.getLine());
+        astNode.setColumnNumber(start.getCharPositionInLine() + 1);
+
+        if (astNode instanceof PropertyExpression) {
+            Expression objectExpression = ((PropertyExpression) astNode).getObjectExpression();
+            if (objectExpression.getLineNumber() < astNode.getLineNumber()) {
+                astNode.setLineNumber(objectExpression.getLineNumber());
+                astNode.setColumnNumber(objectExpression.getColumnNumber());
+            } else if (objectExpression.getLineNumber() == astNode.getLineNumber() && objectExpression.getColumnNumber() < astNode.getColumnNumber()) {
+                astNode.setColumnNumber(objectExpression.getColumnNumber());
+            }
+        } else if (astNode instanceof MethodCallExpression) {
+            Expression method = ((MethodCallExpression) astNode).getMethod();
+            if (method.getLineNumber() < astNode.getLineNumber()) {
+                astNode.setLineNumber(method.getLineNumber());
+                astNode.setColumnNumber(method.getColumnNumber());
+            } else if (method.getLineNumber() == astNode.getLineNumber() && method.getColumnNumber() < astNode.getColumnNumber()) {
+                astNode.setColumnNumber(method.getColumnNumber());
+            }
+        }
+
+        configureEndPosition(astNode, stop);
+
+        return astNode;
+    }
+
+    public static Tuple2<Integer, Integer> endPosition(Token token) {
+        String stopText = token.getText();
+        int stopTextLength = 0;
+        int newLineCnt = 0;
+        if (null != stopText) {
+            stopTextLength = stopText.length();
+            newLineCnt = (int) StringUtils.countChar(stopText, '\n');
+        }
+
+        if (0 == newLineCnt) {
+            return tuple(token.getLine(), token.getCharPositionInLine() + 1 + token.getText().length());
+        } else { // e.g. GStringEnd contains newlines, we should fix the location info
+            return tuple(token.getLine() + newLineCnt, stopTextLength - stopText.lastIndexOf('\n'));
+        }
+    }
+
+    public static <T extends ASTNode> T configureAST(T astNode, TerminalNode terminalNode) {
+        return configureAST(astNode, terminalNode.getSymbol());
+    }
+
+    public static <T extends ASTNode> T configureAST(T astNode, Token token) {
+        astNode.setLineNumber(token.getLine());
+        astNode.setColumnNumber(token.getCharPositionInLine() + 1);
+        astNode.setLastLineNumber(token.getLine());
+        astNode.setLastColumnNumber(token.getCharPositionInLine() + 1 + token.getText().length());
+
+        return astNode;
+    }
+
+    public static <T extends ASTNode> T configureAST(T astNode, ASTNode source) {
+        astNode.setLineNumber(source.getLineNumber());
+        astNode.setColumnNumber(source.getColumnNumber());
+        astNode.setLastLineNumber(source.getLastLineNumber());
+        astNode.setLastColumnNumber(source.getLastColumnNumber());
+
+        return astNode;
+    }
+
+    public static <T extends ASTNode> T configureAST(T astNode, GroovyParser.GroovyParserRuleContext ctx, ASTNode initialStop) {
+        Token start = ctx.getStart();
+        Token stop = ctx.getStop();
+
+        astNode.setLineNumber(start.getLine());
+        astNode.setColumnNumber(start.getCharPositionInLine() + 1);
+
+        if (asBoolean(initialStop)) {
+            astNode.setLastLineNumber(initialStop.getLastLineNumber());
+            astNode.setLastColumnNumber(initialStop.getLastColumnNumber());
+        } else {
+            configureEndPosition(astNode, stop);
+        }
+
+        return astNode;
+    }
+
+    public static <T extends ASTNode> void configureEndPosition(T astNode, Token token) {
+        Tuple2<Integer, Integer> endPosition = endPosition(token);
+        astNode.setLastLineNumber(endPosition.getV1());
+        astNode.setLastColumnNumber(endPosition.getV2());
+    }
+
+    public static <T extends ASTNode> T configureAST(T astNode, ASTNode start, ASTNode stop) {
+        astNode.setLineNumber(start.getLineNumber());
+        astNode.setColumnNumber(start.getColumnNumber());
+
+        if (asBoolean(stop)) {
+            astNode.setLastLineNumber(stop.getLastLineNumber());
+            astNode.setLastColumnNumber(stop.getLastColumnNumber());
+        } else {
+            astNode.setLastLineNumber(start.getLastLineNumber());
+            astNode.setLastColumnNumber(start.getLastColumnNumber());
+        }
+
+        return astNode;
+    }
+}
diff --git a/java/java.lsp.server/nbcode/nbproject/platform.properties b/java/java.lsp.server/nbcode/nbproject/platform.properties
index 014b263..4c019cc 100644
--- a/java/java.lsp.server/nbcode/nbproject/platform.properties
+++ b/java/java.lsp.server/nbcode/nbproject/platform.properties
@@ -20,6 +20,7 @@ cluster.path=\
     ${nbplatform.active.dir}/cpplite:\
     ${nbplatform.active.dir}/enterprise:\
     ${nbplatform.active.dir}/extide:\
+    ${nbplatform.active.dir}/groovy:\
     ${nbplatform.active.dir}/ide:\
     ${nbplatform.active.dir}/java:\
     ${nbplatform.active.dir}/nb:\
@@ -453,7 +454,14 @@ disabled.modules=\
     org.netbeans.modules.websvc.saas.codegen.j2ee,\
     org.netbeans.modules.websvc.utilities,\
     org.netbeans.modules.websvc.websvcapi,\
-    org.netbeans.modules.websvc.wsstackapi
+    org.netbeans.modules.websvc.wsstackapi,\
+    org.netbeans.modules.gradle.groovy,\
+    org.netbeans.modules.groovy.antproject,\
+    org.netbeans.modules.groovy.gsp,\
+    org.netbeans.modules.groovy.kit,\
+    org.netbeans.modules.groovy.refactoring,\
+    org.netbeans.modules.groovy.samples,\
+    org.netbeans.modules.maven.groovy
 nbplatform.active=nball
 suite.dir=${basedir}
 nbplatform.nball.netbeans.dest.dir=${suite.dir}/../../../nbbuild/netbeans
diff --git a/java/java.lsp.server/script/etc/nbcode.clusters b/java/java.lsp.server/script/etc/nbcode.clusters
index 9a5a263..23990f5 100644
--- a/java/java.lsp.server/script/etc/nbcode.clusters
+++ b/java/java.lsp.server/script/etc/nbcode.clusters
@@ -3,6 +3,7 @@ ide
 extide
 webcommon
 java
+groovy
 cpplite
 extra
 enterprise
diff --git a/java/java.lsp.server/vscode/src/extension.ts b/java/java.lsp.server/vscode/src/extension.ts
index 0dab57c..2c72b7c 100644
--- a/java/java.lsp.server/vscode/src/extension.ts
+++ b/java/java.lsp.server/vscode/src/extension.ts
@@ -490,7 +490,12 @@ function doActivateWithJDK(specifiedJDK: string | null, context: ExtensionContex
         // Options to control the language client
         let clientOptions: LanguageClientOptions = {
             // Register the server for java documents
-            documentSelector: [{ language: 'java' }, { language: 'yaml', pattern: '**/{application,bootstrap}*.yml' }, { language: 'properties', pattern: '**/{application,bootstrap}*.properties' }],
+            documentSelector: [
+                { language: 'java' },
+                { language: 'groovy' },
+                { language: 'yaml', pattern: '**/{application,bootstrap}*.yml' },
+                { language: 'properties', pattern: '**/{application,bootstrap}*.properties' }
+            ],
             synchronize: {
                 configurationSection: 'java',
                 fileEvents: [

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

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