private void createVerticalRuler(IDocument newInput, Class<SourceViewer> sourceViewerClazz) throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException, NoSuchFieldException { forceCustomAnnotationHover(); Method declaredMethod2 = sourceViewerClazz.getDeclaredMethod("getVerticalRuler"); declaredMethod2.setAccessible(true); CompositeRuler ruler = (CompositeRuler) declaredMethod2.invoke(sourceViewer); boolean hasDecorator = false; Iterator<?> iter = (ruler).getDecoratorIterator(); while (iter.hasNext()) { Object obj = iter.next(); if (obj instanceof AnnotationColumn) { hasDecorator = true; } } if (!hasDecorator) { AnnotationColumn annotationColumn = new AnnotationColumn(); annotationColumn.createControl(ruler, ruler.getControl().getParent()); ruler.addDecorator(0, annotationColumn); } }