   "Transforms a map defining a type into a String representing a valid Eclipse
    xml extension."
   [type-def]
-  (when (.contains (:id type-def) ".")
-        (throw (RuntimeException. (str "id" (:id type-def) " must not contain dots"))))
   (b/xml-map->extension 
     {:tag "extension"
      :attrs {:point "org.eclipse.core.resources.markers"
-             :id (:id type-def)
-             :name (or (:name type-def) (:id type-def) "<unknown>")}
+             :id (eclipse-type-id (:type-id type-def))
+             :name (or (:name type-def) (eclipse-type-id (:type-id type-def)) "<unknown>")}
      :content (into []
                 (concat
                   [{:tag "persistent"

     {:id \"ccw-plugin-my-other-id\", :persistent true, :parents [:problem]})"
  ([type-def] (register-marker-type! (b/bundle "ccw.core") type-def))
  ([bundle type-def]
    (b/remove-extension! (str (.getSymbolicName bundle) "." (:id type-def)))
    (let [ext-str (as-extension type-def)]
      (b/add-contribution!
        (or (:name type-def) (:id type-def))
        ext-str
        bundle
        true ; we must force persistence, or markers disappear when Eclipse restarts
        (b/master-token)))
    (reset-marker-types!)))


                always remove all ccw or ccw-plugin markers).

   Example 1: create a new marker type, non persistent across Eclipse restarts
   (register-marker-type! {:id \"ccw-plugin-foo-my-fun-id\"})

   Example 2: create a marker type deriving directly from the eclipse problem marker
               type (but not ccw type), and make it persistent across Eclipse restarts 
