diff --git a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/breakpoints/JavaBreakpointListenerTests.java b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/breakpoints/JavaBreakpointListenerTests.java
index 6e0cf19..caaf4a3 100644
--- a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/breakpoints/JavaBreakpointListenerTests.java
+++ b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/breakpoints/JavaBreakpointListenerTests.java
@@ -72,7 +72,7 @@
 	/**
 	 * Used to test breakpoint install/suspend voting.
 	 */
-	class SuspendVoter implements IJavaBreakpointListener {
+	static class SuspendVoter implements IJavaBreakpointListener {
 
 		int fVote;
 		IJavaBreakpoint fTheBreakpoint;
diff --git a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/core/ClasspathContainerTests.java b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/core/ClasspathContainerTests.java
index 9825c81..e32a646 100644
--- a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/core/ClasspathContainerTests.java
+++ b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/core/ClasspathContainerTests.java
@@ -41,7 +41,7 @@
  */
 public class ClasspathContainerTests extends AbstractDebugTest {
 
-	class FakeContainer implements IClasspathContainer {
+	static class FakeContainer implements IClasspathContainer {
 
 		IClasspathEntry[] entries = new IClasspathEntry[0];
 		/**
diff --git a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/performance/PerfContextualLaunchMenu.java b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/performance/PerfContextualLaunchMenu.java
index 73ec5b7..6051bf5 100644
--- a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/performance/PerfContextualLaunchMenu.java
+++ b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/performance/PerfContextualLaunchMenu.java
@@ -81,7 +81,7 @@
         assertPerformance();
     }
 
-    private class BogusAction extends Action {
+    private static class BogusAction extends Action {
     }
 
     private class PerfTestContextualLaunchAction extends ContextualLaunchAction {
diff --git a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/variables/DetailFormatterTests.java b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/variables/DetailFormatterTests.java
index 23061d8..f7c06b8 100644
--- a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/variables/DetailFormatterTests.java
+++ b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/variables/DetailFormatterTests.java
@@ -31,7 +31,7 @@
  */
 public class DetailFormatterTests extends AbstractDebugTest {
 
-	class TestListener implements IValueDetailListener {
+	static class TestListener implements IValueDetailListener {
 		IValue value;
 		String result;
 
diff --git a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/variables/TestAnonymousInspect.java b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/variables/TestAnonymousInspect.java
index 945266e..ef12010 100644
--- a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/variables/TestAnonymousInspect.java
+++ b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/variables/TestAnonymousInspect.java
@@ -32,7 +32,7 @@
 	static final String TYPE_NAME = "InspectTests";
 	static final String SNIPPET = "getchar()";
 
-	class Listener implements IEvaluationListener {
+	static class Listener implements IEvaluationListener {
 		IEvaluationResult fResult;
 
 		@Override
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/EditLogicalStructureDialog.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/EditLogicalStructureDialog.java
index ef91e95..a79ec95 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/EditLogicalStructureDialog.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/EditLogicalStructureDialog.java
@@ -174,7 +174,7 @@
 
 	}
 
-	public class AttributesLabelProvider extends LabelProvider {
+	public static class AttributesLabelProvider extends LabelProvider {
 		@Override
 		public String getText(Object element) {
 			return ((String[])element)[0];
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/AddFolderAction.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/AddFolderAction.java
index 183d140..4c133bc 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/AddFolderAction.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/AddFolderAction.java
@@ -53,7 +53,7 @@
 	 * @since 3.2
 	 *
 	 */
-	class FileFilter extends ViewerFilter {
+	static class FileFilter extends ViewerFilter {
 		@Override
 		public boolean select(Viewer viewer, Object parentElement, Object element) {
 			if(element instanceof IProject) {
diff --git a/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/ObjectReferenceImpl.java b/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/ObjectReferenceImpl.java
index 936b268..e3a0e3b 100644
--- a/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/ObjectReferenceImpl.java
+++ b/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/ObjectReferenceImpl.java
@@ -125,7 +125,7 @@
 	/**
 	 * Inner class used to return monitor info.
 	 */
-	private class MonitorInfo {
+	private static class MonitorInfo {
 		ThreadReferenceImpl owner;
 		int entryCount;
 		ArrayList<ThreadReference> waiters;
diff --git a/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/ThreadGroupReferenceImpl.java b/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/ThreadGroupReferenceImpl.java
index 49fc4ae..aa5927d 100644
--- a/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/ThreadGroupReferenceImpl.java
+++ b/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/ThreadGroupReferenceImpl.java
@@ -140,7 +140,7 @@
 	/**
 	 * Inner class used to return children info.
 	 */
-	private class ChildrenInfo {
+	private static class ChildrenInfo {
 		List<ThreadReference> childThreads;
 		List<ThreadGroupReference> childThreadGroups;
 	}
diff --git a/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/connect/ConnectorImpl.java b/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/connect/ConnectorImpl.java
index 8a720d9..c751793 100644
--- a/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/connect/ConnectorImpl.java
+++ b/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/connect/ConnectorImpl.java
@@ -111,7 +111,7 @@
 	/**
 	 * Argument class for arguments that are used to establish a connection.
 	 */
-	public abstract class ArgumentImpl implements
+	public abstract static class ArgumentImpl implements
 			com.sun.jdi.connect.Connector.Argument {
 		/**
 		 * Serial version id.
@@ -185,7 +185,7 @@
 		public abstract String toString();
 	}
 
-	public class StringArgumentImpl extends ArgumentImpl implements StringArgument {
+	public static class StringArgumentImpl extends ArgumentImpl implements StringArgument {
 		private static final long serialVersionUID = 6009335074727417445L;
 
 		private String fValue;
@@ -217,7 +217,7 @@
 
 	}
 
-	public class IntegerArgumentImpl extends ArgumentImpl implements IntegerArgument {
+	public static class IntegerArgumentImpl extends ArgumentImpl implements IntegerArgument {
 		private static final long serialVersionUID = 6009335074727417445L;
 		private Integer fValue;
 		private int fMin;
@@ -305,7 +305,7 @@
 		}
 	}
 
-	public class BooleanArgumentImpl extends ArgumentImpl implements BooleanArgument {
+	public static class BooleanArgumentImpl extends ArgumentImpl implements BooleanArgument {
 		private static final long serialVersionUID = 6009335074727417445L;
 		private Boolean fValue;
 
diff --git a/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/connect/SocketTransportService.java b/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/connect/SocketTransportService.java
index c6aa9e3..02caffe 100644
--- a/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/connect/SocketTransportService.java
+++ b/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/connect/SocketTransportService.java
@@ -59,7 +59,7 @@
 		}
 	};
 
-	private class SocketListenKey extends ListenKey {
+	private static class SocketListenKey extends ListenKey {
 		private String fAddress;
 
 		SocketListenKey(String address) {
diff --git a/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/request/EventRequestImpl.java b/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/request/EventRequestImpl.java
index cd3c6e0..c50d2fb 100644
--- a/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/request/EventRequestImpl.java
+++ b/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/request/EventRequestImpl.java
@@ -796,7 +796,7 @@
 		return fModifierKindMap;
 	}
 
-	class ExceptionFilter {
+	static class ExceptionFilter {
 		/**
 		 * If non-null, specifies that exceptions which are instances of
 		 * fExceptionFilterRef will be reported.
@@ -808,7 +808,7 @@
 		boolean fNotifyUncaught = false;
 	}
 
-	class ThreadStepFilter {
+	static class ThreadStepFilter {
 		/** ThreadReference of thread in which to step. */
 		protected ThreadReferenceImpl fThread = null;
 		/** Size of each step. */
diff --git a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIThread.java b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIThread.java
index e495b02..c384253 100644
--- a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIThread.java
+++ b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIThread.java
@@ -3739,7 +3739,7 @@
 	 *
 	 * @since 3.3.0
 	 */
-	class SerialPerObjectRule implements ISchedulingRule {
+	static class SerialPerObjectRule implements ISchedulingRule {
 
 		private Object fObject = null;
 
diff --git a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/StandardVMRunner.java b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/StandardVMRunner.java
index 0f89647..872f463 100644
--- a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/StandardVMRunner.java
+++ b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/StandardVMRunner.java
@@ -345,7 +345,7 @@
 		return vmargs;
 	}
 
-	protected class CommandDetails {
+	protected static class CommandDetails {
 		private String[] commandLine;
 		private String[] envp;
 		private File workingDir;
