private MethodBody tryLoadBody() {
if (Flags.testAny(_flags, Flags.LOAD_BODY_FAILED)) {
return null;
}
final CodeAttribute codeAttribute = SourceAttribute.find(AttributeNames.Code, _sourceAttributes);
if (codeAttribute == null) {
return null;
}
final int codeAttributeIndex = _sourceAttributes.indexOf(codeAttribute);
Buffer code = codeAttribute.getCode();
ConstantPool constantPool = _declaringType.getConstantPool();
if (code == null) {
final ITypeLoader typeLoader = _declaringType.getTypeLoader();
if (typeLoader == null) {
_flags |= Flags.LOAD_BODY_FAILED;
return null;
}
code = new Buffer();
if (!typeLoader.tryLoadType(_declaringType.getInternalName(), code)) {
_flags |= Flags.LOAD_BODY_FAILED;
return null;
}
final List<ExceptionTableEntry> exceptionTableEntries = codeAttribute.getExceptionTableEntries();
final List<SourceAttribute> codeAttributes = codeAttribute.getAttributes();
final CodeAttribute newCode = new CodeAttribute(
codeAttribute.getLength(),
codeAttribute.getMaxStack(),
codeAttribute.getMaxLocals(),
codeAttribute.getCodeOffset(),
codeAttribute.getCodeSize(),