Buggy code:
public class AsmHierarchyBuilder extends ASTVisitor { protected AsmElementFormatter formatter = new AsmElementFormatter ( ) ; protected AjBuildConfig buildConfig ; protected Stack stack ; private CompilationResult currCompilationResult ; public void buildStructureForCompilationUnit ( CompilationUnitDeclaration cuDeclaration , IHierarchy structureModel , AjBuildConfig buildConfig ) { } private void internalBuild ( CompilationUnitDeclaration unit , IHierarchy structureModel ) { } private IProgramElement genAddToNode ( CompilationUnitDeclaration unit , IHierarchy structureModel ) { } public boolean visit ( TypeDeclaration typeDeclaration , CompilationUnitScope scope ) { } public void endVisit ( TypeDeclaration typeDeclaration , CompilationUnitScope scope ) { } public boolean visit ( TypeDeclaration memberTypeDeclaration , ClassScope scope ) { } public void endVisit ( TypeDeclaration memberTypeDeclaration , ClassScope scope ) { } public boolean visit ( TypeDeclaration memberTypeDeclaration , BlockScope scope ) { } public void endVisit ( TypeDeclaration memberTypeDeclaration , BlockScope scope ) { } private String genSourceSignature ( TypeDeclaration typeDeclaration ) { } private IProgramElement findEnclosingClass ( Stack stack ) { } public boolean visit ( MethodDeclaration methodDeclaration , ClassScope scope ) { } private void addUsesPointcutRelationsForNode ( IProgramElement peNode , List namedPointcuts , MethodDeclaration declaration ) { } private ResolvedMember getPointcutDeclaration ( ReferencePointcut rp , MethodDeclaration declaration ) { } private List genNamedPointcuts ( MethodDeclaration methodDeclaration ) { } private void addAllNamed ( Pointcut pointcut , List pointcuts ) { } private String genSourceSignature ( MethodDeclaration methodDeclaration ) { } protected void genBytecodeInfo ( MethodDeclaration methodDeclaration , IProgramElement peNode ) { } public void endVisit ( MethodDeclaration methodDeclaration , ClassScope scope ) { } public boolean visit ( ImportReference importRef , CompilationUnitScope scope ) { } public void endVisit ( ImportReference importRef , CompilationUnitScope scope ) { } public boolean visit ( FieldDeclaration fieldDeclaration , MethodScope scope ) { } public void endVisit ( FieldDeclaration fieldDeclaration , MethodScope scope ) { } protected String generateJavadocComment ( ASTNode astNode ) { } protected String genSourceSignature ( FieldDeclaration fieldDeclaration ) { } public boolean visit ( ConstructorDeclaration constructorDeclaration , ClassScope scope ) { if ( constructorDeclaration . isDefaultConstructor ) { stack . push ( null ) ; return true ; } StringBuffer argumentsSignature = new StringBuffer ( ) ; argumentsSignature . append ( "(" ) ; if ( ( constructorDeclaration . arguments ) != null ) { for ( int i = 0 ; i < ( constructorDeclaration . arguments . length ) ; i ++ ) { <START_BUG> argumentsSignature . append ( constructorDeclaration . arguments [ i ] ) ; <END_BUG> if ( ( i + 1 ) < ( constructorDeclaration . arguments . length ) ) argumentsSignature . append ( "," ) ; } } argumentsSignature . append ( ")" ) ; IProgramElement peNode = new org . aspectj . asm . internal . ProgramElement ( ( ( new String ( constructorDeclaration . selector ) ) + argumentsSignature ) , Kind . CONSTRUCTOR , makeLocation ( constructorDeclaration ) , constructorDeclaration . modifiers , "" , new ArrayList ( ) ) ; peNode . setModifiers ( constructorDeclaration . modifiers ) ; peNode . setSourceSignature ( genSourceSignature ( constructorDeclaration ) ) ; if ( ( constructorDeclaration . binding ) != null ) { String memberName = "" ; String memberBytecodeSignature = "" ; try { Member member = EclipseFactory . makeResolvedMember ( constructorDeclaration . binding ) ; memberName = member . getName ( ) ; memberBytecodeSignature = member . getSignature ( ) ; } catch ( BCException bce ) { memberName = "<undefined>" ; } catch ( NullPointerException npe ) { memberName = "<undefined>" ; } peNode . setBytecodeName ( memberName ) ; peNode . setBytecodeSignature ( memberBytecodeSignature ) ; } ( ( IProgramElement ) ( stack . peek ( ) ) ) . addChild ( peNode ) ; stack . push ( peNode ) ; return true ; } public void endVisit ( ConstructorDeclaration constructorDeclaration , ClassScope scope ) { } private String genSourceSignature ( ConstructorDeclaration constructorDeclaration ) { } private Initializer inInitializer = null ; public boolean visit ( Initializer initializer , MethodScope scope ) { } protected ISourceLocation makeLocation ( ASTNode node ) { } protected int getStartLine ( ASTNode n ) { } protected int getEndLine ( ASTNode n ) { } private int getEndLine ( AbstractVariableDeclaration avd ) { } private int getEndLine ( AbstractMethodDeclaration amd ) { } private int getEndLine ( TypeDeclaration td ) { } }

Fix:
argumentsSignature . append ( constructorDeclaration . arguments [ i ] . type ) ;