--- E:\src\extern\nant\src\NAnt.Core\aa\DataTypeBase.cs	Thu Oct 30 23:39:53 2003
+++ E:\src\extern\nant\src\NAnt.Core\DataTypeBase.cs	Mon Jan 19 14:12:46 2004
@@ -31,10 +31,17 @@
     /// </summary>
     [Serializable()]
     public abstract class DataTypeBase : Element {
-        #region Private Instance Fields
+
+		public enum RedefineMode {
+            Replace,
+            Append
+        }		
+
+		#region Private Instance Fields
 
         private string _id;
         private string _refID;
+		private RedefineMode _redefMode = RedefineMode.Replace;
 
         #endregion Private Instance Fields
 
@@ -54,6 +61,15 @@
             set { _refID = StringUtils.ConvertEmptyToNull(value); }
         }
 
+		/// <summary>
+		/// What to do when type with this ID is already defined
+		/// </summary>
+		[TaskAttribute("redefinemode")]
+		public RedefineMode RedefMode {
+			get { return _redefMode; }
+			set { _redefMode = value; }
+		}
+		
         #endregion Public Instance Properties
 
         #region Override implementation of Element
@@ -116,6 +132,22 @@
         public virtual void Reset( ) {
         }
 
+        /// <summary>
+        /// Could be overridden by derived classes. Merges the referenced types 
+        /// data with the current instance.
+        /// </summary>
+        public virtual void MergeWith(DataTypeBase with) {
+            //plain XML merge
+            string n = XmlNode.Name;
+            foreach(XmlNode ch in with.XmlNode.ChildNodes)
+            {
+                XmlNode newnode = ch.Clone();
+                XmlNode.AppendChild(newnode);
+                Log(Level.Debug,"adding {0}",newnode.OuterXml);
+            }
+            this.Initialize(XmlNode);
+        }
+		
         #endregion Public Instance Methods
     }
-}
\ No newline at end of file
+}
