You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@joshua.apache.org by to...@apache.org on 2016/09/26 12:21:39 UTC

[2/3] incubator-joshua git commit: static analysis based code improvements on ui package

static analysis based code improvements on ui package


Project: http://git-wip-us.apache.org/repos/asf/incubator-joshua/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-joshua/commit/8e396921
Tree: http://git-wip-us.apache.org/repos/asf/incubator-joshua/tree/8e396921
Diff: http://git-wip-us.apache.org/repos/asf/incubator-joshua/diff/8e396921

Branch: refs/heads/master
Commit: 8e396921b6362d7b14c87388879698186a4cc88c
Parents: 03f4da7
Author: Tommaso Teofili <to...@apache.org>
Authored: Mon Sep 26 14:14:15 2016 +0200
Committer: Tommaso Teofili <to...@apache.org>
Committed: Mon Sep 26 14:14:15 2016 +0200

----------------------------------------------------------------------
 .../ui/tree_visualizer/DerivationTree.java      |  7 +--
 .../DerivationTreeTransformer.java              | 21 ++++---
 .../ui/tree_visualizer/DerivationViewer.java    | 63 +++++++++-----------
 .../tree_visualizer/DerivationViewerApplet.java |  1 -
 .../ui/tree_visualizer/browser/Browser.java     | 27 +++------
 .../browser/DerivationTreeFrame.java            | 59 +++++++-----------
 .../browser/TranslationInfo.java                |  6 +-
 .../joshua/ui/tree_visualizer/tree/Tree.java    | 10 ++--
 8 files changed, 79 insertions(+), 115 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/8e396921/src/main/java/org/apache/joshua/ui/tree_visualizer/DerivationTree.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/ui/tree_visualizer/DerivationTree.java b/src/main/java/org/apache/joshua/ui/tree_visualizer/DerivationTree.java
index f09a40a..fe9236c 100644
--- a/src/main/java/org/apache/joshua/ui/tree_visualizer/DerivationTree.java
+++ b/src/main/java/org/apache/joshua/ui/tree_visualizer/DerivationTree.java
@@ -53,7 +53,7 @@ public class DerivationTree extends DirectedOrderedSparseMultigraph<Node, Deriva
     for (Tree.Node child : tn.children()) {
       Node childNode = new Node(child.label(), false);
       addVertex(childNode);
-      addEdge(new DerivationTreeEdge(false), new Pair<Node>(n, childNode), EdgeType.DIRECTED);
+      addEdge(new DerivationTreeEdge(false), new Pair<>(n, childNode), EdgeType.DIRECTED);
       addSubtreeRootedAt(childNode, child);
     }
   }
@@ -74,7 +74,7 @@ public class DerivationTree extends DirectedOrderedSparseMultigraph<Node, Deriva
         insertSourceLeaf(n, sourceWords, nextUncoveredIndex, sourceStartIndex);
       }
       Node childNode = new Node(child.label(), true);
-      addEdge(new DerivationTreeEdge(true), new Pair<Node>(n, childNode), EdgeType.DIRECTED);
+      addEdge(new DerivationTreeEdge(true), new Pair<>(n, childNode), EdgeType.DIRECTED);
       nextUncoveredIndex = sourceEndIndex;
       addSourceSubtreeRootedAt(childNode, child, sourceStartIndex, sourceEndIndex, sourceWords);
     }
@@ -90,7 +90,7 @@ public class DerivationTree extends DirectedOrderedSparseMultigraph<Node, Deriva
       label += " " + leafWords[i];
     }
     Node childNode = new Node(label, true);
