PMC approved fix for https://bugs.eclipse.org/bugs/show_bug.cgi?id=260931.
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/internal/view/model/jsp/CMNodeNamedMapAdapter.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/internal/view/model/jsp/CMNodeNamedMapAdapter.java
index 0f9542b..1235398 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/internal/view/model/jsp/CMNodeNamedMapAdapter.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/internal/view/model/jsp/CMNodeNamedMapAdapter.java
@@ -10,10 +10,6 @@
  *******************************************************************************/
 package org.eclipse.jst.jsf.designtime.internal.view.model.jsp;
 
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
@@ -36,7 +32,7 @@
  * 
  */
 public class CMNodeNamedMapAdapter implements
-        Map<String, ITagAttributeHandler>, Serializable
+        Map<String, ITagAttributeHandler>
 {
     /**
      * serializable id
@@ -44,7 +40,7 @@
     private static final long                       serialVersionUID = -4188412823197830484L;
     private transient final TLDElementDeclaration   _tldElement;
     private transient final IAttributeAdvisor       _advisor;
-    private transient AtomicBoolean           _isInitialized = new AtomicBoolean(false);
+    private transient final AtomicBoolean           _isInitialized = new AtomicBoolean(false);
     private final Map<String, ITagAttributeHandler> _cache;
 
     /**
@@ -164,16 +160,4 @@
     {
         throw new UnsupportedOperationException("Cannot modify map"); //$NON-NLS-1$
     }
-
-    private void readObject(final ObjectInputStream in) throws IOException, ClassNotFoundException
-    {
-        in.defaultReadObject();
-        _isInitialized = new AtomicBoolean(true);
-    }
-
-    private void writeObject(final ObjectOutputStream out) throws IOException
-    {
-        ensureAllAttributes();
-        out.defaultWriteObject();
-    }
 }
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/internal/view/model/jsp/TLDTagElement.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/internal/view/model/jsp/TLDTagElement.java
index 6924dbf..a634685 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/internal/view/model/jsp/TLDTagElement.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/designtime/internal/view/model/jsp/TLDTagElement.java
@@ -10,7 +10,9 @@
  *******************************************************************************/
 package org.eclipse.jst.jsf.designtime.internal.view.model.jsp;
 
+import java.io.IOException;
 import java.io.Serializable;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -143,6 +145,13 @@
                     , _adapter);
         }
 
+        @SuppressWarnings("unused")
+        private void readObject(java.io.ObjectInputStream in)
+                        throws IOException, ClassNotFoundException
+        {
+            throw new UnsupportedOperationException("This object should be serialized; writeReplace"); //$NON-NLS-1$
+        }
+
         @Override
         public Map<String, ? extends ITagAttributeHandler> getAttributes()
         {
@@ -179,7 +188,8 @@
             _name = name;
             _tagHandlerClassName = tagHandlerClassName;
             _uri = uri;
-            _tagAttributes = tagAttributes;
+            // copy the map, because we don't if it is simply delta
+            _tagAttributes = new HashMap(tagAttributes);
         }
 
         @Override