Bug 93567 ContextInformationPopup leaks CompletionEngines?
N20050503-0010 Yourkit memory snapshot N20050503-0010_1.5.0_20050503-1905.memory on my machine.
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/GenericJavaTypeProposal.java
*        sub types
	 * @param pathIndex an index into <code>path</code> specifying the type to
	 *        start with
	 * @param paramIndex the index of the type parameter to map -
	 *        <code>path[pathIndex]</code> must have a type parameter at that
	 *        index, lest an <code>ArrayIndexOutOfBoundsException</code> is
	 *        thrown
	 * @return the index of the type parameter in <code>path[0]</code>
	 *         corresponding to the type parameter at <code>paramIndex</code>
	 *         in <code>path[pathIndex]</code>, or -1 if there is no
	 *         corresponding type parameter
	 * @throws JavaModelException
	 * @throws ArrayIndexOutOfBoundsException if <code>path[pathIndex]</code>
	 *         has &lt;= <code>paramIndex</code> parameters
	 */
	private int mapTypeParameterIndex(IType[] path, int pathIndex, int paramIndex) throws JavaModelException, ArrayIndexOutOfBoundsException {
		if (pathIndex == 0)
			
			return paramIndex;
		IType subType= path[pathIndex];
		IType superType= path[pathIndex - 1];
		String superSignature= findMatchingSuperTypeSignature(subType, superType);
		ITypeParameter param= subType.getTypeParameters()[paramIndex];
		int index= findMatchingTypeArgumentIndex(superSignature, param.getElementName());
		if (index == -1) {
			
			return -1;
		}
		return mapTypeParameterIndex(path, pathIndex - 1, index);
	}