Bug 131692 [Contributions] ContributionManager.insertAfter throws unhelpful IllegalArgumentException
look at insertBefore and you see this line throw new IllegalArgumentException("can't find ID " + ID);//$NON-NLS-1$ but in insertAfter it looks like this throw new IllegalArgumentException("can't find ID");//$NON-NLS-1$ NOTE: in the second example it doesn't tell you what the ID is. My "patch" is to make insertAfter behave like insertBefore
bundles/org.eclipse.jface/src/org/eclipse/jface/action/ContributionManager.java
final int index = indexOf(identifier);
        if (index < 0) {
            return false; 
        }
        
        final IContributionItem oldItem = (IContributionItem) contributions
                .get(index);
        itemRemoved(oldItem);
        
        contributions.set(index, replacementItem);
        itemAdded(replacementItem); 
        
        for (int i = contributions.size() - 1; i > index; i--) {
            IContributionItem item = (IContributionItem) contributions.get(i);
            if ((item != null) && (identifier.equals(item.getId()))) {
                if (Policy.TRACE_TOOLBAR) {
                    System.out
                            .println("Removing duplicate on replace: " + identifier); 
                }
                contributions.remove(i);
                itemRemoved(item);
            }
        }
        return true; 
    }
    /**
     * Sets whether this manager is dirty. When dirty, the list of contributions 
     * is not accurately reflected in the corresponding widgets.
     *
     * @param dirty <code>true</code> if this manager is dirty, and <code>false</code>