METHOD_0 ( ) { java . lang . String [ ] IDENT_0 = new java . lang . String [ ] { STRING_0 , STRING_1 , STRING_2 , STRING_1 } ; java . util . List < java . lang . Integer > res = IDENT_1 . METHOD_0 ( STRING_3 , IDENT_0 ) ; "<AssertPlaceHolder>" ; } METHOD_0 ( java . lang . String , java . lang . String [ ] ) { java . util . List < java . lang . Integer > res = new java . util . ArrayList ( ) ; if ( ( ( null == s ) || ( null == IDENT_0 ) ) || ( ( IDENT_0 . length ) == 0 ) ) { return res ; } int IDENT_2 = IDENT_0 . length ; int len = IDENT_0 [ 0 ] . length ( ) ; int IDENT_3 = IDENT_2 * len ; int IDENT_4 = s . length ( ) ; java . util . Map < java . lang . String , java . lang . Integer > map = new java . util . HashMap ( ) ; for ( java . lang . String IDENT_5 : IDENT_0 ) { map . put ( IDENT_5 , ( ( map . METHOD_1 ( IDENT_5 , 0 ) ) + 1 ) ) ; } for ( int i = 0 ; i < len ; i ++ ) { java . util . HashMap < java . lang . String , java . lang . Integer > IDENT_6 = new java . util . HashMap ( ) ; for ( int j = i , count = 0 , start = i ; ( j + len ) <= IDENT_4 ; j += len ) { if ( ( start + len ) > IDENT_4 ) break ; java . lang . String IDENT_5 = s . substring ( j , ( j + len ) ) ; if ( ! ( map . containsKey ( IDENT_5 ) ) ) { IDENT_6 . METHOD_2 ( ) ; count = 0 ; start = j + len ; } else { if ( j == ( start + IDENT_3 ) ) { java . lang . String IDENT_7 = s . substring ( start , ( start + len ) ) ; start += len ; int val = IDENT_6 . get ( IDENT_7 ) ; if ( val == 1 ) IDENT_6 . remove ( IDENT_7 ) ; else IDENT_6 . put ( IDENT_7 , ( val - 1 ) ) ; if ( ( val - 1 ) >= ( map . get ( IDENT_7 ) ) ) count OP_0 ; } IDENT_6 . put ( IDENT_5 , ( ( IDENT_6 . METHOD_1 ( IDENT_5 , 0 ) ) + 1 ) ) ; if ( ( IDENT_6 . get ( IDENT_5 ) ) > ( map . get ( IDENT_5 ) ) ) count ++ ; if ( ( count == 0 ) && ( ( start + IDENT_3 ) == ( j + len ) ) ) { res . add ( start ) ; } } } } return res ; }
org . junit . Assert . assertEquals ( 8 , ( ( int ) ( res . get ( 0 ) ) ) )