public static HighMethodBody Read(TagRepository rpa, CatalogReader catalog, MethodDeclTag methodDecl, BinaryReader reader) { bool haveInstanceLocal = reader.ReadBoolean(); uint numArgs = reader.ReadUInt32(); uint numLocals = reader.ReadUInt32(); bool haveDebugInfo = reader.ReadBoolean(); HighLocal instanceLocal; if (haveInstanceLocal) { instanceLocal = new HighLocal(); instanceLocal.Read(rpa, catalog, reader); } else instanceLocal = null; HighLocal[] args = new HighLocal[numArgs]; HighLocal[] locals = new HighLocal[numLocals]; for (uint i = 0; i < numArgs; i++) { HighLocal arg = new HighLocal(); arg.Read(rpa, catalog, reader); args[i] = arg; } for (uint i = 0; i < numLocals; i++) { HighLocal local = new HighLocal(); local.Read(rpa, catalog, reader); locals[i] = local; } HighMethodBodyParseContext parseContext = new HighMethodBodyParseContext(instanceLocal, args, locals); CodeLocationTag baseLocation = new CodeLocationTag(methodDecl, 0); HighRegion region = HighRegion.Read(rpa, catalog, parseContext, baseLocation, haveDebugInfo, reader); return new HighMethodBody(region, instanceLocal, args, locals, haveDebugInfo); }