question: private void interpolateResultList ( ArrayList < PathParser . PathDataNode > list ) { if ( list == null || list . size ( ) <= 2 ) return ; float [ ] [ ] listPenPos = PathNodeUtils . calculatePenPosition ( list ) ; ArrayList < PathParser . PathDataNode > subList = new ArrayList < > ( ) ; int size = list . size ( ) ; PathParser . PathDataNode currentNode = null ; int i = 0 ; while ( i < size - 1 ) { currentNode = list . get ( i ) ; if ( ! isInterpolatableCommand ( currentNode . mType ) ) { i ++ ; continue ; } boolean validSequence = true ; int k = i ; for ( int j = i ; j < size && validSequence ; j ++ ) { if ( currentNode . mType == list . get ( j ) . mType ) { k = j ; if ( ! Arrays . equals ( currentNode . mParams , list . get ( j ) . mParams ) ) break ; } else validSequence = false ; } if ( k - i > 2 ) { interpolateSubList ( list . subList ( i , k + 1 ) ) ; } i ++ ; } }
target:  Apply interpolation on the result list (where possible)