Added stubs for IFile and IMarker.
diff --git a/com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/stubs/FileStub.java b/com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/stubs/FileStub.java
index b962620..22491f4 100644
--- a/com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/stubs/FileStub.java
+++ b/com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/stubs/FileStub.java
@@ -6,13 +6,12 @@
  *
  * http://www.eclipse.org/legal/epl-v10.html
  */
-
 package com.google.eclipse.protobuf.junit.stubs;
 
 import java.io.InputStream;
 import java.io.Reader;
 import java.net.URI;
-import java.util.Map;
+import java.util.*;
 
 import org.eclipse.core.resources.*;
 import org.eclipse.core.runtime.*;
@@ -23,394 +22,490 @@
  */
 public abstract class FileStub implements IFile {
 
-  /** {@inheritDoc} */
-  public void accept(IResourceProxyVisitor visitor, int memberFlags) throws CoreException {}
+  private final Map<String, List<IMarker>> markersByType = new HashMap<String, List<IMarker>>();
 
   /** {@inheritDoc} */
-  public void accept(IResourceVisitor visitor) throws CoreException {}
-
-  /** {@inheritDoc} */
-  public void accept(IResourceVisitor visitor, int depth, boolean includePhantoms) throws CoreException {}
-
-  /** {@inheritDoc} */
-  public void accept(IResourceVisitor visitor, int depth, int memberFlags) throws CoreException {}
-
-  /** {@inheritDoc} */
-  public void clearHistory(IProgressMonitor monitor) throws CoreException {}
-
-  /** {@inheritDoc} */
-  public boolean contains(ISchedulingRule rule) {
-    return false;
+  public void accept(IResourceProxyVisitor visitor, int memberFlags) throws CoreException {
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
-  public void copy(IPath destination, boolean force, IProgressMonitor monitor) throws CoreException {}
+  public void accept(IResourceVisitor visitor) throws CoreException {
+    throw new UnsupportedOperationException();
+  }
 
   /** {@inheritDoc} */
-  public void copy(IPath destination, int updateFlags, IProgressMonitor monitor) throws CoreException {}
+  public void accept(IResourceVisitor visitor, int depth, boolean includePhantoms) throws CoreException {
+    throw new UnsupportedOperationException();
+  }
 
   /** {@inheritDoc} */
-  public void copy(IProjectDescription description, boolean force, IProgressMonitor monitor) throws CoreException {}
+  public void accept(IResourceVisitor visitor, int depth, int memberFlags) throws CoreException {
+    throw new UnsupportedOperationException();
+  }
 
   /** {@inheritDoc} */
-  public void copy(IProjectDescription description, int updateFlags, IProgressMonitor monitor) throws CoreException {}
+  public void clearHistory(IProgressMonitor monitor) throws CoreException {
+    throw new UnsupportedOperationException();
+  }
+
+  /** {@inheritDoc} */
+  public boolean contains(ISchedulingRule rule) {
+    throw new UnsupportedOperationException();
+  }
+
+  /** {@inheritDoc} */
+  public void copy(IPath destination, boolean force, IProgressMonitor monitor) throws CoreException {
+    throw new UnsupportedOperationException();
+  }
+
+  /** {@inheritDoc} */
+  public void copy(IPath destination, int updateFlags, IProgressMonitor monitor) throws CoreException {
+    throw new UnsupportedOperationException();
+  }
+
+  /** {@inheritDoc} */
+  public void copy(IProjectDescription description, boolean force, IProgressMonitor monitor) throws CoreException {
+    throw new UnsupportedOperationException();
+  }
+
+  /** {@inheritDoc} */
+  public void copy(IProjectDescription description, int updateFlags, IProgressMonitor monitor) throws CoreException {
+    throw new UnsupportedOperationException();
+  }
 
   /** {@inheritDoc} */
   public IMarker createMarker(String type) throws CoreException {
-    return null;
+    MarkerStub marker = new MarkerStub(type);
+    List<IMarker> markers = markersByType.get(type);
+    if (markers == null) {
+      markers = new ArrayList<IMarker>();
+      markersByType.put(type, markers);
+    }
+    markers.add(marker);
+    return marker;
   }
 
   /** {@inheritDoc} */
   public IResourceProxy createProxy() {
-    return null;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
-  public void delete(boolean force, IProgressMonitor monitor) throws CoreException {}
+  public void delete(boolean force, IProgressMonitor monitor) throws CoreException {
+    throw new UnsupportedOperationException();
+  }
 
   /** {@inheritDoc} */
-  public void delete(int updateFlags, IProgressMonitor monitor) throws CoreException {}
+  public void delete(int updateFlags, IProgressMonitor monitor) throws CoreException {
+    throw new UnsupportedOperationException();
+  }
 
   /** {@inheritDoc} */
-  public void deleteMarkers(String type, boolean includeSubtypes, int depth) throws CoreException {}
+  public void deleteMarkers(String type, boolean includeSubtypes, int depth) throws CoreException {
+    List<IMarker> markers = markersByType.get(type);
+    if (markers != null) markers.clear();
+  }
 
   /** {@inheritDoc} */
   public boolean exists() {
-    return false;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public IMarker findMarker(long id) throws CoreException {
-    return null;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public IMarker[] findMarkers(String type, boolean includeSubtypes, int depth) throws CoreException {
-    return null;
+    List<IMarker> markers = markersByType.get(type);
+    if (markers == null) return new IMarker[0];
+    return markers.toArray(new IMarker[markers.size()]);
   }
 
   /** {@inheritDoc} */
   public int findMaxProblemSeverity(String type, boolean includeSubtypes, int depth) throws CoreException {
-    return 0;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   @SuppressWarnings("rawtypes") public Object getAdapter(Class adapter) {
-    return null;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public String getFileExtension() {
-    return null;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public long getLocalTimeStamp() {
-    return 0;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public IPath getLocation() {
-    return null;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public URI getLocationURI() {
-    return null;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public IMarker getMarker(long id) {
-    return null;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public long getModificationStamp() {
-    return 0;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public IPathVariableManager getPathVariableManager() {
-    return null;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public IContainer getParent() {
-    return null;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public Map<QualifiedName, String> getPersistentProperties() throws CoreException {
-    return null;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public String getPersistentProperty(QualifiedName key) throws CoreException {
-    return null;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public IProject getProject() {
-    return null;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public IPath getProjectRelativePath() {
-    return null;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public IPath getRawLocation() {
-    return null;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public URI getRawLocationURI() {
-    return null;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public ResourceAttributes getResourceAttributes() {
-    return null;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public Map<QualifiedName, Object> getSessionProperties() throws CoreException {
-    return null;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public Object getSessionProperty(QualifiedName key) throws CoreException {
-    return null;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public int getType() {
-    return 0;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public IWorkspace getWorkspace() {
-    return null;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public boolean isAccessible() {
-    return false;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public boolean isConflicting(ISchedulingRule rule) {
-    return false;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public boolean isDerived() {
-    return false;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public boolean isDerived(int options) {
-    return false;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public boolean isHidden() {
-    return false;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public boolean isHidden(int options) {
-    return false;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public boolean isLinked() {
-    return false;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public boolean isVirtual() {
-    return false;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public boolean isLinked(int options) {
-    return false;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public boolean isLocal(int depth) {
-    return false;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public boolean isPhantom() {
-    return false;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public boolean isSynchronized(int depth) {
-    return false;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public boolean isTeamPrivateMember() {
-    return false;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public boolean isTeamPrivateMember(int options) {
-    return false;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
-  public void move(IPath destination, boolean force, IProgressMonitor monitor) throws CoreException {}
+  public void move(IPath destination, boolean force, IProgressMonitor monitor) throws CoreException {
+    throw new UnsupportedOperationException();
+  }
 
   /** {@inheritDoc} */
-  public void move(IPath destination, int updateFlags, IProgressMonitor monitor) throws CoreException {}
+  public void move(IPath destination, int updateFlags, IProgressMonitor monitor) throws CoreException {
+    throw new UnsupportedOperationException();
+  }
 
   /** {@inheritDoc} */
   public void move(IProjectDescription description, boolean force, boolean keepHistory, IProgressMonitor monitor)
-      throws CoreException {}
-
-  /** {@inheritDoc} */
-  public void move(IProjectDescription description, int updateFlags, IProgressMonitor monitor) throws CoreException {}
-
-  /** {@inheritDoc} */
-  public void refreshLocal(int depth, IProgressMonitor monitor) throws CoreException {}
-
-  /** {@inheritDoc} */
-  public void revertModificationStamp(long value) throws CoreException {}
-
-  /** {@inheritDoc} */
-  public void setDerived(boolean isDerived) throws CoreException {}
-
-  /** {@inheritDoc} */
-  public void setDerived(boolean isDerived, IProgressMonitor monitor) throws CoreException {}
-
-  /** {@inheritDoc} */
-  public void setHidden(boolean isHidden) throws CoreException {}
-
-  /** {@inheritDoc} */
-  public void setLocal(boolean flag, int depth, IProgressMonitor monitor) throws CoreException {}
-
-  /** {@inheritDoc} */
-  public long setLocalTimeStamp(long value) throws CoreException {
-    return 0;
+      throws CoreException {
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
-  public void setPersistentProperty(QualifiedName key, String value) throws CoreException {}
+  public void move(IProjectDescription description, int updateFlags, IProgressMonitor monitor) throws CoreException {
+    throw new UnsupportedOperationException();
+  }
 
   /** {@inheritDoc} */
-  public void setReadOnly(boolean readOnly) {}
+  public void refreshLocal(int depth, IProgressMonitor monitor) throws CoreException {
+    throw new UnsupportedOperationException();
+  }
 
   /** {@inheritDoc} */
-  public void setResourceAttributes(ResourceAttributes attributes) throws CoreException {}
+  public void revertModificationStamp(long value) throws CoreException {
+    throw new UnsupportedOperationException();
+  }
 
   /** {@inheritDoc} */
-  public void setSessionProperty(QualifiedName key, Object value) throws CoreException {}
+  public void setDerived(boolean isDerived) throws CoreException {
+    throw new UnsupportedOperationException();
+  }
 
   /** {@inheritDoc} */
-  public void setTeamPrivateMember(boolean isTeamPrivate) throws CoreException {}
+  public void setDerived(boolean isDerived, IProgressMonitor monitor) throws CoreException {
+    throw new UnsupportedOperationException();
+  }
 
   /** {@inheritDoc} */
-  public void touch(IProgressMonitor monitor) throws CoreException {}
+  public void setHidden(boolean isHidden) throws CoreException {
+    throw new UnsupportedOperationException();
+  }
+
+  /** {@inheritDoc} */
+  public void setLocal(boolean flag, int depth, IProgressMonitor monitor) throws CoreException {
+    throw new UnsupportedOperationException();
+  }
+
+  /** {@inheritDoc} */
+  public long setLocalTimeStamp(long value) throws CoreException {
+    throw new UnsupportedOperationException();
+  }
+
+  /** {@inheritDoc} */
+  public void setPersistentProperty(QualifiedName key, String value) throws CoreException {
+    throw new UnsupportedOperationException();
+  }
+
+  /** {@inheritDoc} */
+  public void setReadOnly(boolean readOnly) {
+    throw new UnsupportedOperationException();
+  }
+
+  /** {@inheritDoc} */
+  public void setResourceAttributes(ResourceAttributes attributes) throws CoreException {
+    throw new UnsupportedOperationException();
+  }
+
+  /** {@inheritDoc} */
+  public void setSessionProperty(QualifiedName key, Object value) throws CoreException {
+    throw new UnsupportedOperationException();
+  }
+
+  /** {@inheritDoc} */
+  public void setTeamPrivateMember(boolean isTeamPrivate) throws CoreException {
+    throw new UnsupportedOperationException();
+  }
+
+  /** {@inheritDoc} */
+  public void touch(IProgressMonitor monitor) throws CoreException {
+    throw new UnsupportedOperationException();
+  }
 
   /** {@inheritDoc} */
   public void appendContents(InputStream source, boolean force, boolean keepHistory, IProgressMonitor monitor)
-      throws CoreException {}
+      throws CoreException {
+    throw new UnsupportedOperationException();
+  }
 
   /** {@inheritDoc} */
-  public void appendContents(InputStream source, int updateFlags, IProgressMonitor monitor) throws CoreException {}
+  public void appendContents(InputStream source, int updateFlags, IProgressMonitor monitor) throws CoreException {
+    throw new UnsupportedOperationException();
+  }
 
   /** {@inheritDoc} */
-  public void create(InputStream source, boolean force, IProgressMonitor monitor) throws CoreException {}
+  public void create(InputStream source, boolean force, IProgressMonitor monitor) throws CoreException {
+    throw new UnsupportedOperationException();
+  }
 
   /** {@inheritDoc} */
-  public void create(InputStream source, int updateFlags, IProgressMonitor monitor) throws CoreException {}
+  public void create(InputStream source, int updateFlags, IProgressMonitor monitor) throws CoreException {
+    throw new UnsupportedOperationException();
+  }
 
   /** {@inheritDoc} */
-  public void createLink(IPath localLocation, int updateFlags, IProgressMonitor monitor) throws CoreException {}
+  public void createLink(IPath localLocation, int updateFlags, IProgressMonitor monitor) throws CoreException {
+    throw new UnsupportedOperationException();
+  }
 
   /** {@inheritDoc} */
-  public void createLink(URI location, int updateFlags, IProgressMonitor monitor) throws CoreException {}
+  public void createLink(URI location, int updateFlags, IProgressMonitor monitor) throws CoreException {
+    throw new UnsupportedOperationException();
+  }
 
   /** {@inheritDoc} */
-  public void delete(boolean force, boolean keepHistory, IProgressMonitor monitor) throws CoreException {}
+  public void delete(boolean force, boolean keepHistory, IProgressMonitor monitor) throws CoreException {
+    throw new UnsupportedOperationException();
+  }
 
   /** {@inheritDoc} */
   public String getCharset() throws CoreException {
-    return null;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public String getCharset(boolean checkImplicit) throws CoreException {
-    return null;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public String getCharsetFor(Reader reader) throws CoreException {
-    return null;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public InputStream getContents() throws CoreException {
-    return null;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public InputStream getContents(boolean force) throws CoreException {
-    return null;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public int getEncoding() throws CoreException {
-    return 0;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public IPath getFullPath() {
-    return null;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public IFileState[] getHistory(IProgressMonitor monitor) throws CoreException {
-    return null;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public String getName() {
-    return null;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public boolean isReadOnly() {
-    return false;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public void move(IPath destination, boolean force, boolean keepHistory, IProgressMonitor monitor)
-      throws CoreException {}
+      throws CoreException {
+    throw new UnsupportedOperationException();
+  }
 
   /** {@inheritDoc} */
-  public void setCharset(String newCharset) throws CoreException {}
+  public void setCharset(String newCharset) throws CoreException {
+    throw new UnsupportedOperationException();
+  }
 
   /** {@inheritDoc} */
-  public void setCharset(String newCharset, IProgressMonitor monitor) throws CoreException {}
+  public void setCharset(String newCharset, IProgressMonitor monitor) throws CoreException {
+    throw new UnsupportedOperationException();
+  }
 
   /** {@inheritDoc} */
   public void setContents(InputStream source, boolean force, boolean keepHistory, IProgressMonitor monitor)
-      throws CoreException {}
+      throws CoreException {
+    throw new UnsupportedOperationException();
+  }
 
   /** {@inheritDoc} */
   public void setContents(IFileState source, boolean force, boolean keepHistory, IProgressMonitor monitor)
-      throws CoreException {}
+      throws CoreException {
+    throw new UnsupportedOperationException();
+  }
 
   /** {@inheritDoc} */
-  public void setContents(InputStream source, int updateFlags, IProgressMonitor monitor) throws CoreException {}
+  public void setContents(InputStream source, int updateFlags, IProgressMonitor monitor) throws CoreException {
+    throw new UnsupportedOperationException();
+  }
 
   /** {@inheritDoc} */
-  public void setContents(IFileState source, int updateFlags, IProgressMonitor monitor) throws CoreException {}
+  public void setContents(IFileState source, int updateFlags, IProgressMonitor monitor) throws CoreException {
+    throw new UnsupportedOperationException();
+  }
 }
diff --git a/com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/stubs/MarkerStub.java b/com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/stubs/MarkerStub.java
index 848be9a..0578871 100644
--- a/com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/stubs/MarkerStub.java
+++ b/com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/stubs/MarkerStub.java
@@ -6,10 +6,11 @@
  *
  * http://www.eclipse.org/legal/epl-v10.html
  */
-
 package com.google.eclipse.protobuf.junit.stubs;
 
-import java.util.Map;
+import static java.util.Collections.unmodifiableMap;
+
+import java.util.*;
 
 import org.eclipse.core.resources.IMarker;
 import org.eclipse.core.resources.IResource;
@@ -20,86 +21,115 @@
  */
 public class MarkerStub implements IMarker {
 
-  /** {@inheritDoc} */
-  @SuppressWarnings("rawtypes") public Object getAdapter(Class adapter) {
-    return null;
+  private final Map<String, Object> attributes = new HashMap<String, Object>();
+  private final String type;
+  private final long creationTime;
+
+  public MarkerStub(String type) {
+    this.type = type;
+    creationTime = System.currentTimeMillis();
   }
 
   /** {@inheritDoc} */
-  public void delete() throws CoreException {}
+  @SuppressWarnings("rawtypes") public Object getAdapter(Class adapter) {
+    throw new UnsupportedOperationException();
+  }
+
+  /** {@inheritDoc} */
+  public void delete() throws CoreException {
+    throw new UnsupportedOperationException();
+  }
 
   /** {@inheritDoc} */
   public boolean exists() {
-    return false;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public Object getAttribute(String attributeName) throws CoreException {
-    return null;
+    return attributes.get(attributeName);
   }
 
   /** {@inheritDoc} */
   public int getAttribute(String attributeName, int defaultValue) {
-    return 0;
+    Object attribute = attributes.get(attributeName);
+    if (attribute instanceof Integer) return (Integer) attribute;
+    return defaultValue;
   }
 
   /** {@inheritDoc} */
   public String getAttribute(String attributeName, String defaultValue) {
-    return null;
+    Object attribute = attributes.get(attributeName);
+    if (attribute instanceof String) return (String) attribute;
+    return defaultValue;
   }
 
   /** {@inheritDoc} */
   public boolean getAttribute(String attributeName, boolean defaultValue) {
-    return false;
+    Object attribute = attributes.get(attributeName);
+    if (attribute instanceof Boolean) return (Boolean) attribute;
+    return defaultValue;
   }
 
   /** {@inheritDoc} */
   public Map<String, Object> getAttributes() throws CoreException {
-    return null;
+    return unmodifiableMap(attributes);
   }
 
   /** {@inheritDoc} */
   public Object[] getAttributes(String[] attributeNames) throws CoreException {
-    return null;
+    List<Object> values = new ArrayList<Object>();
+    for (String name : attributeNames) values.add(attributes.get(name));
+    return values.toArray();
   }
 
   /** {@inheritDoc} */
   public long getCreationTime() throws CoreException {
-    return 0;
+    return creationTime;
   }
 
   /** {@inheritDoc} */
   public long getId() {
-    return 0;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public IResource getResource() {
-    return null;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
   public String getType() throws CoreException {
-    return null;
+    return type;
   }
 
   /** {@inheritDoc} */
   public boolean isSubtypeOf(String superType) throws CoreException {
-    return false;
+    throw new UnsupportedOperationException();
   }
 
   /** {@inheritDoc} */
-  public void setAttribute(String attributeName, int value) throws CoreException {}
+  public void setAttribute(String attributeName, int value) throws CoreException {
+    attributes.put(attributeName, value);
+  }
 
   /** {@inheritDoc} */
-  public void setAttribute(String attributeName, Object value) throws CoreException {}
+  public void setAttribute(String attributeName, Object value) throws CoreException {
+    attributes.put(attributeName, value);
+  }
 
   /** {@inheritDoc} */
-  public void setAttribute(String attributeName, boolean value) throws CoreException {}
+  public void setAttribute(String attributeName, boolean value) throws CoreException {
+    attributes.put(attributeName, value);
+  }
 
   /** {@inheritDoc} */
-  public void setAttributes(String[] attributeNames, Object[] values) throws CoreException {}
+  public void setAttributes(String[] attributeNames, Object[] values) throws CoreException {
+    throw new UnsupportedOperationException();
+  }
 
   /** {@inheritDoc} */
-  public void setAttributes(Map<String, ? extends Object> attributes) throws CoreException {}
+  public void setAttributes(Map<String, ? extends Object> attributes) throws CoreException {
+    this.attributes.putAll(attributes);
+  }
 }