import org.checkerframework.checker.guieffect.qual.*;

package org.eclipse.compare;
@UIType public abstract class CompareEditorInput extends PlatformObject implements IEditorInput, IPropertyChangeNotifier, IRunnableWithProgress, ICompareContainer {
    @SafeEffect public CompareConfiguration getCompareConfiguration();
    @SafeEffect public void setTitle(String title);
    @SafeEffect public boolean isSaveNeeded();
    @SafeEffect public void save(IProgressMonitor pm);
    @SafeEffect public void saveChanges(IProgressMonitor monitor) throws CoreException;
    @SafeEffect protected void setMessage(String message);
    @SafeEFfect public String getMessage();
}

package org.eclipse.core.commands;
@PolyUIType public interface IHandler {
    @SafeEffect void addHandlerListener(IHandlerListener handlerListener);
    @SafeEffect void dispose();
    @PolyUIEffect Object execute(@PolyUI IHandler this, ExecutionEvent event);
    @SafeEffect boolean isEnabled();
    @SafeEffect boolean isHandled();
    @SafeEffect void removeHandlerListener(IHandlerListener handlerListener);

}

package org.eclipse.core.expression;
public interface IPropertyTester {
    // XXX Not sure if this should be UIEffect or poly
    @UIEffect boolean test(Object receiver, String property, Object[] args, Object expectedValue);
}
public abstract class PropertyTester implements IPropertyTester {
    // XXX Not sure if this should be UIEffect or poly
    @UIEffect boolean test(Object receiver, String property, Object[] args, Object expectedValue);
}

package org.eclipse.core.runtime;
@PolyUIType public interface IProgressMonitor {
    @PolyUIEffect void beginTask(@PolyUI IProgressMonitor this, String name, int totalWork);
    @PolyUIEffect void done(@PolyUI IProgressMonitor this);
    @PolyUIEffect void internalWorked(@PolyUI IProgressMonitor this, double work);
    @PolyUIEffect boolean isCanceled(@PolyUI IProgressMonitor this);
    @PolyUIEffect void setCanceled(@PolyUI IProgressMonitor this, boolean value);
    @PolyUIEffect void setTaskName(@PolyUI IProgressMonitor this, String name);
    @PolyUIEffect void subTask(@PolyUI IProgressMonitor this, String name);
    @PolyUIEffect void worked(@PolyUI IProgressMonitor this, int work);
}
@PolyUIType
public abstract class Plugin implements BundleActivator {
    // These methods are present on all plugins, UI or not
    @PolyUIEffect void start(@PolyUI Plugin this, BundleContext context);
    @PolyUIEffect void stop(@PolyUI Plugin this, BundleContext context);
    @SafeEffect public final Preferences getPluginPreferences();
}
public class Preferences extends Object {
    public static interface IPropertyChangeListener extends EventListener {
        @PolyUIEffect public void propertyChange(@PolyUI Preferences$IPropertyChangeListener this, Preferences.PropertyChangeEvent event);
    }
}
package org.eclipse.core.runtime.jobs;
@PolyUIType
public abstract class Job extends org.eclipse.core.internal.jobs.InternalJob implements IAdaptable {
    @PolyUIEffect protected abstract IStatus run(@PolyUI Job this, IProgressMonitor monitor);
}

