buf.append("..");
buf.append("...");
	public static void getMethodLabel(IMethod method, long flags, StringBuffer buf) {		try {			// return type			if (getFlag(flags, M_PRE_TYPE_PARAMETERS) && method.exists()) {				ITypeParameter[] typeParameters= method.getTypeParameters();				if (typeParameters.length > 0) {					buf.append('<');					for (int i = 0; i < typeParameters.length; i++) {						if (i > 0) {							buf.append(COMMA_STRING);						}						buf.append(typeParameters[i].getElementName());					}					buf.append('>');					buf.append(' ');				}									}						// return type			if (getFlag(flags, M_PRE_RETURNTYPE) && method.exists() && !method.isConstructor()) {				buf.append(Signature.getSimpleName(Signature.toString(method.getReturnType())));				buf.append(' ');			}						// qualification			if (getFlag(flags, M_FULLY_QUALIFIED)) {				getTypeLabel(method.getDeclaringType(), T_FULLY_QUALIFIED | (flags & P_COMPRESSED), buf);				buf.append('.');			}							buf.append(method.getElementName());						// parameters			buf.append('(');			if (getFlag(flags, M_PARAMETER_TYPES | M_PARAMETER_NAMES)) {								String[] types= getFlag(flags, M_PARAMETER_TYPES) ? method.getParameterTypes() : null;				String[] names= (getFlag(flags, M_PARAMETER_NAMES) && method.exists()) ? method.getParameterNames() : null;				int nParams= types != null ? types.length : names.length;				boolean renderVarargs= (types != null) && method.exists() && Flags.isVarargs(method.getFlags());								for (int i= 0; i < nParams; i++) {					if (i > 0) {						buf.append(COMMA_STRING); //$NON-NLS-1$					}					if (types != null) {						String paramSig= types[i];						if (renderVarargs && (i == nParams - 1)) {							int newDim= Signature.getArrayCount(paramSig) - 1;							buf.append(Signature.getSimpleName(Signature.toString(Signature.getElementType(paramSig))));							for (int k= 0; k < newDim; k++) {								buf.append("[]"); //$NON-NLS-1$							}							buf.append("..."); //$NON-NLS-1$						} else {							buf.append(Signature.getSimpleName(Signature.toString(paramSig)));						}					}					if (names != null) {						if (types != null) {							buf.append(' ');						}						buf.append(names[i]);					}				}			} else {				if (method.getParameterTypes().length > 0) {					buf.append(".."); //$NON-NLS-1$				}			}			buf.append(')');								if (getFlag(flags, M_EXCEPTIONS) && method.exists()) {				String[] types= method.getExceptionTypes();				if (types.length > 0) {					buf.append(" throws "); //$NON-NLS-1$					for (int i= 0; i < types.length; i++) {						if (i > 0) {							buf.append(COMMA_STRING);						}						buf.append(Signature.getSimpleName(Signature.toString(types[i])));					}				}			}						if (getFlag(flags, M_APP_TYPE_PARAMETERS) && method.exists()) {				ITypeParameter[] typeParameters= method.getTypeParameters();				if (typeParameters.length > 0) {					buf.append(' ');					buf.append('<');					for (int i = 0; i < typeParameters.length; i++) {						if (i > 0) {							buf.append(COMMA_STRING);						}						buf.append(typeParameters[i].getElementName());					}					buf.append('>');				}									}						if (getFlag(flags, M_APP_RETURNTYPE) && method.exists() && !method.isConstructor()) {				buf.append(DECL_STRING);				buf.append(Signature.getSimpleName(Signature.toString(method.getReturnType())));				}									// post qualification			if (getFlag(flags, M_POST_QUALIFIED)) {				buf.append(CONCAT_STRING);				getTypeLabel(method.getDeclaringType(), T_FULLY_QUALIFIED | (flags & P_COMPRESSED), buf);			}								} catch (JavaModelException e) {			JavaPlugin.log(e); // NotExistsException will not reach this point		}	}