StructField (ClassNode node) { ClassWrapper wrapper = node.getWrapper(); boolean noSynthFlag = DecompilerContext.getOption(IFernflowerPreferences.SYNTHETIC_NOT_SET); for (StructField fd : wrapper.getClassStruct().getFields()) { String keyField = InterpreterUtil.makeUniqueKey(fd.getName(), fd.getDescriptor()); // initializer exists if (wrapper.getStaticFieldInitializers().containsKey(keyField)) { // access flags set if (fd.hasModifier(CodeConstants.ACC_STATIC) && fd.hasModifier(CodeConstants.ACC_FINAL) && (noSynthFlag || fd.isSynthetic())) { // field type boolean FieldDescriptor fdescr = FieldDescriptor.parseDescriptor(fd.getDescriptor()); if (VarType.VARTYPE_BOOLEAN.equals(fdescr.type)) { Exprent initializer = wrapper.getStaticFieldInitializers().getWithKey(keyField); if (initializer.type == Exprent.EXPRENT_FUNCTION) { FunctionExprent fexpr = (FunctionExprent)initializer; if (fexpr.getFuncType() == FunctionExprent.FUNCTION_BOOL_NOT && fexpr.getLstOperands().get(0).type == Exprent.EXPRENT_INVOCATION) { InvocationExprent invexpr = (InvocationExprent)fexpr.getLstOperands().get(0); if (invexpr.getInstance() != null && invexpr.getInstance().type == Exprent.EXPRENT_CONST && "desiredAssertionStatus".equals(invexpr.getName()) && "java/lang/Class".equals(invexpr.getClassName()) && invexpr.getParameters().isEmpty()) { ConstExprent cexpr = (ConstExprent)invexpr.getInstance(); if (VarType.VARTYPE_CLASS.equals(cexpr.getConstType())) { ClassNode nd = node; while (nd != null) { if (nd.getWrapper().getClassStruct().qualifiedName.equals(cexpr.getValue())) { break; } nd = nd.parent; } if (nd != null) { // found enclosing class with the same name return fd; } } } } } } } } } return null; }