@UIPackage package org.eclipse.debug.ui;
@UIPackage package org.eclipse.debug.ui.actions;
@UIPackage package org.eclipse.debug.ui.console;
@UIPackage package org.eclipse.debug.ui.contexts;
@UIPackage package org.eclipse.debug.ui.memory;
@UIPackage package org.eclipse.debug.ui.sourcelookup;
@UIPackage package org.eclipse.draw2d;
@UIPackage package org.eclipse.draw2d.geometry;
@UIPackage package org.eclipse.draw2d.parts;
@UIPackage package org.eclipse.gef;
@UIPackage package org.eclipse.gef.editparts;
@UIPackage package org.eclipse.gef.editpolicies;
@UIPackage package org.eclipse.gef.tools;
@UIPackage package org.eclipse.gef.ui;
@UIPackage package org.eclipse.gef.ui.actions;
@UIPackage package org.eclipse.gef.ui.parts;
@UIPackage package org.eclipse.help.ui;
@UIPackage package org.eclipse.help.ui.browser;
@UIPackage package org.eclipse.jface.action;
//@PolyUIType
//public interface IAction {
//    // TODO: IAction and Action are all-safe interfaces!
//    @PolyUIEffect public void run();
//    @PolyUIEffect public void runWithEvent(Event event);
//}
//@PolyUIType
//public abstract class Action extends AbstractAction implements IAction {
//    // TODO: IAction and Action are all-safe interfaces!
//    @PolyUIEffect public void run();
//    @PolyUIEffect public void runWithEvent(Event event);
//}
//public interface IContributionManager {
//    @UIEffect public void add(@UI IAction action);
//}
@SafeType interface IAction {
    @UIEffect public void run();
    @UIEffect public void runWithEvent(Event event);
}
@SafeType class Action extends AbstractAction implements IAction {
    @UIEffect public void run();
    @UIEffect public void runWithEvent(Event event);
}
public interface IContributionManager {
    @SafeEffect public void add(IAction action);
    @SafeEffect public void add(IContributionItem item);
}
public interface IMenuManager extends IContributionManager, IContributionItem {
    @SafeEffect public void addMenuListener(IMenuListener listener);
    @SafeEffect public void setRemoveAllWhenShown(boolean removeAll);
}

@UIPackage package org.eclipse.jface.bindings;
@UIPackage package org.eclipse.jface.bindings.keys;
@UIPackage package org.eclipse.jface.bindings.keys.formatting;
@UIPackage package org.eclipse.jface.commands;
@UIPackage package org.eclipse.jface.contentassist;
@UIPackage package org.eclipse.jface.contexts;
@UIPackage package org.eclipse.jface.databinding.dialog;
@UIPackage package org.eclipse.jface.databinding.preference;
@UIPackage package org.eclipse.jface.databinding.swt;
@UIPackage package org.eclipse.jface.databinding.util;
@UIPackage package org.eclipse.jface.databinding.viewers;
@UIPackage package org.eclipse.jface.databinding.wizard;
@UIPackage package org.eclipse.jface.dialogs;
public abstract class Dialog extends Window {
    // XXX: Not 100% sure about this
    // XXX: Reproduced here because if Window is annotated @UIType, it doesn't inherit the weaker override!
    @SafeEffect void getShell();
}
// XXX: Not 100% sure about this
@SafeType public interface IDialogSettings {}

