package io.github.mattthomson.depijp.impatient;

import com.google.common.collect.ImmutableList;
import io.github.mattthomson.depijp.DePijpFlow;
import io.github.mattthomson.depijp.PijpBuilder;
import io.github.mattthomson.depijp.tap.TsvDePijpTap;

import java.util.Arrays;
import java.util.List;

public class Part2 implements DePijpFlow {
    @Override
    public void flow(PijpBuilder pijpBuilder, String[] args) {
        pijpBuilder
                .read(new TsvDePijpTap(args[0], 2))

                .map(line -> line.get(1))
                .flatMap(text -> Arrays.stream(text.split("[ \\[\\]\\(\\),.]")))

                .groupBy(x -> x)
                .count()

                .map(kv -> (List<String>) ImmutableList.of(kv.getKey(), kv.getValue().toString()))

                .write(new TsvDePijpTap(args[1], 2));
    }
}

@@ -53,47 +53,47 @@
 ort 
-com.google.common.collect.ImmutableList
+io.github.mattthomson.depijp.DePijpFlow
 ;%0Aim
@@ -122,34 +122,32 @@
 mson.depijp.
-DePijpFlow
+KeyValue
 ;%0Aimport io.
@@ -268,31 +268,8 @@
 ays;
-%0Aimport java.util.List;
 %0A%0Apu
@@ -463,50 +463,8 @@
 ))%0A%0A
-                .map(line -%3E line.get(1))%0A
     
@@ -484,20 +484,20 @@
 flatMap(
-text
+line
  -%3E Arra
@@ -510,12 +510,19 @@
 eam(
-text
+line.get(1)
 .spl
@@ -543,25 +543,24 @@
 (%5C%5C),.%5D%22)))%0A
-%0A
             
@@ -573,17 +573,9 @@
 roup
-By(x -%3E x
+(
 )%0A  
@@ -597,17 +597,16 @@
 count()%0A
-%0A
         
@@ -622,81 +622,26 @@
 map(
-kv -%3E (List%3CString%3E) ImmutableList.of(kv.getKey(), kv.get
+Key
 Value
-().
+::
 toString
 ()))
@@ -640,11 +640,12 @@
 ring
-())
+List
 )%0A%0A 

Use upstream enhancements.