int pos= buf.indexOf("? extends "); if (pos >= 0) buf.replace(pos, pos + 10, "+"); pos= buf.indexOf("? super "); if (pos >= 0) buf.replace(pos, pos + 9, "-");
int pos; do { pos= buf.indexOf("? extends "); if (pos >= 0) { buf.replace(pos, pos + 10, "+"); } else { pos= buf.indexOf("? super "); if (pos >= 0) buf.replace(pos, pos + 8, "-"); } } while (pos >= 0);
	private char[] computeTypeDisplayName(char[] typeSignature) {		char[] displayName= Signature.getSimpleName(Signature.toCharArray(typeSignature));		boolean useShortGenerics= false;		if (useShortGenerics) {			StringBuffer buf= new StringBuffer();			buf.append(displayName);			int pos= buf.indexOf("? extends "); //$NON-NLS-1$			if (pos >= 0)				buf.replace(pos, pos + 10, "+"); //$NON-NLS-1$			pos= buf.indexOf("? super "); //$NON-NLS-1$			if (pos >= 0)				buf.replace(pos, pos + 9, "-"); //$NON-NLS-1$			return buf.toString().toCharArray();		} else {			return displayName;		}	}