@UIPackage package org.eclipse.jface.fieldassist;
@UIPackage package org.eclipse.jface.layout;
@UIPackage package org.eclipse.jface.menus;
@UIPackage package org.eclipse.jface.operation;
@UIPackage package org.eclipse.jface.preference;
public interface IPreferenceStore {
    @SafeEffect void addPropertyChangeListener(IPropertyChangeListener listener);
    // TODO: ALL methods of this type should be safe!
    @SafeEffect boolean contains(String name);
    @SafeEffect void firePropertyChangeEvent(String name, Object oldValue, Object newValue);
    @SafeEffect boolean getBoolean(String name);
    @SafeEffect boolean getDefaultBoolean(String name);
    @SafeEffect double getDefaultDouble(String name);
    @SafeEffect float getDefaultFloat(String name);
    @SafeEffect int getDefaultInt(String name);
    @SafeEffect long getDefaultLong(String name);
    @SafeEffect String getDefaultString(String name);
    @SafeEffect double getDouble(String name);
    @SafeEffect float getFloat(String name);
    @SafeEffect int getInt(String name);
    @SafeEffect long getLong(String name);
    @SafeEffect String getString(String name);
    @SafeEffect boolean isDefault(String name);
    @SafeEffect boolean needsSaving();
    @SafeEffect void putValue(String name, String value);
    @SafeEffect void removePropertyChangeListener(IPropertyChangeListener listener);
    @SafeEffect void setDefault(String name, boolean value);
    @SafeEffect void setDefault(String name, double value);
    @SafeEffect void setDefault(String name, float value);
    @SafeEffect void setDefault(String name, int value);
    @SafeEffect void setDefault(String name, long value);
    @SafeEffect void setDefault(String name, String defaultObject);
    @SafeEffect void setToDefault(String name);
    @SafeEffect void setValue(String name, boolean value);
    @SafeEffect void setValue(String name, double value);
    @SafeEffect void setValue(String name, float value);
    @SafeEffect void setValue(String name, int value);
    @SafeEffect void setValue(String name, long value);
    @SafeEffect void setValue(String name, String value);
}
public abstract class PreferencePage extends DialogPage implements IPreferencePage {
    @SafeEffect protected IPreferenceStore doGetPreferenceStore();
}
public class ColorSelector extends EventManager {
    void addListener(@UI IPropertyChangeListener listener);
    void removeListener(@UI IPropertyChangeListener listener);
}
public abstract class FieldEditor {
    public void setPropertyChangeListener(@UI IPropertyChangeListener listener);
}
// XXX: Not 100% on this
@SafeType public class PreferenceConverter {}
@UIPackage package org.eclipse.jface.resource;
// XXX: Not 100% on this
@SafeType public class JFaceResources {
    // This method is explicitly documented as UI-only
    @UIEffect public static ResourceManager getResources();
    // This method is NOT documented as ui-only, but the above does something safe and then calls this... might just be a nullness issue, though (Display.getCurrent())
    @UIEffect public static ResourceManager getResources(Display toQuery);
}
@SafeType public class StringConverter {}
public class ImageRegistry {
    @SafeEffect ImageDescriptor getDescriptor(String key);
    @SafeEffect public Image get(String key);
}
public abstract class ImageDescriptor extends DeviceResourceDescriptor {
    @SafeEffect public static ImageDescriptor createFromURL(URL url);
}
public class FontRegistry extends ResourceRegistry {
    @SafeEffect public Font get(String symbolicName);
}
public abstract class ResourceRegistry extends EventManager {
    @SafeEffect public void addListener(IPropertyChangeListener listener);
    @SafeEffect public void removeListener(IPropertyChangeListener listener);
}

@UIPackage package org.eclipse.jface.text;
@SafeType public class DocumentEvent{}

// XXX: Not 100% on this
@SafeType public interface IDocument{}
@SafeType public abstract class AbstractDocument implements IDocument, IDocumentExtension, IDocumentExtension2, IDocumentExtension3, IDocumentExtension4, IRepairableDocument, IRepairableDocumentExtension {}
@SafeType public interface ITextStore{}
@SafeType public class GapTextStore implements ITextStore {}
@SafeType public class CopyOnWriteTextStore implements ITextStore {}
@SafeType public interface ILineTracker {}
@SafeType public class DefaultLineTracker extends AbstractLineTracker {}
@SafeType public class ConfigurableLineTracker extends AbstractLineTracker {}
@SafeType public abstract class AbstractLineTracker implements ILineTracker, ILineTrackerExtension {}
public interface ITextViewer {
    @SafeEffect public ITextOperationTarget getTextOperationTarget();
    @SafeEffect public IDocument getDocument();
}


