@@ -934,22 +934,13 @@ private Node visitWithSuccessors(Node nd, Collection<Node> successors) {
934
934
}
935
935
936
936
/**
937
- * Creates an `Collection<Node>` from the one-or-more nodes contained in `nodes`.
938
- * `nodes` is either `null`, a `Node`, or a `Collection<Node>`.
939
- */
940
- @ SuppressWarnings ("unchecked" )
941
- private Collection <Node > createCollection (Object nodes ) { // TODO: Delete usages.
942
- if (nodes == null ) return Collections .<Node >emptySet ();
943
- if (nodes instanceof Node ) return Collections .<Node >singleton ((Node ) nodes );
944
- return (Collection <Node >) nodes ;
945
- }
946
-
947
- /**
948
- * Creates an `Collection<Node>` that iterates the nodes in reverse order from the one-or-more nodes contained in `nodes`.
937
+ * Creates a new collection that contains the same elements, but is reversed.
938
+ *
939
+ * @return The reversed collection.
949
940
*/
950
- private Collection <Node > createReversedCollection ( final Object nodes ) {
951
- List <Node > list = new ArrayList <>();
952
- createCollection ( nodes ) .forEach (list ::add );
941
+ private < T > Collection <T > reverse ( Collection < T > col ) {
942
+ List <T > list = new ArrayList <>();
943
+ col .forEach (list ::add );
953
944
Collections .reverse (list );
954
945
return list ;
955
946
}
@@ -961,15 +952,27 @@ private Collection<Node> createReversedCollection(final Object nodes) {
961
952
*
962
953
* @return The earliest non-null (collection of) node from `nodes`.
963
954
*/
964
- private Collection <Node > visitSequence (Object ... nodes ) {
965
- Object fst = nodes [nodes .length - 1 ];
966
- for (int i = nodes .length - 2 ; i >= 0 ; --i ) {
967
- for (Node node : createReversedCollection (nodes [i ])) {
968
- Node ffst = visitWithSuccessors (node , createCollection (fst ));
969
- if (ffst != null ) fst = ffst ;
955
+ @ SuppressWarnings ("unchecked" )
956
+ private Collection <Node > visitSequence (Object ... rawNodes ) {
957
+ List <Collection <Node >> nodes = new ArrayList <>();
958
+ for (Object node : rawNodes ) {
959
+ if (node == null ) {
960
+ nodes .add (Collections .<Node >emptySet ());
961
+ } else if (node instanceof Node ) {
962
+ nodes .add (Collections .<Node >singleton ((Node ) node ));
963
+ } else {
964
+ nodes .add ((Collection <Node >)node );
965
+ }
966
+ }
967
+
968
+ Collection <Node > fst = nodes .get (nodes .size () - 1 );
969
+ for (int i = nodes .size () - 2 ; i >= 0 ; --i ) {
970
+ for (Node node : reverse (nodes .get (i ))) {
971
+ Node ffst = visitWithSuccessors (node , fst );
972
+ if (ffst != null ) fst = Collections .<Node >singleton (ffst );
970
973
}
971
974
}
972
- return createCollection ( fst ) ;
975
+ return fst ;
973
976
}
974
977
975
978
@ Override
0 commit comments