Buggy code:
Parser ( Parser p , String text ) { } final Logger logger ; final Properties properties ; InfoMap infoMap = null ; InfoMap leafInfoMap = null ; TokenIndexer tokens = null ; String lineSeparator = null ; String translate ( String text ) { } void containers ( Context context , DeclarationList declList ) throws ParserException { } TemplateMap template ( Context context ) throws ParserException { } Type [ ] templateArguments ( Context context ) throws ParserException { } Type type ( Context context ) throws ParserException { Type type = new Type ( ) ; ArrayList < Attribute > attributes = new ArrayList < Attribute > ( ) ; for ( Token token = tokens . get ( ) ; ! ( token . match ( EOF ) ) ; token = tokens . next ( ) ) { if ( token . match ( "::" ) ) { type . cppName += token ; } else if ( token . match ( '<' ) ) { type . arguments = templateArguments ( context ) ; type . cppName += "<" ; String separator = "" ; for ( Type t : type . arguments ) { type . cppName += separator ; Info info = infoMap . getFirst ( t . cppName ) ; String s = ( ( info != null ) && ( ( info . cppTypes ) != null ) ) ? info . cppTypes [ 0 ] : t . cppName ; if ( t . constValue ) { s = "const<seq2seq4repair_space>" + s ; } if ( t . constPointer ) { s = s + "<seq2seq4repair_space>const" ; } for ( int i = 0 ; i < ( t . indirections ) ; i ++ ) { s += "*" ; } if ( t . reference ) { s += "&" ; } type . cppName += s ; separator = "," ; } type . cppName += ( type . cppName . endsWith ( ">" ) ) ? "<seq2seq4repair_space>>" : ">" ; } else if ( token . match ( CONST ) ) { if ( ( type . cppName . length ( ) ) == 0 ) { type . constValue = true ; } else { type . constPointer = true ; } } else if ( token . match ( '*' ) ) { ( type . indirections ) ++ ; tokens . next ( ) ; break ; } else if ( token . match ( '&' ) ) { type . reference = true ; tokens . next ( ) ; break ; } else if ( token . match ( '~' ) ) { type . destructor = true ; } else if ( token . match ( STATIC ) ) { type . staticMember = true ; } else if ( token . match ( OPERATOR ) ) { if ( ( type . cppName . length ( ) ) == 0 ) { type . operator = true ; continue ; } else if ( type . cppName . endsWith ( "::" ) ) { type . operator = true ; tokens . next ( ) ; break ; } else { break ; } } else if ( token . match ( FRIEND ) ) { type . friend = true ; } else if ( token . match ( VIRTUAL ) ) { type . virtual = true ; } else if ( token . match ( ENUM , EXPLICIT , EXTERN , INLINE , CLASS , INTERFACE , STRUCT , UNION , TYPEDEF , TYPENAME , USING ) ) { continue ; } else <START_BUG> if ( token . match ( ( ( Object [ ] ) ( simpleTypes ) ) ) ) { <END_BUG> type . cppName += ( token . value ) + "<seq2seq4repair_space>" ; type . simple = true ; } else if ( token . match ( IDENTIFIER ) ) { int backIndex = tokens . index ; Attribute attr = attribute ( ) ; if ( ( attr != null ) && ( attr . annotation ) ) { ( tokens . index ) -- ; type . annotations += attr . javaName ; attributes . add ( attr ) ; } else { tokens . index = backIndex ; if ( ( ( type . cppName . length ( ) ) == 0 ) || ( type . cppName . endsWith ( "::" ) ) ) { type . cppName += token . value ; } else { Info info = infoMap . getFirst ( tokens . get ( 1 ) . value ) ; if ( ( ( info != null ) && ( ( info . annotations ) != null ) ) || ( ! ( tokens . get ( 1 ) . match ( '*' , '&' , IDENTIFIER , CONST ) ) ) ) { break ; } } } } else { if ( token . match ( '}' ) ) { type . anonymous = true ; tokens . next ( ) ; } break ; } } if ( ( attributes . size ( ) ) > 0 ) { type . attributes = attributes . toArray ( new Attribute [ attributes . size ( ) ] ) ; } type . cppName = type . cppName . trim ( ) ; if ( "..." . equals ( tokens . get ( ) . value ) ) { tokens . next ( ) ; return null ; } else if ( type . operator ) { for ( Token token = tokens . get ( ) ; ! ( token . match ( EOF , '(' ) ) ; token = tokens . next ( ) ) { type . cppName += token ; } }

Fix:
if ( ( token . match ( ( ( Object [ ] ) ( simpleTypes ) ) ) ) && ( ( ( type . cppName . length ( ) ) == 0 ) || ( type . simple ) ) ) {