@UIPackage package org.eclipse.jface.text.contentassist;
@UIPackage package org.eclipse.jface.text.formatter;
@UIPackage package org.eclipse.jface.text.hyperlink;
@UIPackage package org.eclipse.jface.text.information;
@UIPackage package org.eclipse.jface.text.link;
@UIPackage package org.eclipse.jface.text.presentation;
@UIPackage package org.eclipse.jface.text.projection;
@UIPackage package org.eclipse.jface.text.quickassist;
@UIPackage package org.eclipse.jface.text.reconciler;
@UIPackage package org.eclipse.jface.text.revisions;
// XXX: Not 100%, but everything in jface.text.rules seems to be safe
//@UIPackage package org.eclipse.jface.text.rules;
@UIPackage package org.eclipse.jface.text.source;
@UIPackage package org.eclipse.jface.text.source.projection;
@UIPackage package org.eclipse.jface.text.templates;
@UIPackage package org.eclipse.jface.text.templates.persistence;
@UIPackage package org.eclipse.jface.util;
public class PropertyChangeEvent extends EventObject {
    @SafeEffect PropertyChangeEvent(Object source, String property, Object oldValue, Object newValue);
    @SafeEffect Object getNewValue();
    @SafeEffect Object getOldValue();
    @SafeEffect String getProperty();
}
@PolyUIType public interface IPropertyChangeListener extends EventListener {
    @PolyUIEffect void propertyChange(@PolyUI IPropertyChangeListener this, PropertyChangeEvent event);
}
@UIPackage package org.eclipse.jface.viewers;
public abstract class ContentViewer extends Viewer {
    @SafeEffect public Object getInput();
}
public abstract class StructuredViewer extends ContentViewer implements IPostSelectionProvider {
    // @SafeEffect void refresh(); -- Why the hell did I ever mark this safe???
}
public class TreeViewer extends AbstractTreeViewer {
    @SafeEffect Tree getTree();
    @SafeEffect Control getControl();
}
@SafeType public interface IStructuredSelection extends ISelection {
}
@UIPackage package org.eclipse.jface.viewers.deferred;
@UIPackage package org.eclipse.jface.window;
public interface IShellProvider {
    // XXX: Not 100% sure about this
    @SafeEffect void getShell();
}
public abstract class Window implements IShellProvider {
    // XXX: Not 100% sure about this
    // XXX: Reproduced here because if Window is annotated @UIType, it doesn't inherit the weaker override!
    @SafeEffect void getShell();
}
@UIPackage package org.eclipse.jface.wizard;
@UIPackage package org.eclipse.jsch.ui;
@UIPackage package org.eclipse.ltk.ui.refactoring;
@UIPackage package org.eclipse.ltk.ui.refactoring.actions;
@UIPackage package org.eclipse.ltk.ui.refactoring.history;
@UIPackage package org.eclipse.ltk.ui.refactoring.model;
@UIPackage package org.eclipse.ltk.ui.refactoring.resource;
@UIPackage package org.eclipse.search.ui;
@UIPackage package org.eclipse.search.ui.actions;
@UIPackage package org.eclipse.search.ui.text;

/*
 * SWT
 */
@UIPackage package org.eclipse.swt;
@UIPackage package org.eclipse.swt.accessibility;
@UIPackage package org.eclipse.swt.awt;
@UIPackage package org.eclipse.swt.browser;
@UIPackage package org.eclipse.swt.custom;

public class BusyIndicator {
    @UIEffect public static void showWhile(Display display, @UI Runnable runnable);
}

@UIPackage package org.eclipse.swt.dnd;
@SafeType public abstract class Transfer {}
@SafeType public abstract class ByteArrayTransfer extends Transfer {}

@UIPackage package org.eclipse.swt.events;
@UIPackage package org.eclipse.swt.graphics;
// XXX: Not 100%, but this seems safe.  At least the .equals(), which is what my case study needs
public final class RGB extends Object implements org.eclipse.swt.internal.SerializableCompatibility {
    @SafeEffect public boolean equals(Object object);
}
public final class Font extends Resource {
    // Another SWT class that happens to work on other threads... (https://bugs.eclipse.org/bugs/show_bug.cgi?id=241062)
    @SafeEffect FontData[] getFontData();
}
public abstract class Resource {
    // XXX not 100% - the impl appears safe, but this is probably not the intended model
    @SafeEffect public void dispose();
}
public final class Image extends Resource implements Drawable {
    @SafeEffect public boolean equals(Object object);
    @SafeEffect public int hashCode();
}

