|  | @@ -19,6 +19,7 @@
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  package org.elasticsearch.painless;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import org.apache.lucene.util.Constants;
 | 
	
		
			
				|  |  |  import org.joda.time.DateTime;
 | 
	
		
			
				|  |  |  import org.joda.time.DateTimeZone;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -32,32 +33,39 @@ import static org.hamcrest.Matchers.startsWith;
 | 
	
		
			
				|  |  |  public class FunctionRefTests extends ScriptTestCase {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public void testStaticMethodReference() {
 | 
	
		
			
				|  |  | +        assumeFalse("JDK is JDK 9", Constants.JRE_IS_MINIMUM_JAVA9);
 | 
	
		
			
				|  |  |          assertEquals(1, exec("List l = new ArrayList(); l.add(2); l.add(1); l.sort(Integer::compare); return l.get(0);"));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      
 | 
	
		
			
				|  |  |      public void testStaticMethodReferenceDef() {
 | 
	
		
			
				|  |  | +        assumeFalse("JDK is JDK 9", Constants.JRE_IS_MINIMUM_JAVA9);
 | 
	
		
			
				|  |  |          assertEquals(1, exec("def l = new ArrayList(); l.add(2); l.add(1); l.sort(Integer::compare); return l.get(0);"));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public void testVirtualMethodReference() {
 | 
	
		
			
				|  |  | +        assumeFalse("JDK is JDK 9", Constants.JRE_IS_MINIMUM_JAVA9);
 | 
	
		
			
				|  |  |          assertEquals(2, exec("List l = new ArrayList(); l.add(1); l.add(1); return l.stream().mapToInt(Integer::intValue).sum();"));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      
 | 
	
		
			
				|  |  |      public void testVirtualMethodReferenceDef() {
 | 
	
		
			
				|  |  | +        assumeFalse("JDK is JDK 9", Constants.JRE_IS_MINIMUM_JAVA9);
 | 
	
		
			
				|  |  |          assertEquals(2, exec("def l = new ArrayList(); l.add(1); l.add(1); return l.stream().mapToInt(Integer::intValue).sum();"));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public void testQualifiedStaticMethodReference() {
 | 
	
		
			
				|  |  | +        assumeFalse("JDK is JDK 9", Constants.JRE_IS_MINIMUM_JAVA9);
 | 
	
		
			
				|  |  |          assertEquals(true,
 | 
	
		
			
				|  |  |                  exec("List l = [true]; l.stream().map(org.elasticsearch.painless.FeatureTest::overloadedStatic).findFirst().get()"));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public void testQualifiedStaticMethodReferenceDef() {
 | 
	
		
			
				|  |  | +        assumeFalse("JDK is JDK 9", Constants.JRE_IS_MINIMUM_JAVA9);
 | 
	
		
			
				|  |  |          assertEquals(true,
 | 
	
		
			
				|  |  |                  exec("def l = [true]; l.stream().map(org.elasticsearch.painless.FeatureTest::overloadedStatic).findFirst().get()"));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public void testQualifiedVirtualMethodReference() {
 | 
	
		
			
				|  |  | +        assumeFalse("JDK is JDK 9", Constants.JRE_IS_MINIMUM_JAVA9);
 | 
	
		
			
				|  |  |          long instant = randomLong();
 | 
	
		
			
				|  |  |          assertEquals(instant, exec(
 | 
	
		
			
				|  |  |                  "List l = [params.d]; return l.stream().mapToLong(org.joda.time.ReadableDateTime::getMillis).sum()",
 | 
	
	
		
			
				|  | @@ -65,6 +73,7 @@ public class FunctionRefTests extends ScriptTestCase {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public void testQualifiedVirtualMethodReferenceDef() {
 | 
	
		
			
				|  |  | +        assumeFalse("JDK is JDK 9", Constants.JRE_IS_MINIMUM_JAVA9);
 | 
	
		
			
				|  |  |          long instant = randomLong();
 | 
	
		
			
				|  |  |          assertEquals(instant, exec(
 | 
	
		
			
				|  |  |                  "def l = [params.d]; return l.stream().mapToLong(org.joda.time.ReadableDateTime::getMillis).sum()",
 | 
	
	
		
			
				|  | @@ -72,6 +81,7 @@ public class FunctionRefTests extends ScriptTestCase {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public void testCtorMethodReference() {
 | 
	
		
			
				|  |  | +        assumeFalse("JDK is JDK 9", Constants.JRE_IS_MINIMUM_JAVA9);
 | 
	
		
			
				|  |  |          assertEquals(3.0D, 
 | 
	
		
			
				|  |  |                  exec("List l = new ArrayList(); l.add(1.0); l.add(2.0); " + 
 | 
	
		
			
				|  |  |                          "DoubleStream doubleStream = l.stream().mapToDouble(Double::doubleValue);" + 
 | 
	
	
		
			
				|  | @@ -82,6 +92,7 @@ public class FunctionRefTests extends ScriptTestCase {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      
 | 
	
		
			
				|  |  |      public void testCtorMethodReferenceDef() {
 | 
	
		
			
				|  |  | +        assumeFalse("JDK is JDK 9", Constants.JRE_IS_MINIMUM_JAVA9);
 | 
	
		
			
				|  |  |          assertEquals(3.0D, 
 | 
	
		
			
				|  |  |              exec("def l = new ArrayList(); l.add(1.0); l.add(2.0); " + 
 | 
	
		
			
				|  |  |                   "def doubleStream = l.stream().mapToDouble(Double::doubleValue);" + 
 | 
	
	
		
			
				|  | @@ -92,6 +103,7 @@ public class FunctionRefTests extends ScriptTestCase {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public void testArrayCtorMethodRef() {
 | 
	
		
			
				|  |  | +        assumeFalse("JDK is JDK 9", Constants.JRE_IS_MINIMUM_JAVA9);
 | 
	
		
			
				|  |  |          assertEquals(1.0D, 
 | 
	
		
			
				|  |  |                  exec("List l = new ArrayList(); l.add(1.0); l.add(2.0); " + 
 | 
	
		
			
				|  |  |                       "def[] array = l.stream().toArray(Double[]::new);" + 
 | 
	
	
		
			
				|  | @@ -99,6 +111,7 @@ public class FunctionRefTests extends ScriptTestCase {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public void testArrayCtorMethodRefDef() {
 | 
	
		
			
				|  |  | +        assumeFalse("JDK is JDK 9", Constants.JRE_IS_MINIMUM_JAVA9);
 | 
	
		
			
				|  |  |          assertEquals(1.0D, 
 | 
	
		
			
				|  |  |                  exec("def l = new ArrayList(); l.add(1.0); l.add(2.0); " + 
 | 
	
		
			
				|  |  |                       "def[] array = l.stream().toArray(Double[]::new);" + 
 | 
	
	
		
			
				|  | @@ -106,26 +119,31 @@ public class FunctionRefTests extends ScriptTestCase {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public void testCapturingMethodReference() {
 | 
	
		
			
				|  |  | +        assumeFalse("JDK is JDK 9", Constants.JRE_IS_MINIMUM_JAVA9);
 | 
	
		
			
				|  |  |          assertEquals("5", exec("Integer x = Integer.valueOf(5); return Optional.empty().orElseGet(x::toString);"));
 | 
	
		
			
				|  |  |          assertEquals("[]", exec("List l = new ArrayList(); return Optional.empty().orElseGet(l::toString);"));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      
 | 
	
		
			
				|  |  |      public void testCapturingMethodReferenceDefImpl() {
 | 
	
		
			
				|  |  | +        assumeFalse("JDK is JDK 9", Constants.JRE_IS_MINIMUM_JAVA9);
 | 
	
		
			
				|  |  |          assertEquals("5", exec("def x = Integer.valueOf(5); return Optional.empty().orElseGet(x::toString);"));
 | 
	
		
			
				|  |  |          assertEquals("[]", exec("def l = new ArrayList(); return Optional.empty().orElseGet(l::toString);"));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      
 | 
	
		
			
				|  |  |      public void testCapturingMethodReferenceDefInterface() {
 | 
	
		
			
				|  |  | +        assumeFalse("JDK is JDK 9", Constants.JRE_IS_MINIMUM_JAVA9);
 | 
	
		
			
				|  |  |          assertEquals("5", exec("Integer x = Integer.valueOf(5); def opt = Optional.empty(); return opt.orElseGet(x::toString);"));
 | 
	
		
			
				|  |  |          assertEquals("[]", exec("List l = new ArrayList(); def opt = Optional.empty(); return opt.orElseGet(l::toString);"));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      
 | 
	
		
			
				|  |  |      public void testCapturingMethodReferenceDefEverywhere() {
 | 
	
		
			
				|  |  | +        assumeFalse("JDK is JDK 9", Constants.JRE_IS_MINIMUM_JAVA9);
 | 
	
		
			
				|  |  |          assertEquals("5", exec("def x = Integer.valueOf(5); def opt = Optional.empty(); return opt.orElseGet(x::toString);"));
 | 
	
		
			
				|  |  |          assertEquals("[]", exec("def l = new ArrayList(); def opt = Optional.empty(); return opt.orElseGet(l::toString);"));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      
 | 
	
		
			
				|  |  |      public void testCapturingMethodReferenceMultipleLambdas() {
 | 
	
		
			
				|  |  | +        assumeFalse("JDK is JDK 9", Constants.JRE_IS_MINIMUM_JAVA9);
 | 
	
		
			
				|  |  |          assertEquals("testingcdefg", exec(
 | 
	
		
			
				|  |  |                  "String x = 'testing';" +
 | 
	
		
			
				|  |  |                  "String y = 'abcdefg';" + 
 | 
	
	
		
			
				|  | @@ -134,6 +152,7 @@ public class FunctionRefTests extends ScriptTestCase {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      
 | 
	
		
			
				|  |  |      public void testCapturingMethodReferenceMultipleLambdasDefImpls() {
 | 
	
		
			
				|  |  | +        assumeFalse("JDK is JDK 9", Constants.JRE_IS_MINIMUM_JAVA9);
 | 
	
		
			
				|  |  |          assertEquals("testingcdefg", exec(
 | 
	
		
			
				|  |  |                  "def x = 'testing';" +
 | 
	
		
			
				|  |  |                  "def y = 'abcdefg';" + 
 | 
	
	
		
			
				|  | @@ -142,6 +161,7 @@ public class FunctionRefTests extends ScriptTestCase {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      
 | 
	
		
			
				|  |  |      public void testCapturingMethodReferenceMultipleLambdasDefInterface() {
 | 
	
		
			
				|  |  | +        assumeFalse("JDK is JDK 9", Constants.JRE_IS_MINIMUM_JAVA9);
 | 
	
		
			
				|  |  |          assertEquals("testingcdefg", exec(
 | 
	
		
			
				|  |  |                  "String x = 'testing';" +
 | 
	
		
			
				|  |  |                  "String y = 'abcdefg';" + 
 | 
	
	
		
			
				|  | @@ -150,6 +170,7 @@ public class FunctionRefTests extends ScriptTestCase {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      
 | 
	
		
			
				|  |  |      public void testCapturingMethodReferenceMultipleLambdasDefEverywhere() {
 | 
	
		
			
				|  |  | +        assumeFalse("JDK is JDK 9", Constants.JRE_IS_MINIMUM_JAVA9);
 | 
	
		
			
				|  |  |          assertEquals("testingcdefg", exec(
 | 
	
		
			
				|  |  |                  "def x = 'testing';" +
 | 
	
		
			
				|  |  |                  "def y = 'abcdefg';" + 
 | 
	
	
		
			
				|  | @@ -158,26 +179,31 @@ public class FunctionRefTests extends ScriptTestCase {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      
 | 
	
		
			
				|  |  |      public void testOwnStaticMethodReference() {
 | 
	
		
			
				|  |  | +        assumeFalse("JDK is JDK 9", Constants.JRE_IS_MINIMUM_JAVA9);
 | 
	
		
			
				|  |  |          assertEquals(2, exec("int mycompare(int i, int j) { j - i } " +
 | 
	
		
			
				|  |  |                               "List l = new ArrayList(); l.add(2); l.add(1); l.sort(this::mycompare); return l.get(0);"));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      
 | 
	
		
			
				|  |  |      public void testOwnStaticMethodReferenceDef() {
 | 
	
		
			
				|  |  | +        assumeFalse("JDK is JDK 9", Constants.JRE_IS_MINIMUM_JAVA9);
 | 
	
		
			
				|  |  |          assertEquals(2, exec("int mycompare(int i, int j) { j - i } " +
 | 
	
		
			
				|  |  |                               "def l = new ArrayList(); l.add(2); l.add(1); l.sort(this::mycompare); return l.get(0);"));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public void testInterfaceDefaultMethod() {
 | 
	
		
			
				|  |  | +        assumeFalse("JDK is JDK 9", Constants.JRE_IS_MINIMUM_JAVA9);
 | 
	
		
			
				|  |  |          assertEquals("bar", exec("String f(BiFunction function) { function.apply('foo', 'bar') }" + 
 | 
	
		
			
				|  |  |                                   "Map map = new HashMap(); f(map::getOrDefault)"));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      
 | 
	
		
			
				|  |  |      public void testInterfaceDefaultMethodDef() {
 | 
	
		
			
				|  |  | +        assumeFalse("JDK is JDK 9", Constants.JRE_IS_MINIMUM_JAVA9);
 | 
	
		
			
				|  |  |          assertEquals("bar", exec("String f(BiFunction function) { function.apply('foo', 'bar') }" + 
 | 
	
		
			
				|  |  |                                   "def map = new HashMap(); f(map::getOrDefault)"));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public void testMethodMissing() {
 | 
	
		
			
				|  |  | +        assumeFalse("JDK is JDK 9", Constants.JRE_IS_MINIMUM_JAVA9);
 | 
	
		
			
				|  |  |          Exception e = expectScriptThrows(IllegalArgumentException.class, () -> {
 | 
	
		
			
				|  |  |              exec("List l = [2, 1]; l.sort(Integer::bogus); return l.get(0);");
 | 
	
		
			
				|  |  |          });
 | 
	
	
		
			
				|  | @@ -185,6 +211,7 @@ public class FunctionRefTests extends ScriptTestCase {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public void testQualifiedMethodMissing() {
 | 
	
		
			
				|  |  | +        assumeFalse("JDK is JDK 9", Constants.JRE_IS_MINIMUM_JAVA9);
 | 
	
		
			
				|  |  |          Exception e = expectScriptThrows(IllegalArgumentException.class, () -> {
 | 
	
		
			
				|  |  |              exec("List l = [2, 1]; l.sort(org.joda.time.ReadableDateTime::bogus); return l.get(0);", false);
 | 
	
		
			
				|  |  |          });
 | 
	
	
		
			
				|  | @@ -192,6 +219,7 @@ public class FunctionRefTests extends ScriptTestCase {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public void testClassMissing() {
 | 
	
		
			
				|  |  | +        assumeFalse("JDK is JDK 9", Constants.JRE_IS_MINIMUM_JAVA9);
 | 
	
		
			
				|  |  |          Exception e = expectScriptThrows(IllegalArgumentException.class, () -> {
 | 
	
		
			
				|  |  |              exec("List l = [2, 1]; l.sort(Bogus::bogus); return l.get(0);", false);
 | 
	
		
			
				|  |  |          });
 | 
	
	
		
			
				|  | @@ -199,6 +227,7 @@ public class FunctionRefTests extends ScriptTestCase {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public void testQualifiedClassMissing() {
 | 
	
		
			
				|  |  | +        assumeFalse("JDK is JDK 9", Constants.JRE_IS_MINIMUM_JAVA9);
 | 
	
		
			
				|  |  |          Exception e = expectScriptThrows(IllegalArgumentException.class, () -> {
 | 
	
		
			
				|  |  |              exec("List l = [2, 1]; l.sort(org.joda.time.BogusDateTime::bogus); return l.get(0);", false);
 | 
	
		
			
				|  |  |          });
 | 
	
	
		
			
				|  | @@ -208,6 +237,7 @@ public class FunctionRefTests extends ScriptTestCase {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public void testNotFunctionalInterface() {
 | 
	
		
			
				|  |  | +        assumeFalse("JDK is JDK 9", Constants.JRE_IS_MINIMUM_JAVA9);
 | 
	
		
			
				|  |  |          IllegalArgumentException expected = expectScriptThrows(IllegalArgumentException.class, () -> {
 | 
	
		
			
				|  |  |              exec("List l = new ArrayList(); l.add(2); l.add(1); l.add(Integer::bogus); return l.get(0);");
 | 
	
		
			
				|  |  |          });
 | 
	
	
		
			
				|  | @@ -215,12 +245,14 @@ public class FunctionRefTests extends ScriptTestCase {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public void testIncompatible() {
 | 
	
		
			
				|  |  | +        assumeFalse("JDK is JDK 9", Constants.JRE_IS_MINIMUM_JAVA9);
 | 
	
		
			
				|  |  |          expectScriptThrows(BootstrapMethodError.class, () -> {
 | 
	
		
			
				|  |  |              exec("List l = new ArrayList(); l.add(2); l.add(1); l.sort(String::startsWith); return l.get(0);");
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      
 | 
	
		
			
				|  |  |      public void testWrongArity() {
 | 
	
		
			
				|  |  | +        assumeFalse("JDK is JDK 9", Constants.JRE_IS_MINIMUM_JAVA9);
 | 
	
		
			
				|  |  |          IllegalArgumentException expected = expectScriptThrows(IllegalArgumentException.class, () -> {
 | 
	
		
			
				|  |  |              exec("Optional.empty().orElseGet(String::startsWith);");
 | 
	
		
			
				|  |  |          });
 | 
	
	
		
			
				|  | @@ -228,6 +260,7 @@ public class FunctionRefTests extends ScriptTestCase {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      
 | 
	
		
			
				|  |  |      public void testWrongArityNotEnough() {
 | 
	
		
			
				|  |  | +        assumeFalse("JDK is JDK 9", Constants.JRE_IS_MINIMUM_JAVA9);
 | 
	
		
			
				|  |  |          IllegalArgumentException expected = expectScriptThrows(IllegalArgumentException.class, () -> {
 | 
	
		
			
				|  |  |              exec("List l = new ArrayList(); l.add(2); l.add(1); l.sort(String::isEmpty);");
 | 
	
		
			
				|  |  |          });
 | 
	
	
		
			
				|  | @@ -235,6 +268,7 @@ public class FunctionRefTests extends ScriptTestCase {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      
 | 
	
		
			
				|  |  |      public void testWrongArityDef() {
 | 
	
		
			
				|  |  | +        assumeFalse("JDK is JDK 9", Constants.JRE_IS_MINIMUM_JAVA9);
 | 
	
		
			
				|  |  |          IllegalArgumentException expected = expectScriptThrows(IllegalArgumentException.class, () -> {
 | 
	
		
			
				|  |  |              exec("def y = Optional.empty(); return y.orElseGet(String::startsWith);");
 | 
	
		
			
				|  |  |          });
 | 
	
	
		
			
				|  | @@ -242,6 +276,7 @@ public class FunctionRefTests extends ScriptTestCase {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      
 | 
	
		
			
				|  |  |      public void testWrongArityNotEnoughDef() {
 | 
	
		
			
				|  |  | +        assumeFalse("JDK is JDK 9", Constants.JRE_IS_MINIMUM_JAVA9);
 | 
	
		
			
				|  |  |          IllegalArgumentException expected = expectScriptThrows(IllegalArgumentException.class, () -> {
 | 
	
		
			
				|  |  |              exec("def l = new ArrayList(); l.add(2); l.add(1); l.sort(String::isEmpty);");
 | 
	
		
			
				|  |  |          });
 | 
	
	
		
			
				|  | @@ -249,6 +284,7 @@ public class FunctionRefTests extends ScriptTestCase {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public void testReturnVoid() {
 | 
	
		
			
				|  |  | +        assumeFalse("JDK is JDK 9", Constants.JRE_IS_MINIMUM_JAVA9);
 | 
	
		
			
				|  |  |          Throwable expected = expectScriptThrows(BootstrapMethodError.class, () -> {
 | 
	
		
			
				|  |  |              exec("StringBuilder b = new StringBuilder(); List l = [1, 2]; l.stream().mapToLong(b::setLength);");
 | 
	
		
			
				|  |  |          });
 | 
	
	
		
			
				|  | @@ -257,6 +293,7 @@ public class FunctionRefTests extends ScriptTestCase {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public void testReturnVoidDef() {
 | 
	
		
			
				|  |  | +        assumeFalse("JDK is JDK 9", Constants.JRE_IS_MINIMUM_JAVA9);
 | 
	
		
			
				|  |  |          Exception expected = expectScriptThrows(LambdaConversionException.class, () -> {
 | 
	
		
			
				|  |  |              exec("StringBuilder b = new StringBuilder(); def l = [1, 2]; l.stream().mapToLong(b::setLength);");
 | 
	
		
			
				|  |  |          });
 |