public static DomMethod ReadMethod(BinaryReader reader, INameDecoder nameTable)
        {
            DomMethod result = new DomMethod();

            ReadMemberInformation(reader, nameTable, result);
            uint explicitInterfaces = ReadUInt(reader, 500);

            while (explicitInterfaces-- > 0)
            {
                result.AddExplicitInterface(ReadReturnType(reader, nameTable));
            }

            result.BodyRegion     = ReadRegion(reader, nameTable);
            result.ReturnType     = ReadReturnType(reader, nameTable);
            result.MethodModifier = (MethodModifier)reader.ReadInt32();

            uint arguments = ReadUInt(reader, 5000);

            while (arguments-- > 0)
            {
                result.Add(ReadParameter(reader, nameTable));
            }
            arguments = ReadUInt(reader, 500);
            while (arguments-- > 0)
            {
                result.AddTypeParameter(ReadTypeParameter(reader, nameTable));
            }
            return(result);
        }
		public static DomMethod ReadMethod (BinaryReader reader, INameDecoder nameTable, IDomObjectTable objectTable)
		{
			DomMethod result = new DomMethod ();
			ReadMemberInformation (reader, nameTable, objectTable, result);
			uint explicitInterfaces = ReadUInt (reader, 500);
			while (explicitInterfaces-- > 0) {
				result.AddExplicitInterface (ReadReturnType (reader, nameTable, objectTable));
			}
			
			result.BodyRegion = ReadRegion (reader, nameTable);
			result.ReturnType = ReadReturnType (reader, nameTable, objectTable);
			result.MethodModifier = (MethodModifier)reader.ReadInt32 ();
			
			uint arguments = ReadUInt (reader, 5000);
			while (arguments-- > 0) {
				result.Add (ReadParameter (reader, nameTable, objectTable));
			}
			arguments = ReadUInt (reader, 500);
			while (arguments-- > 0) {
				result.AddTypeParameter (ReadTypeParameter (reader, nameTable, objectTable));
			}
			return result;
		}