<s> package org . eclipse . jdt . internal . core ; import org . eclipse . jdt . core . * ; import org . eclipse . jdt . core . JavaModelException ; import org . eclipse . jdt . core . compiler . CharOperation ; import org . eclipse . jdt . internal . compiler . env . ISourceMethod ; public abstract class SourceMethodElementInfo extends AnnotatableInfo implements ISourceMethod { protected char [ ] [ ] argumentNames ; protected char [ ] [ ] exceptionTypes ; protected ITypeParameter [ ] typeParameters = TypeParameter . NO_TYPE_PARAMETERS ; public char [ ] [ ] getArgumentNames ( ) { return this . argumentNames ; } public char [ ] [ ] getExceptionTypeNames ( ) { return this . exceptionTypes ; } public abstract char [ ] getReturnTypeName ( ) ; public char [ ] [ ] [ ] getTypeParameterBounds ( ) { int length = this . typeParameters . length ; char [ ] [ ] [ ] typeParameterBounds = new char [ length ] [ ] [ ] ; for ( int i = 0 ; i < length ; i ++ ) { try { TypeParameterElementInfo info = ( TypeParameterElementInfo ) ( ( JavaElement ) this . typeParameters [ i ] ) . getElementInfo ( ) ; typeParameterBounds [ i ] = info . bounds ; } catch ( JavaModelException e ) { } } return typeParameterBounds ; } public char [ ] [ ] getTypeParameterNames ( ) { int length = this . typeParameters . length ; if ( length == 0 ) return CharOperation . NO_CHAR_CHAR ; char [ ] [ ] typeParameterNames = new char [ length ] [ ] ; for ( int i = 0 ; i < length ; i ++ ) { typeParameterNames [ i ] = this . typeParameters [ i ] . getElementName ( ) . toCharArray ( ) ; } return typeParameterNames ; } public abstract boolean isConstructor ( ) ; public abstract boolean isAnnotationMethod ( ) ; protected void setArgumentNames ( char [ ] [ ] names ) { this . argumentNames = names ; } protected void setExceptionTypeNames ( char [ ] [ ] types ) { this . exceptionTypes = types ; } protected abstract void setReturnType ( char [ ] type ) ; } </s>