public override bool Equals(object o)
        {
            if (this == o)
            {
                return(true);
            }
            if (o == null || GetType() != o.GetType())
            {
                return(false);
            }
            ClassDefinition that = (ClassDefinition)o;

            if (classId != that.classId)
            {
                return(false);
            }
            if (version != that.version)
            {
                return(false);
            }
            if (GetFieldCount() != that.GetFieldCount())
            {
                return(false);
            }
            foreach (IFieldDefinition fd in fieldDefinitionsMap.Values)
            {
                IFieldDefinition fd2 = that.GetField(fd.GetName());
                if (fd2 == null)
                {
                    return(false);
                }
                if (!fd.Equals(fd2))
                {
                    return(false);
                }
            }
            return(true);
        }