Lambda cleanup

RELNOTES: None.
PiperOrigin-RevId: 160516183
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/DotExpression.java b/src/main/java/com/google/devtools/build/lib/syntax/DotExpression.java
index 4672af1..9333e29 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/DotExpression.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/DotExpression.java
@@ -13,12 +13,12 @@
 // limitations under the License.
 package com.google.devtools.build.lib.syntax;
 
-import com.google.common.base.Predicate;
-import com.google.common.collect.Iterables;
+import com.google.common.collect.Streams;
 import com.google.devtools.build.lib.events.Location;
 import com.google.devtools.build.lib.syntax.FuncallExpression.MethodDescriptor;
 import com.google.devtools.build.lib.util.SpellChecker;
 import java.io.IOException;
+import java.util.Optional;
 
 /** Syntax node for a dot expression. e.g. obj.field, but not obj.method() */
 public final class DotExpression extends Expression {
@@ -107,20 +107,13 @@
             : FuncallExpression.getMethods(objValue.getClass(), name);
 
     if (methods != null) {
-      methods =
-          Iterables.filter(
-              methods,
-              new Predicate<MethodDescriptor>() {
-                @Override
-                public boolean apply(MethodDescriptor methodDescriptor) {
-                  return methodDescriptor.getAnnotation().structField();
-                }
-              });
-      if (methods.iterator().hasNext()) {
-        MethodDescriptor method = Iterables.getOnlyElement(methods);
-        if (method.getAnnotation().structField()) {
-          return FuncallExpression.callMethod(method, name, objValue, new Object[] {}, loc, env);
-        }
+      Optional<MethodDescriptor> method =
+          Streams.stream(methods)
+              .filter(methodDescriptor -> methodDescriptor.getAnnotation().structField())
+              .findFirst();
+      if (method.isPresent() && method.get().getAnnotation().structField()) {
+        return FuncallExpression.callMethod(
+            method.get(), name, objValue, new Object[] {}, loc, env);
       }
     }
 
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Parser.java b/src/main/java/com/google/devtools/build/lib/syntax/Parser.java
index df37954..ae97362 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/Parser.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/Parser.java
@@ -568,12 +568,7 @@
 
   // arg_list ::= ( (arg ',')* arg ','? )?
   private List<Argument.Passed> parseFuncallArguments() {
-    List<Argument.Passed> arguments =
-        parseFunctionArguments(new Supplier<Argument.Passed>() {
-              @Override public Argument.Passed get() {
-                return parseFuncallArgument();
-              }
-            });
+    List<Argument.Passed> arguments = parseFunctionArguments(() -> parseFuncallArgument());
     try {
       Argument.validateFuncallArguments(arguments);
     } catch (Argument.ArgumentException e) {
@@ -1310,7 +1305,8 @@
     expect(TokenKind.DEF);
     Identifier ident = parseIdent();
     expect(TokenKind.LPAREN);
-    List<Parameter<Expression, Expression>> params = parseParameters();
+    List<Parameter<Expression, Expression>> params =
+        parseFunctionArguments(() -> parseFunctionParameter());
     FunctionSignature.WithValues<Expression, Expression> signature = functionSignature(params);
     expect(TokenKind.RPAREN);
     expect(TokenKind.COLON);
@@ -1330,15 +1326,6 @@
     }
   }
 
-  private List<Parameter<Expression, Expression>> parseParameters() {
-    return parseFunctionArguments(
-        new Supplier<Parameter<Expression, Expression>>() {
-          @Override public Parameter<Expression, Expression> get() {
-            return parseFunctionParameter();
-          }
-        });
-  }
-
   /**
    * Parse a list of Argument-s. The arguments can be of class Argument.Passed or Parameter,
    * as returned by the Supplier parseArgument (that, taking no argument, must be closed over