diff --git a/bundles/org.eclipse.core.filesystem/src/org/eclipse/core/filesystem/provider/FileStore.java b/bundles/org.eclipse.core.filesystem/src/org/eclipse/core/filesystem/provider/FileStore.java
index 47b2818..acf79b9 100644
--- a/bundles/org.eclipse.core.filesystem/src/org/eclipse/core/filesystem/provider/FileStore.java
+++ b/bundles/org.eclipse.core.filesystem/src/org/eclipse/core/filesystem/provider/FileStore.java
@@ -293,6 +293,9 @@
 	@Override
 	public abstract IFileInfo fetchInfo(int options, IProgressMonitor monitor) throws CoreException;
 
+	/**
+	 * @deprecated use {@link #getFileStore(IPath)} instead
+	 */
 	@Deprecated
 	@Override
 	public IFileStore getChild(IPath path) {
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/ProjectPathVariableManager.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/ProjectPathVariableManager.java
index 16ce664..618e0c7 100644
--- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/ProjectPathVariableManager.java
+++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/ProjectPathVariableManager.java
@@ -89,10 +89,10 @@
 	}
 
 	/**
-	 * @deprecated
+	 * @deprecated use {@link #getURIValue(String)} instead.
 	 */
-	@Override
 	@Deprecated
+	@Override
 	public IPath getValue(String varName) {
 		URI uri = getURIValue(varName);
 		if (uri != null)
@@ -197,7 +197,7 @@
 	}
 
 	/**
-	 * @deprecated
+	 * @deprecated use {@link #resolveURI(URI)} instead.
 	 */
 	@Override
 	@Deprecated
@@ -298,16 +298,15 @@
 	}
 
 	/**
-	 * @deprecated
+	 * @deprecated use {@link #setURIValue(String, URI)} instead.
 	 */
-	@Override
 	@Deprecated
+	@Override
 	public void setValue(String varName, IPath newValue) throws CoreException {
 		if (newValue == null)
 			setURIValue(varName, (URI) null);
 		else
 			setURIValue(varName, URIUtil.toURI(newValue));
-
 	}
 
 	/**
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Workspace.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Workspace.java
index 4551722..11ff371 100644
--- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Workspace.java
+++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Workspace.java
@@ -320,6 +320,9 @@
 		notificationManager.addListener(listener, eventMask);
 	}
 
+	/**
+	 * @deprecated Use {@link #addSaveParticipant(String, ISaveParticipant)} instead
+	 */
 	@Deprecated
 	@Override
 	public ISavedState addSaveParticipant(Plugin plugin, ISaveParticipant participant) throws CoreException {
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/resources/IFile.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/resources/IFile.java
index 98cf9e6..8bbd71b 100644
--- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/resources/IFile.java
+++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/resources/IFile.java
@@ -760,7 +760,7 @@
 	 * <li> The corresponding location in the local file system
 	 *       is occupied by a directory.</li>
 	 * </ul>
-	 * @deprecated use IFile#getCharset instead
+	 * @deprecated use {@link #getCharset} instead
 	 */
 	@Deprecated
 	public int getEncoding() throws CoreException;
@@ -815,9 +815,8 @@
 	 *
 	 * @see IResource#isReadOnly()
 	 * @see IStorage#isReadOnly()
-	 * @deprecated
 	 */
-	@Deprecated
+	@SuppressWarnings("deprecation")
 	@Override
 	public boolean isReadOnly();
 
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/resources/IPathVariableManager.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/resources/IPathVariableManager.java
index 0c0152f..ce9931b 100644
--- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/resources/IPathVariableManager.java
+++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/resources/IPathVariableManager.java
@@ -97,11 +97,11 @@
 	 * @param name the name of the variable 
 	 * @param value the value for the variable (may be <code>null</code>)
 	 * @exception CoreException if this method fails. Reasons include:
-	 * @deprecated use setValue(String, URI) instead.
 	 * <ul>
 	 * <li>The variable name is not valid</li>
 	 * <li>The variable value is relative</li>
 	 * </ul>
+	 * @deprecated use {@link #setURIValue(String, URI)} instead.
 	 */
 	@Deprecated
 	public void setValue(String name, IPath value) throws CoreException;
@@ -149,7 +149,7 @@
 	 * @param name the name of the variable to return the value for  
 	 * @return the value for the variable, or <code>null</code> if there is no
 	 *    variable defined with the given name
-	 * @deprecated use getURIValue(String) instead.
+	 * @deprecated use {@link #getURIValue(String)} instead.
 	 */
 	@Deprecated
 	public IPath getValue(String name);
@@ -248,7 +248,7 @@
 	 * 
 	 * @param path the path to be resolved
 	 * @return the resolved path or <code>null</code>
-	 * @deprecated use resolveURI(URI) instead.
+	 * @deprecated use {@link #resolveURI(URI)} instead.
 	 */
 	@Deprecated
 	public IPath resolvePath(IPath path);
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/resources/IResource.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/resources/IResource.java
index 242abda..083e828 100644
--- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/resources/IResource.java
+++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/resources/IResource.java
@@ -1932,7 +1932,7 @@
 	 *
 	 * @return <code>true</code> if this resource is read-only, 
 	 *		<code>false</code> otherwise
-	 * @deprecated use <tt>IResource#getResourceAttributes()</tt>
+	 * @deprecated use {@link #getResourceAttributes()}
 	 */
 	@Deprecated
 	public boolean isReadOnly();
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/resources/team/FileModificationValidator.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/resources/team/FileModificationValidator.java
index 06846a1..926988a 100644
--- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/resources/team/FileModificationValidator.java
+++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/resources/team/FileModificationValidator.java
@@ -25,6 +25,7 @@
  * </p>
  * @since 3.3
  */
+@SuppressWarnings("deprecation")
 public abstract class FileModificationValidator implements IFileModificationValidator {
 
 	/**
@@ -47,8 +48,8 @@
 	 * interface. Clients should call {@link #validateEdit(IFile[], FileModificationValidationContext)}
 	 * instead.
 	 */
-	@Override
 	@Deprecated
+	@Override
 	public final IStatus validateEdit(IFile[] files, Object context) {
 		FileModificationValidationContext validationContext;
 		if (context == null)
@@ -75,9 +76,7 @@
 	 * 
 	 * @see IFile#setContents(java.io.InputStream, int, org.eclipse.core.runtime.IProgressMonitor)
 	 * @see IFile#appendContents(java.io.InputStream, int, org.eclipse.core.runtime.IProgressMonitor)
-	 * @deprecated
 	 */
-	@Deprecated
 	@Override
 	public IStatus validateSave(IFile file) {
 		return validateEdit(new IFile[] {file}, (FileModificationValidationContext) null);
