public override void GetObjectData(SerializationInfo info, StreamingContext context)
 {
     info.AddValue <Type>("Type", Type);
     info.AddValue <string>("FullName", FullName);
     info.AddValue <string>("ShortName", ShortName);
     info.AddValue <IIdentifier>("identifier", identifier);
     info.AddValue <IList <IAssociationSpecImmutable> >("Fields", Fields.ToList());
     info.AddValue <IList <ITypeSpecImmutable> >("Interfaces", Interfaces.ToList());
     info.AddValue <ITypeSpecImmutable>("Superclass", Superclass);
     info.AddValue <IList <ITypeSpecImmutable> >("subclasses", subclasses.ToList());
     info.AddValue <IList <IActionSpecImmutable> >("ObjectActions", ObjectActions.ToList());
     info.AddValue <IList <IActionSpecImmutable> >("ContributedActions", ContributedActions.ToList());
     info.AddValue <IList <IActionSpecImmutable> >("CollectionContributedActions", CollectionContributedActions.ToList());
     info.AddValue <IList <IActionSpecImmutable> >("FinderActions", FinderActions.ToList());
     base.GetObjectData(info, context);
 }