@UIPackage package org.eclipse.swt.layout;
@UIPackage package org.eclipse.swt.ole.win32;
@UIPackage package org.eclipse.swt.opengl;
@UIPackage package org.eclipse.swt.printing;
@UIPackage package org.eclipse.swt.program;
@UIPackage package org.eclipse.swt.widgets;
// These are the only two safe methods in all of SWT according to the docs
@UIType class Display extends Device {
    @SafeEffect public void syncExec(@UI Runnable runnable);
    @SafeEffect public void asyncExec(@UI Runnable runnable);
    // Not 100% sure about this one
    @SafeEffect public static Display getDefault();
    @SafeEffect public static Display getCurrent();
}
public class Shell extends Decorations {
    // XXX: Actually inherited, as @SafeEffect, from Widget
    @SafeEffect public Display getDisplay();
}
public abstract class Widget {
    // XXX: Not 100% on this
    @SafeEffect public Display getDisplay();
    @SafeEffect public boolean isDisposed();
}

// XXX Not 100% on these internal packages
@UIPackage package org.eclipse.team.internal.ui;
@UIPackage package org.eclipse.team.internal.ui.synchronize;
public abstract class SyncInfoSetChangeSetCollector extends ChangeSetManager {
    @SafeEffect protected final void performUpdate(IWorkspaceRunnable runnable, boolean preserveExpansion, IProgressMonitor monitor);
}


@UIPackage package org.eclipse.team.ui;
// XXX This TeamOperation class is messy for us: canRunAsJob() determines whether the class has UI
// effects or safe effects.  Some of these methods need to be marked safe because they're to be used
// by both variants.  Because there are issues with valid types, I'm making this type safe for now,
// and I'll suffer the extra warnings until I decide whether or not I want to go polymorphic.
@SafeType public abstract class TeamOperation extends JobChangeAdapter implements IRunnableWithProgress {
}
@SafeType public class TeamImages {}

@UIPackage package org.eclipse.team.ui.history;
public abstract class HistoryPage extends Page implements IHistoryPage, IAdaptable {
    @SafeEffect public Object getInput();
}

@UIPackage package org.eclipse.team.ui.synchronize;
public interface ISynchronizeModelElement extends IDiffContainer, ITypedElement, ICompareInput {
    @SafeEffect IResource getResource();
}
public abstract class SubscriberParticipant extends AbstractSynchronizeParticipant implements IPropertyChangeListener {
    @SafeEffect public final IStatus refreshNow(IResource[] resources, String taskName, IProgressMonitor monitor);
    @SafeEffect public final void refresh(IResource[] resources, String shortTaskName, String longTaskName, IWorkbenchSite site);
    @SafeEffect protected String getLongTaskName(IResource[] resources);
    @SafeEffect public IResource[] getResources();
    @SafeEffect public void reset();
}
public abstract class SynchronizeModelOperation extends TeamOperation {
    @SafeEffect protected SyncInfoSet getSyncInfoSet();
}

@UIPackage package org.eclipse.ui;
public final class PlatformUI {
    // XXX Not 100%
    @SafeEffect public static IWorkbench getWorkbench();
    @SafeEffect public static boolean isWorkbenchRunning();
}
// XXX Not 100% about these "safe" types
@SafeType public interface IWorkbench extends IAdaptable, IServiceLocator {}
public interface IWorkbenchPart extends IAdaptable {
    @SafeEffect IWorkbenchPartSite getSite();
}
public interface IWorkbenchPartSite extends IWorkbenchSite {
    @SafeEffect IWorkbenchPart getPart();
}
@SafeType public interface IWorkbenchWindow extends IPageService, IRunnableContext, IServiceLocator, IShellProvider {}
public interface IWorkbenchSite extends IAdaptable, IShellProvider, IServiceLocator {
    @SafeEffect public Shell getShell(); // XXX: This is specified by IShellProvider, but the docs for IWorkbenchSite say this is ui safe only for compat, and the result may be wrong
    @SafeEffect IWorkbenchPage getPage();
}
public interface IFileEditorInput extends IStorageEditorInput {
    // XXX Not 100%
    @SafeEffect IFile getFile();
}
public interface IPathEditorInput extends IEditorInput {
    @SafeEffect IPath getPath();
}
@SafeType public interface IEditorRegistry {}
@SafeType public interface IEditorDescriptor extends IWorkbenchPartDescriptor {}
public interface IEditorPart extends IWorkbenchPart, ISaveablePart {
    // XXX not 100% sure
    @SafeEffect public IEditorInput getEditorInput();
}
public interface IPartService {
    @SafeEffect IWorkbenchPart getActivePart();
}


