}
       else if (EQ (XCAR (value), Qcompat))
        return Qto_decomposition_at_compat;
+      else
+       return
+         Fintern
+         (concat2 (build_string ("=>decomposition@"),
+                   symbol_name (XSYMBOL (XCAR (value)))),
+          Qnil);
     }
   else
     {
            EQ (attribute, Q_decomposition) )
     {
       attribute = put_char_composition (character, value);
-      if ( EQ (attribute, Q_compat_of) ||
-          EQ (attribute, Qto_decomposition_at_compat) )
+      if ( /*
+            EQ (attribute, Q_compat_of) ||
+            EQ (attribute, Qto_decomposition_at_compat)
+          */
+         /* SYMBOLP (XCAR (value)) */
+         !EQ (attribute, Qmap_decomposition) )
        value = XCDR (value);
     }
   else if (EQ (attribute, Qto_ucs))