private ClassDescriptor(string packageVMName, string name, long stamp, string srcFileName, MethodDescriptor[] methods)
 {
     if (packageVMName == null)
         throw new ArgumentNullException("null input: packageVMName");
     if (name == null)
         throw new ArgumentNullException("null input: name");
     if (methods == null)
         throw new ArgumentNullException("null input: methods");
     m_packageVMName = packageVMName;
     m_name = name;
     m_stamp = stamp;
     m_srcFileName = srcFileName;
     m_methods = methods;
 }
        public static ClassDescriptor ReadExternal(EmmaBinaryReader ebr)
        {
            string packageVMName = ebr.ReadUTF();
            string name = ebr.ReadUTF();

            long stamp = ebr.ReadLong();

            sbyte srcFileNameFlag = ebr.ReadSbyte();
            string srcFileName = srcFileNameFlag != 0 ? ebr.ReadUTF() : null;

            int length = ebr.ReadInt32();
            MethodDescriptor[] methods = new MethodDescriptor[length];
            for (int i = 0; i < length; ++i)
            {
                methods[i] = MethodDescriptor.ReadExternal(ebr);
            }
            return new ClassDescriptor(packageVMName,name,stamp,srcFileName,methods);
        }