-    addEdge(new DerivationTreeEdge(true), new Pair<Node>(n, childNode), EdgeType.DIRECTED);
+    addEdge(new DerivationTreeEdge(true), new Pair<>(n, childNode), EdgeType.DIRECTED);
   }
 
   public void setSubtreeHighlight(Node n, boolean b) {
@@ -98,6 +98,5 @@ public class DerivationTree extends DirectedOrderedSparseMultigraph<Node, Deriva
     for (Node s : getSuccessors(n)) {
       setSubtreeHighlight(s, b);
     }
-    return;
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/8e396921/src/main/java/org/apache/joshua/ui/tree_visualizer/DerivationTreeTransformer.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/ui/tree_visualizer/DerivationTreeTransformer.java b/src/main/java/org/apache/joshua/ui/tree_visualizer/DerivationTreeTransformer.java
index 3e4010f..00f31e5 100644
--- a/src/main/java/org/apache/joshua/ui/tree_visualizer/DerivationTreeTransformer.java
+++ b/src/main/java/org/apache/joshua/ui/tree_visualizer/DerivationTreeTransformer.java
@@ -27,23 +27,23 @@ import edu.uci.ics.jung.algorithms.layout.TreeLayout;
 import edu.uci.ics.jung.graph.DelegateForest;
 
 public class DerivationTreeTransformer implements Transformer<Node, Point2D> {
-  private TreeLayout<Node, DerivationTreeEdge> treeLayout;
-  private DerivationTree graph;
-  private Node root;
-  private Node sourceRoot;
+  private final TreeLayout<Node, DerivationTreeEdge> treeLayout;
+  private final DerivationTree graph;
+  private final Node root;
+  private final Node sourceRoot;
 
-  private boolean isAnchored;
+  private final boolean isAnchored;
   private Point2D anchorPoint;
 
-  private double Y_DIST;
-  private double X_DIST;
+  private final double Y_DIST;
+  private final double X_DIST;
 
 
   public DerivationTreeTransformer(DerivationTree t, Dimension d, boolean isAnchored) {
     this.isAnchored = isAnchored;
     anchorPoint = new Point2D.Double(0, 0);
     graph = t;
-    DelegateForest<Node, DerivationTreeEdge> del = new DelegateForest<Node, DerivationTreeEdge>(t);
+    DelegateForest<Node, DerivationTreeEdge> del = new DelegateForest<>(t);
     del.setRoot(t.root);
     del.setRoot(t.sourceRoot);
     root = t.root;
@@ -55,7 +55,7 @@ public class DerivationTreeTransformer implements Transformer<Node, Point2D> {
     }
     X_DIST = d.getWidth() / leafCount;
 
-    treeLayout = new TreeLayout<Node, DerivationTreeEdge>(del, (int) Math.round(X_DIST));
+    treeLayout = new TreeLayout<>(del, (int) Math.round(X_DIST));
   }
 
   public Point2D transform(Node n) {
@@ -90,8 +90,7 @@ public class DerivationTreeTransformer implements Transformer<Node, Point2D> {
   public Dimension getSize() {
     int height = (int) Math.round(2 * Y_DIST * (1 + distanceToLeaf(root)));
     int width = (int) Math.round(2 * treeLayout.transform(root).getX());
-    Dimension ret = new Dimension(width, height);
-    return ret;
+    return new Dimension(width, height);
   }
 
   public Point2D getAnchorPosition(DerivationViewer.AnchorType type) {

http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/8e396921/src/main/java/org/apache/joshua/ui/tree_visualizer/DerivationViewer.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/ui/tree_visualizer/DerivationViewer.java b/src/main/java/org/apache/joshua/ui/tree_visualizer/DerivationViewer.java
index 8c6151d..722a32f 100644
--- a/src/main/java/org/apache/joshua/ui/tree_visualizer/DerivationViewer.java
+++ b/src/main/java/org/apache/joshua/ui/tree_visualizer/DerivationViewer.java
@@ -45,32 +45,30 @@ public class DerivationViewer extends VisualizationViewer<Node, DerivationTreeEd
   public static final int DEFAULT_HEIGHT = 500;
   public static final int DEFAULT_WIDTH = 500;
   public static final Color SRC = Color.WHITE;
-  private Color TGT;
+  private final Color TGT;
 
   public static final Color HIGHLIGHT = Color.pink;
 
-  public static enum AnchorType {
+  public enum AnchorType {
     ANCHOR_ROOT, ANCHOR_LEFTMOST_LEAF
-  };
+  }
 
-  private AnchorType anchorStyle;
-  private Point2D anchorPoint;
+  private final AnchorType anchorStyle;
+  private final Point2D anchorPoint;
 
   public DerivationViewer(DerivationTree g, Dimension d, Color targetColor, AnchorType anchor) {
-    super(new CircleLayout<Node, DerivationTreeEdge>(g));
+    super(new CircleLayout<>(g));
     anchorStyle = anchor;
     DerivationTreeTransformer dtt = new DerivationTreeTransformer(g, d, false);
-    StaticLayout<Node, DerivationTreeEdge> derivationLayout =
-        new StaticLayout<Node, DerivationTreeEdge>(g, dtt);
+    StaticLayout<Node, DerivationTreeEdge> derivationLayout = new StaticLayout<>(g, dtt);
     // derivationLayout.setSize(dtt.getSize());
     setGraphLayout(derivationLayout);
     scaleToLayout(new LayoutScalingControl());
     // g.addCorrespondences();
     setPreferredSize(new Dimension(DEFAULT_HEIGHT, DEFAULT_WIDTH));
-    getRenderContext().setVertexLabelTransformer(new ToStringLabeller<Node>());
+    getRenderContext().setVertexLabelTransformer(new ToStringLabeller<>());
 
-    DefaultModalGraphMouse<Node, DerivationTreeEdge> graphMouse =
-        new DefaultModalGraphMouse<Node, DerivationTreeEdge>();
+    DefaultModalGraphMouse<Node, DerivationTreeEdge> graphMouse = new DefaultModalGraphMouse<>();
     graphMouse.setMode(ModalGraphMouse.Mode.TRANSFORMING);
     setGraphMouse(graphMouse);
     addKeyListener(graphMouse.getModeKeyListener());
@@ -88,10 +86,10 @@ public class DerivationViewer extends VisualizationViewer<Node, DerivationTreeEd
   public void setGraph(DerivationTree tree) {
     DerivationTreeTransformer dtt = new DerivationTreeTransformer(tree, getSize(), true);
     dtt.setAnchorPoint(anchorStyle, anchorPoint);
-    setGraphLayout(new StaticLayout<Node, DerivationTreeEdge>(tree, dtt));
+    setGraphLayout(new StaticLayout<>(tree, dtt));
   }
 
-  private Transformer<Node, Paint> vp = new Transformer<Node, Paint>() {
+  private final Transformer<Node, Paint> vp = new Transformer<Node, Paint>() {
     public Paint transform(Node n) {
       if (n.isHighlighted) return HIGHLIGHT;
       if (n.isSource)
@@ -101,28 +99,23 @@ public class DerivationViewer extends VisualizationViewer<Node, DerivationTreeEd
     }
   };
 
-  private static Transformer<DerivationTreeEdge, Stroke> es =
-      new Transformer<DerivationTreeEdge, Stroke>() {
-        public Stroke transform(DerivationTreeEdge e) {
-          if (e.pointsToSource) {
-            return new BasicStroke(1.0f,
-								                   BasicStroke.CAP_BUTT,
-																	 BasicStroke.JOIN_MITER,
-																	 10.0f,
-																	 new float[] {10.0f},
-																	 0.0f);
-					} else {
-            return new BasicStroke(1.0f);
-					}
-        }
-      };
-
-  private static Transformer<Node, Shape> ns = new Transformer<Node, Shape>() {
-    public Shape transform(Node n) {
-      JLabel x = new JLabel();
-      double len = x.getFontMetrics(x.getFont()).stringWidth(n.toString());
-      double margin = 5.0;
-      return new Rectangle2D.Double((len + margin) / (-2), 0, len + 2 * margin, 20);
+  private static final Transformer<DerivationTreeEdge, Stroke> es = e -> {
+    if (e.pointsToSource) {
+      return new BasicStroke(1.0f,
+                             BasicStroke.CAP_BUTT,
+                             BasicStroke.JOIN_MITER,
+                             10.0f,
+                             new float[] {10.0f},
+                             0.0f);
+    } else {
+      return new BasicStroke(1.0f);
     }
   };
+
+  private static final Transformer<Node, Shape> ns = n -> {
+    JLabel x1 = new JLabel();
+    double len = x1.getFontMetrics(x1.getFont()).stringWidth(n.toString());
+    double margin = 5.0;
+    return new Rectangle2D.Double((len + margin) / (-2), 0, len + 2 * margin, 20);
+  };
 }

http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/8e396921/src/main/java/org/apache/joshua/ui/tree_visualizer/DerivationViewerApplet.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/ui/tree_visualizer/DerivationViewerApplet.java b/src/main/java/org/apache/joshua/ui/tree_visualizer/DerivationViewerApplet.java
index d6e7a35..10febec 100644
--- a/src/main/java/org/apache/joshua/ui/tree_visualizer/DerivationViewerApplet.java
+++ b/src/main/java/org/apache/joshua/ui/tree_visualizer/DerivationViewerApplet.java
@@ -46,6 +46,5 @@ public class DerivationViewerApplet extends JApplet {
         getSize(),
         Color.red,
         DerivationViewer.AnchorType.ANCHOR_ROOT));
-    return;
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/8e396921/src/main/java/org/apache/joshua/ui/tree_visualizer/browser/Browser.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/ui/tree_visualizer/browser/Browser.java b/src/main/java/org/apache/joshua/ui/tree_visualizer/browser/Browser.java
index ee22b94..c91f2bf 100644
--- a/src/main/java/org/apache/joshua/ui/tree_visualizer/browser/Browser.java
+++ b/src/main/java/org/apache/joshua/ui/tree_visualizer/browser/Browser.java
@@ -84,14 +84,13 @@ public class Browser {
     if (argv.length > 2) {
       translationPaths = Arrays.copyOfRange(argv, 2, argv.length);
     }
-    translations = new ArrayList<TranslationInfo>();
+    translations = new ArrayList<>();
     readSourcesFromPath(sourcePath);
     readReferencesFromPath(referencePath);
     for (String tp : translationPaths) {
       readTranslationsFromPath(tp);
     }
     initializeChooserFrame();
-    return;
   }
 
   private static void readSourcesFromPath(String path) throws IOException {
@@ -152,23 +151,18 @@ public class Browser {
 
     searchBox = new JTextField("search");
     searchBox.getDocument().addDocumentListener(new SearchListener());
-    searchBox.addActionListener(new ActionListener() {
-      public void actionPerformed(ActionEvent e) {
-        final int selectedIndex = oneBestList.getSelectedIndex();
-        Browser.search(selectedIndex < 0 ? 0 : selectedIndex + 1);
-      }
+    searchBox.addActionListener(e -> {
+      final int selectedIndex = oneBestList.getSelectedIndex();
+      Browser.search(selectedIndex < 0 ? 0 : selectedIndex + 1);
     });
     oneBestList = new JList(new DefaultListModel());
     oneBestList.setFixedCellWidth(200);
     oneBestList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
     // oneBestList.setCellRenderer(new DerivationBrowserListCellRenderer());
 
-    oneBestList.addListSelectionListener(new ListSelectionListener() {
-      public void valueChanged(ListSelectionEvent e) {
-        for (DerivationTreeFrame frame : activeFrame) {
-          frame.drawGraph(translations.get(oneBestList.getSelectedIndex()));
-        }
-        return;
+    oneBestList.addListSelectionListener(e -> {
+      for (DerivationTreeFrame frame : activeFrame) {
+        frame.drawGraph(translations.get(oneBestList.getSelectedIndex()));
       }
     });
     chooserFrame.getContentPane().add(searchBox, BorderLayout.NORTH);
@@ -178,12 +172,11 @@ public class Browser {
     chooserFrame.setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
     chooserFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
-    activeFrame = new ArrayList<DerivationTreeFrame>();
+    activeFrame = new ArrayList<>();
     int numNBestFiles = translations.get(0).translations().size();
     for (int i = 0; i < numNBestFiles; i++)
       activeFrame.add(new DerivationTreeFrame(i, oneBestList));
     chooserFrame.setVisible(true);
-    return;
   }
 
   /**
@@ -195,7 +188,6 @@ public class Browser {
     for (TranslationInfo ti : translations) {
       oneBestListModel.addElement(ti.reference());
     }
-    return;
   }
 
   private static void search(int fromIndex) {
@@ -203,7 +195,7 @@ public class Browser {
     DefaultListModel oneBestListModel = (DefaultListModel) oneBestList.getModel();
     for (int i = fromIndex; i < oneBestListModel.getSize(); i++) {
       String reference = (String) oneBestListModel.getElementAt(i);
-      if (reference.indexOf(query) != -1) {
+      if (reference.contains(query)) {
         // found the query
         oneBestList.setSelectedIndex(i);
         oneBestList.ensureIndexIsVisible(i);
@@ -224,7 +216,6 @@ public class Browser {
     public void removeUpdate(DocumentEvent e) {
       final String query = searchBox.getText();
       if (query.equals("")) {
-        return;
       } else {
         insertUpdate(e);
       }

http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/8e396921/src/main/java/org/apache/joshua/ui/tree_visualizer/browser/DerivationTreeFrame.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/ui/tree_visualizer/browser/DerivationTreeFrame.java b/src/main/java/org/apache/joshua/ui/tree_visualizer/browser/DerivationTreeFrame.java
index 56366a0..e73043e 100644
--- a/src/main/java/org/apache/joshua/ui/tree_visualizer/browser/DerivationTreeFrame.java
+++ b/src/main/java/org/apache/joshua/ui/tree_visualizer/browser/DerivationTreeFrame.java
@@ -63,32 +63,32 @@ class DerivationTreeFrame extends JFrame {
   /**
    * A panel holding the extra information about the derivation.
    */
-  private JPanel informationPanel;
+  private final JPanel informationPanel;
 
   /**
    * A label holding the current source sentence.
    */
-  private JLabel sourceLabel;
+  private final JLabel sourceLabel;
 
   /**
    * A label holding the reference translation of the current source sentence.
    */
-  private JLabel referenceLabel;
+  private final JLabel referenceLabel;
 
   /**
    * A label holding the one-best translation of the current source sentence.
    */
-  private JLabel oneBestLabel;
+  private final JLabel oneBestLabel;
 
   /**
    * A panel that holds the buttons, as well as labels to show which derivation
    * is currently being displayed.
    */
-  private JPanel controlPanel;
+  private final JPanel controlPanel;
   /**
    * A panel used to display the derivation tree itself.
    */
-  private JPanel viewPanel;
+  private final JPanel viewPanel;
 
   /**
    * This component displays the derivation tree's JUNG graph.
@@ -107,9 +107,9 @@ class DerivationTreeFrame extends JFrame {
   /**
    * Color to use to render target-side trees.
    */
-  private Color targetColor;
+  private final Color targetColor;
 
-  private JList mainList;
+  private final JList mainList;
 
   /**
    * The default constructor.
@@ -166,7 +166,6 @@ class DerivationTreeFrame extends JFrame {
     controlPanel.add(previousSource, BorderLayout.WEST);
     controlPanel.add(nextSource, BorderLayout.EAST);
     controlPanel.add(informationButton, BorderLayout.CENTER);
-    return;
   }
 
   /**
@@ -177,36 +176,26 @@ class DerivationTreeFrame extends JFrame {
     previousSource = new JButton("<");
     informationButton = new JButton("More Information");
 
-    nextSource.addActionListener(new ActionListener() {
-      public void actionPerformed(ActionEvent e) {
-        int index = mainList.getSelectedIndex();
-        mainList.setSelectedIndex(index + 1);
-        return;
-      }
+    nextSource.addActionListener(e -> {
+      int index = mainList.getSelectedIndex();
+      mainList.setSelectedIndex(index + 1);
     });
-    previousSource.addActionListener(new ActionListener() {
-      public void actionPerformed(ActionEvent e) {
-        int index = mainList.getSelectedIndex();
-        if (index > 0) {
-          mainList.setSelectedIndex(index - 1);
-        }
-        return;
+    previousSource.addActionListener(e -> {
+      int index = mainList.getSelectedIndex();
+      if (index > 0) {
+        mainList.setSelectedIndex(index - 1);
       }
     });
-    informationButton.addActionListener(new ActionListener() {
-      public void actionPerformed(ActionEvent e) {
-        JButton source = (JButton) e.getSource();
-        if (informationPanel.isVisible()) {
-          source.setText("More Information");
-          informationPanel.setVisible(false);
-        } else {
-          source.setText("Less Information");
-          informationPanel.setVisible(true);
-        }
-        return;
+    informationButton.addActionListener(e -> {
+      JButton source = (JButton) e.getSource();
+      if (informationPanel.isVisible()) {
+        source.setText("More Information");
+        informationPanel.setVisible(false);
+      } else {
+        source.setText("Less Information");
+        informationPanel.setVisible(true);
       }
     });
-    return;
   }
 
   /**
@@ -235,7 +224,6 @@ class DerivationTreeFrame extends JFrame {
     dv.revalidate();
     repaint();
     getContentPane().repaint();
-    return;
   }
 
   /**
@@ -248,6 +236,5 @@ class DerivationTreeFrame extends JFrame {
     setTitle(getTitle() + " (fixed)");
     nextSource.setEnabled(false);
     previousSource.setEnabled(false);
-    return;
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/8e396921/src/main/java/org/apache/joshua/ui/tree_visualizer/browser/TranslationInfo.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/ui/tree_visualizer/browser/TranslationInfo.java b/src/main/java/org/apache/joshua/ui/tree_visualizer/browser/TranslationInfo.java
index e23a89d..2b89229 100644
--- a/src/main/java/org/apache/joshua/ui/tree_visualizer/browser/TranslationInfo.java
+++ b/src/main/java/org/apache/joshua/ui/tree_visualizer/browser/TranslationInfo.java
@@ -26,10 +26,10 @@ import org.apache.joshua.ui.tree_visualizer.tree.Tree;
 class TranslationInfo {
   private String sourceSentence;
   private String reference;
-  private ArrayList<Tree> translations;
+  private final ArrayList<Tree> translations;
 
   public TranslationInfo() {
-    translations = new ArrayList<Tree>();
+    translations = new ArrayList<>();
   }
 
   public String sourceSentence() {
@@ -38,7 +38,6 @@ class TranslationInfo {
 
   public void setSourceSentence(String src) {
     sourceSentence = src;
-    return;
   }
 
   public String reference() {
@@ -47,7 +46,6 @@ class TranslationInfo {
 
   public void setReference(String ref) {
     reference = ref;
-    return;
   }
 
   public List<Tree> translations() {

http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/8e396921/src/main/java/org/apache/joshua/ui/tree_visualizer/tree/Tree.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/ui/tree_visualizer/tree/Tree.java b/src/main/java/org/apache/joshua/ui/tree_visualizer/tree/Tree.java
index 662544b..9c561f4 100644
--- a/src/main/java/org/apache/joshua/ui/tree_visualizer/tree/Tree.java
+++ b/src/main/java/org/apache/joshua/ui/tree_visualizer/tree/Tree.java
@@ -24,6 +24,7 @@ import java.util.regex.Matcher;
 import java.util.List;
 import java.util.ArrayList;
 import java.util.Comparator;
+import java.util.stream.Collectors;
 
 /**
  * A class to represent the target-side tree produced by decoding using Joshua
@@ -126,7 +127,7 @@ public class Tree {
   }
 
   private void initialize(String [] tokens) {
-    final Stack<Integer> stack = new Stack<Integer>();
+    final Stack<Integer> stack = new Stack<>();
     int nodeIndex = 0;
     for (String token : tokens) {
       final Matcher matcher = NONTERMINAL_PATTERN.matcher(token);
@@ -177,7 +178,7 @@ public class Tree {
   }
 
   private List<Integer> childIndices(int index) {
-    List<Integer> result = new ArrayList<Integer>();
+    List<Integer> result = new ArrayList<>();
     int remainingChildren = numChildren[index];
     int childIndex = index + 1;
     while (remainingChildren > 0) {
@@ -252,10 +253,7 @@ public class Tree {
     }
 
     public List<Node> children() {
-      List<Node> result = new ArrayList<Node>();
-      for (int j : childIndices(index)) {
-        result.add(new Node(j));
-      }
+      List<Node> result = childIndices(index).stream().map(Node::new).collect(Collectors.toList());
       return result;
     }