//It's nice to have a copy constructor, just in case some test needs it.
 public ComplexContainer(ComplexContainer CopyObject)
 {
     ID          = CopyObject.ID;
     CreateTime  = CopyObject.CreateTime;
     Description = CopyObject.Description;
     References  = new List <ComplexContainer>(CopyObject.References);
     FileMapping = new Dictionary <int, string>(CopyObject.FileMapping);
     SecretValue = CopyObject.SecretValue;
 }
        public override bool Equals(object obj)
        {
            ComplexContainer testObject = null;

            try
            {
                testObject = (ComplexContainer)obj;
            }
            catch
            {
                return(false);
            }

            return(ID == testObject.ID & Description == testObject.Description & References.Select(x => x.ID).SequenceEqual(testObject.References.Select(x => x.ID)) & SecretValue == testObject.SecretValue & CreateTime == testObject.CreateTime & FileMapping.IsEquivalentTo(testObject.FileMapping));
        }