Index: src/java/javax/jdo/AttributeConverter.java
===================================================================
--- src/java/javax/jdo/AttributeConverter.java	(revision 1679608)
+++ src/java/javax/jdo/AttributeConverter.java	(working copy)
@@ -30,13 +30,24 @@
  */
 public interface AttributeConverter<A, D> {
 
-	/**
-	 * Converts the given persistent attribute value to its representation in the datastore.
-	 */
-	D convertToDatastore(A attributeValue);
+    /**
+     * Converts the given persistent attribute value to its representation in the datastore.
+     */
+    D convertToDatastore(A attributeValue);
 
-	/**
-	 * Converts the given datastore value to its representation as a persistent attribute.
-	 */
-	A convertToAttribute(D datastoreValue);
+    /**
+     * Converts the given datastore value to its representation as a persistent attribute.
+     */
+    A convertToAttribute(D datastoreValue);
+
+	public static class NullAttributeConverter implements AttributeConverter<Object, Object>
+	{
+		public Object convertToDatastore(Object attributeValue) {
+			return null;
+		}
+
+		public Object convertToAttribute(Object datastoreValue) {
+			return null;
+		}
+	}
 }
Index: src/java/javax/jdo/annotations/Convert.java
===================================================================
--- src/java/javax/jdo/annotations/Convert.java	(revision 1679819)
+++ src/java/javax/jdo/annotations/Convert.java	(working copy)
@@ -29,14 +29,10 @@
  *
  * If this annotation is placed on a type, then the conversion applies to all fields or properties whose types
  * match the entity type of the given {@link AttributeConverter}.
- * If {@link #name()} is not the empty string, then the conversion only holds for the field or property
- * whose name matches the given name. Placing this annotation on a class allow
- * for centralized configuration of class-scoped {@link AttributeConverter}s.
- * Any {@link Convert} annotations placed on attributes within the annotated
- * type override this annotation.
+ * Any {@link Convert} annotations placed on members overrides any type-level conversion specifications.
  * 
- * If this annotation is placed on a field or property, then {@link #name()} is ignored and the annotated
- * attribute's type must be assignment-compatible with the {@link AttributeConverter}'s entity type argument.
+ * If this annotation is placed on a field or property, the annotated attribute's type must be 
+ * assignment-compatible with the {@link AttributeConverter}'s entity type argument.
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD })
@@ -53,11 +49,4 @@
 	 * Setting this to false allows disabling conversion that was specified at PMF level.
 	 */
 	boolean enabled() default true;
-
-	/**
-	 * The name of the field or property to which this conversion applies.
-	 * Ignored if this annotation is for a non-container member.
-	 * Specifying "key", "value" defines which part of a Map this applies to.
-	 */
-	String name() default "";
 }
Index: src/java/javax/jdo/annotations/Element.java
===================================================================
--- src/java/javax/jdo/annotations/Element.java	(revision 1679608)
+++ src/java/javax/jdo/annotations/Element.java	(working copy)
@@ -21,7 +21,10 @@
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
+import javax.jdo.AttributeConverter;
+import javax.jdo.AttributeConverter.NullAttributeConverter;
 
+
 /**
  * Annotation for the element of a collection/array relation.
  * Corresponds to the xml element "element".
@@ -139,6 +142,18 @@
      */
     String foreignKey() default "";
 
+	/**
+	 * Optional {@link AttributeConverter} to use for converting this element.
+	 */
+	@SuppressWarnings("rawtypes")
+	Class<? extends AttributeConverter> converter() default NullAttributeConverter.class;
+
+	/**
+	 * Whether we should disable any conversion specified at the PMF level (where converter is not specified).
+	 * @return Whether PMF attribute conversion is to be disabled.
+	 */
+	boolean disableConversion() default false;
+
     /** Vendor extensions.
      * @return the vendor extensions
      */
Index: src/java/javax/jdo/annotations/Key.java
===================================================================
--- src/java/javax/jdo/annotations/Key.java	(revision 1679817)
+++ src/java/javax/jdo/annotations/Key.java	(working copy)
@@ -21,7 +21,10 @@
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
+import javax.jdo.AttributeConverter;
+import javax.jdo.AttributeConverter.NullAttributeConverter;
 
+
 /**
  * Annotation for the key of a map relation.
  * Corresponds to the xml element "key".
@@ -136,6 +139,18 @@
      */
     String foreignKey() default "";
 
+	/**
+	 * Optional {@link AttributeConverter} to use for converting this key.
+	 */
+	@SuppressWarnings("rawtypes")
+	Class<? extends AttributeConverter> converter() default NullAttributeConverter.class;
+
+	/**
+	 * Whether we should disable any conversion specified at the PMF level (where converter is not specified).
+	 * @return Whether PMF attribute conversion is to be disabled.
+	 */
+	boolean disableConversion() default false;
+
     /** Vendor extensions.
      * @return the vendor extensions
      */
Index: src/java/javax/jdo/annotations/Persistent.java
===================================================================
--- src/java/javax/jdo/annotations/Persistent.java	(revision 1679608)
+++ src/java/javax/jdo/annotations/Persistent.java	(working copy)
@@ -21,6 +21,9 @@
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
+import javax.jdo.AttributeConverter;
+import javax.jdo.AttributeConverter.NullAttributeConverter;
+
 /**
  * Annotation for defining the persistence of a member.
  * This corresponds to the xml elements "field" and "property". 
@@ -208,6 +211,18 @@
      */
     String cacheable() default "true";
 
+	/**
+	 * Optional {@link AttributeConverter} to use for converting this member.
+	 */
+	@SuppressWarnings("rawtypes")
+	Class<? extends AttributeConverter> converter() default NullAttributeConverter.class;
+
+	/**
+	 * Whether we should disable any conversion specified at the PMF level (where converter is not specified).
+	 * @return Whether PMF attribute conversion is to be disabled.
+	 */
+	boolean disableConversion() default false;
+
     /** Vendor extensions for this member. 
      * @return the vendor extensions
      */
Index: src/java/javax/jdo/annotations/Value.java
===================================================================
--- src/java/javax/jdo/annotations/Value.java	(revision 1679608)
+++ src/java/javax/jdo/annotations/Value.java	(working copy)
@@ -21,6 +21,9 @@
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
+import javax.jdo.AttributeConverter;
+import javax.jdo.AttributeConverter.NullAttributeConverter;
+
 /**
  * Annotation for the value of a map relation.
  * Corresponds to the xml element "value".
@@ -135,6 +138,18 @@
      */
     String foreignKey() default "";
 
+	/**
+	 * Optional {@link AttributeConverter} to use for converting this value.
+	 */
+	@SuppressWarnings("rawtypes")
+	Class<? extends AttributeConverter> converter() default NullAttributeConverter.class;
+
+	/**
+	 * Whether we should disable any conversion specified at the PMF level (where converter is not specified).
+	 * @return Whether PMF attribute conversion is to be disabled.
+	 */
+	boolean disableConversion() default false;
+
     /** Vendor extensions.
      * @return the vendor extensions
      */
