question: public TaggedValueIterator ( final String aLine , final boolean attemptFirstWord , final String ... tags ) { this . aLine = aLine ; this . attemptFirstWord = attemptFirstWord ; this . tags = tags ; tagPos = 0 ; nextResult = getNextResult ( ) ; if ( attemptFirstWord ) { int a = 0 ; while ( a < aLine . length ( ) ) { if ( aLine . charAt ( a ) == '>' || aLine . charAt ( a ) == '@' || Character . isWhitespace ( aLine . charAt ( a ) ) ) a ++ ; else break ; } int b = a + 1 ; while ( b < aLine . length ( ) ) { if ( Character . isLetterOrDigit ( aLine . charAt ( b ) ) || aLine . charAt ( b ) == '_' ) b ++ ; else break ; } if ( b - a > 4 ) { nextResult = aLine . substring ( a , b ) ; } tagPos = b ; } }
target:  iterator over all values following an occurrence of tag in aLine. Example: aLine= gi|4444|gi|5555  and tag=gi|  with return 4444 and then 5555 Value consists of letters, digits or underscore