@UIPackage package org.eclipse.ui.about;
@UIPackage package org.eclipse.ui.actions;
public abstract class BaseSelectionListenerAction extends Action implements ISelectionChangedListener {
    // XXX every impl of this simply returns a member, but I can't tell if this is actually (race) safe
    @SafeEffect public IStructuredSelection getStructuredSelection();
}

@UIPackage package org.eclipse.ui.activities;
@UIPackage package org.eclipse.ui.application;
@UIPackage package org.eclipse.ui.branding;
@UIPackage package org.eclipse.ui.browser;
@UIPackage package org.eclipse.ui.cheatsheets;
@UIPackage package org.eclipse.ui.commands;
@UIPackage package org.eclipse.ui.console;
// XXX: Not 100% on these console types
@SafeType public interface IConsole {}
@SafeType public interface IConsoleManager {}
@SafeType public abstract class TextConsole extends AbstractConsole {
    @UIEffect public Font getFont();
}
@SafeType public class ConsolePlugin extends AbstractUIPlugin {}
@SafeType public class IOConsole extends TextConsole{}
@SafeType public class IOConsoleInputStream extends InputStream{}
@SafeType public class IOConsoleOutputStream extends OutputStream{}

@UIPackage package org.eclipse.ui.console.actions;
@UIPackage package org.eclipse.ui.contentassist;
@UIPackage package org.eclipse.ui.contexts;
@UIPackage package org.eclipse.ui.databinding;
@UIPackage package org.eclipse.ui.dialogs;
public class FilteredTree extends Composite {
    // XXX Not 100%
    @SafeEffect TreeViewer getViewer();
}
@UIPackage package org.eclipse.ui.editors.text;
// XXX not 100%
@SafeType public interface IStorageDocumentProvider {}

@UIPackage package org.eclipse.ui.editors.text.templates;
@UIPackage package org.eclipse.ui.fieldassist;
@UIPackage package org.eclipse.ui.forms;
@UIPackage package org.eclipse.ui.forms.editor;
@UIPackage package org.eclipse.ui.forms.events;
@UIPackage package org.eclipse.ui.forms.widgets;
@UIPackage package org.eclipse.ui.handlers;
@UIPackage package org.eclipse.ui.help;
public interface IWorkbenchHelpSystem {
    // XXX not 100%
    @SafeEffect void setHelp(IAction action, String contextId);
}

@UIPackage package org.eclipse.ui.ide;
@UIPackage package org.eclipse.ui.ide.dialogs;
@UIPackage package org.eclipse.ui.ide.fileSystem;
@UIPackage package org.eclipse.ui.ide.undo;
@UIPackage package org.eclipse.ui.intro;
@UIPackage package org.eclipse.ui.intro.config;
@UIPackage package org.eclipse.ui.intro.contentproviders;
@UIPackage package org.eclipse.ui.intro.universal;
@UIPackage package org.eclipse.ui.keys;
@UIPackage package org.eclipse.ui.menus;
@UIPackage package org.eclipse.ui.model;
public interface IWorkbenchAdapter {
    @SafeEffect ImageDescriptor getImageDescriptor(Object object);
}

