public virtual byte[] LoadBytecode(StructMethod mt, int codeFullLength) { string className = mt.GetClassStruct().qualifiedName; try { using (DataInputFullStream @in = GetClassStream(className)) { if (@in != null) { @in.Discard(8); ConstantPool pool = mt.GetClassStruct().GetPool(); if (pool == null) { pool = new ConstantPool(@in); } else { ConstantPool.SkipPool(@in); } @in.Discard(6); // interfaces @in.Discard(@in.ReadUnsignedShort() * 2); // fields int size = @in.ReadUnsignedShort(); for (int i = 0; i < size; i++) { @in.Discard(6); SkipAttributes(@in); } // methods size = @in.ReadUnsignedShort(); for (int i = 0; i < size; i++) { @in.Discard(2); int nameIndex = @in.ReadUnsignedShort(); int descriptorIndex = @in.ReadUnsignedShort(); string[] values = pool.GetClassElement(ConstantPool.Method, className, nameIndex, descriptorIndex); if (!mt.GetName().Equals(values[0]) || !mt.GetDescriptor().Equals(values[1])) { SkipAttributes(@in); continue; } int attrSize = @in.ReadUnsignedShort(); for (int j = 0; j < attrSize; j++) { int attrNameIndex = @in.ReadUnsignedShort(); string attrName = pool.GetPrimitiveConstant(attrNameIndex).GetString(); if (!StructGeneralAttribute.Attribute_Code.GetName().Equals(attrName)) { @in.Discard(@in.ReadInt()); continue; } @in.Discard(12); return(@in.Read(codeFullLength)); } break; } } return(null); } } catch (IOException ex) { throw; } }