@UIPackage package org.eclipse.ui.navigator;
@UIPackage package org.eclipse.ui.navigator.resources;
@UIPackage package org.eclipse.ui.operations;
@UIPackage package org.eclipse.ui.part;
public abstract class EditorPart extends WorkbenchPart implements IEditorPart {
    // XXX Again, not 100%
    @SafeEffect public IEditorInput getEditorInput();
}
public abstract class Page implements IPageBookViewPage {
    @SafeEffect public IPageSite getSite();
}
@SafeType public class PluginTransfer extends ByteArrayTransfer {}

@UIPackage package org.eclipse.ui.plugin;
@UI public abstract class AbstractUIPlugin extends @UI Plugin {
    // XXX: These methods are present on all plugins, UI or not, and I'm reproducing them explicitly here because inheritance from a *particular* polymorphic instantiation doesn't work yet
    @SafeEffect public AbstractUIPlugin();
    @SafeEffect public AbstractUIPlugin(IPluginDescriptor descriptor);
    @SafeEffect void start(BundleContext context);
    @SafeEffect void stop(BundleContext context);
    @SafeEffect public static ImageDescriptor imageDescriptorFromPlugin(String pluginId, String imageFilePath);
    @SafeEffect public IDialogSettings getDialogSettings();
    // XXX Not 100%
    @SafeEffect public IWorkbench getWorkbench();
    @SafeEffect public Preferences getPluginPreferences();
    @SafeEffect public IPreferenceStore getPreferenceStore();
    @SafeEffect public ImageRegistry getImageRegistry(); // Technically only safe after the workbench is running, but no plugins will ever call this before then...
}
public final class PlatformUI {
    // XXX Not 100%
    @SafeEffect public static IWorkbench getWorkbench();
}
public abstract class Page implements IPageBookViewPage {
    @SafeEffect public IPageSite getSite();
}

@UIPackage package org.eclipse.ui.preferences;
@UIPackage package org.eclipse.ui.presentations;
@UIPackage package org.eclipse.ui.progress;
@SafeType public interface IWorkbenchSiteProgressService extends IProgressService {}

@UIPackage package org.eclipse.ui.services;
@UIPackage package org.eclipse.ui.splash;
@UIPackage package org.eclipse.ui.statushandlers;
@UIPackage package org.eclipse.ui.swt;
@UIPackage package org.eclipse.ui.testing;
@UIPackage package org.eclipse.ui.texteditor;
@UIType public class StatusLineContributionItem extends ContributionItem implements IStatusField, IStatusFieldExtension {
    @UIEffect public void setActionHandler(@UI IAction actionHandler);
}
public interface ITextEditor extends IEditorPart {
    // XXX not 100% sure
    @SafeEffect public IEditorInput getEditorInput();
    @SafeEffect public IDocumentProvider getDocumentProvider();
}
@SafeType public interface IDocumentProvider {}


@UIPackage package org.eclipse.ui.texteditor.link;
@UIPackage package org.eclipse.ui.texteditor.quickdiff;
@UIPackage package org.eclipse.ui.texteditor.rulers;
@UIPackage package org.eclipse.ui.texteditor.spelling;
@UIPackage package org.eclipse.ui.texteditor.templates;
@UIPackage package org.eclipse.ui.themes;
@UIPackage package org.eclipse.ui.views;
@UIPackage package org.eclipse.ui.views.bookmarkexplorer;
@UIPackage package org.eclipse.ui.views.contentoutline;
@UIPackage package org.eclipse.ui.views.framelist;
@UIPackage package org.eclipse.ui.views.markers;
@UIPackage package org.eclipse.ui.views.navigator;
@UIPackage package org.eclipse.ui.views.properties;
@SafeType public class PropertySheet extends PageBookView implements ISelectionListener, IShowInTarget, IShowInSource, IRegistryEventListener {
}
@UIPackage package org.eclipse.ui.views.properties.tabbed;
@UIPackage package org.eclipse.ui.views.tasklist;
@UIPackage package org.eclipse.ui.wizards;
@UIPackage package org.eclipse.ui.wizards.datatransfer;
@UIPackage package org.eclipse.ui.wizards.newresource;
