gitextract_b8off970/ ├── .editorconfig ├── .gitattributes ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── config.yml │ │ ├── decompilation-issue.yml │ │ ├── feature-request.yml │ │ └── jadx-gui-issue.yml │ ├── dependabot.yml │ ├── pull_request_template.md │ └── workflows/ │ ├── build-artifacts.yml │ ├── build-test.yml │ └── release.yml ├── .gitignore ├── .gitlab-ci.yml ├── .jitpack.yml ├── .typos.toml ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── NOTICE ├── README.md ├── SECURITY.md ├── build.gradle.kts ├── buildSrc/ │ ├── build.gradle.kts │ └── src/ │ └── main/ │ └── kotlin/ │ ├── jadx-java.gradle.kts │ ├── jadx-kotlin.gradle.kts │ ├── jadx-library.gradle.kts │ └── jadx-rewrite.gradle.kts ├── config/ │ ├── checkstyle/ │ │ └── checkstyle.xml │ ├── code-formatter/ │ │ ├── eclipse.importorder │ │ └── eclipse.xml │ └── jflex/ │ ├── .gitignore │ ├── README.md │ ├── SmaliTokenMaker.flex │ └── skeleton.default ├── contrib/ │ └── jadx-gui.desktop ├── gradle/ │ └── wrapper/ │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── jadx-cli/ │ ├── build.gradle.kts │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── jadx/ │ │ │ └── cli/ │ │ │ ├── JCommanderWrapper.java │ │ │ ├── JadxAppCommon.java │ │ │ ├── JadxCLI.java │ │ │ ├── JadxCLIArgs.java │ │ │ ├── JadxCLICommands.java │ │ │ ├── LogHelper.java │ │ │ ├── SingleClassMode.java │ │ │ ├── clst/ │ │ │ │ └── ConvertToClsSet.java │ │ │ ├── commands/ │ │ │ │ ├── CommandPlugins.java │ │ │ │ └── ICommand.java │ │ │ ├── config/ │ │ │ │ ├── IJadxConfig.java │ │ │ │ ├── JadxConfigAdapter.java │ │ │ │ └── JadxConfigExclude.java │ │ │ ├── plugins/ │ │ │ │ └── JadxFilesGetter.java │ │ │ └── tools/ │ │ │ └── ConvertArscFile.java │ │ └── resources/ │ │ └── logback.xml │ └── test/ │ ├── java/ │ │ └── jadx/ │ │ ├── cli/ │ │ │ ├── BaseCliIntegrationTest.java │ │ │ ├── JadxCLIArgsTest.java │ │ │ ├── RenameConverterTest.java │ │ │ ├── TestExport.java │ │ │ └── TestInput.java │ │ └── plugins/ │ │ └── tools/ │ │ └── utils/ │ │ └── PluginUtilsTest.java │ └── resources/ │ └── samples/ │ ├── HelloWorld.smali │ ├── hello.dex │ ├── resources-only.apk │ ├── small.apk │ └── test-lib.aar ├── jadx-commons/ │ ├── jadx-app-commons/ │ │ ├── README.md │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── jadx/ │ │ └── commons/ │ │ └── app/ │ │ ├── JadxCommonEnv.java │ │ ├── JadxCommonFiles.java │ │ ├── JadxSystemInfo.java │ │ └── JadxTempFiles.java │ └── jadx-zip/ │ ├── README.md │ ├── build.gradle.kts │ └── src/ │ └── main/ │ └── java/ │ └── jadx/ │ └── zip/ │ ├── IZipEntry.java │ ├── IZipParser.java │ ├── ZipContent.java │ ├── ZipReader.java │ ├── ZipReaderFlags.java │ ├── ZipReaderOptions.java │ ├── fallback/ │ │ ├── FallbackZipEntry.java │ │ └── FallbackZipParser.java │ ├── io/ │ │ ├── ByteBufferBackedInputStream.java │ │ └── LimitedInputStream.java │ ├── parser/ │ │ ├── JadxZipEntry.java │ │ ├── JadxZipParser.java │ │ └── ZipDeflate.java │ └── security/ │ ├── DisabledZipSecurity.java │ ├── IJadxZipSecurity.java │ └── JadxZipSecurity.java ├── jadx-core/ │ ├── build.gradle.kts │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── jadx/ │ │ │ ├── api/ │ │ │ │ ├── CommentsLevel.java │ │ │ │ ├── DecompilationMode.java │ │ │ │ ├── ICodeCache.java │ │ │ │ ├── ICodeInfo.java │ │ │ │ ├── ICodeWriter.java │ │ │ │ ├── IDecompileScheduler.java │ │ │ │ ├── JadxArgs.java │ │ │ │ ├── JadxArgsValidator.java │ │ │ │ ├── JadxDecompiler.java │ │ │ │ ├── JavaClass.java │ │ │ │ ├── JavaField.java │ │ │ │ ├── JavaMethod.java │ │ │ │ ├── JavaNode.java │ │ │ │ ├── JavaPackage.java │ │ │ │ ├── JavaVariable.java │ │ │ │ ├── ResourceFile.java │ │ │ │ ├── ResourceFileContainer.java │ │ │ │ ├── ResourceFileContent.java │ │ │ │ ├── ResourceType.java │ │ │ │ ├── ResourcesLoader.java │ │ │ │ ├── args/ │ │ │ │ │ ├── GeneratedRenamesMappingFileMode.java │ │ │ │ │ ├── IntegerFormat.java │ │ │ │ │ ├── ResourceNameSource.java │ │ │ │ │ ├── UseSourceNameAsClassNameAlias.java │ │ │ │ │ └── UserRenamesMappingsMode.java │ │ │ │ ├── data/ │ │ │ │ │ ├── CodeRefType.java │ │ │ │ │ ├── CommentStyle.java │ │ │ │ │ ├── ICodeComment.java │ │ │ │ │ ├── ICodeData.java │ │ │ │ │ ├── ICodeRename.java │ │ │ │ │ ├── IJavaCodeRef.java │ │ │ │ │ ├── IJavaNodeRef.java │ │ │ │ │ ├── IRenameNode.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── JadxCodeComment.java │ │ │ │ │ ├── JadxCodeData.java │ │ │ │ │ ├── JadxCodeRef.java │ │ │ │ │ ├── JadxCodeRename.java │ │ │ │ │ └── JadxNodeRef.java │ │ │ │ ├── deobf/ │ │ │ │ │ ├── IAliasProvider.java │ │ │ │ │ ├── IDeobfCondition.java │ │ │ │ │ ├── IRenameCondition.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── AlwaysRename.java │ │ │ │ │ ├── AnyRenameCondition.java │ │ │ │ │ └── CombineDeobfConditions.java │ │ │ │ ├── gui/ │ │ │ │ │ └── tree/ │ │ │ │ │ └── ITreeNode.java │ │ │ │ ├── impl/ │ │ │ │ │ ├── AnnotatedCodeInfo.java │ │ │ │ │ ├── AnnotatedCodeWriter.java │ │ │ │ │ ├── DelegateCodeCache.java │ │ │ │ │ ├── InMemoryCodeCache.java │ │ │ │ │ ├── NoOpCodeCache.java │ │ │ │ │ ├── SimpleCodeInfo.java │ │ │ │ │ ├── SimpleCodeWriter.java │ │ │ │ │ └── passes/ │ │ │ │ │ ├── DecompilePassWrapper.java │ │ │ │ │ ├── IPassWrapperVisitor.java │ │ │ │ │ └── PreparePassWrapper.java │ │ │ │ ├── metadata/ │ │ │ │ │ ├── ICodeAnnotation.java │ │ │ │ │ ├── ICodeMetadata.java │ │ │ │ │ ├── ICodeNodeRef.java │ │ │ │ │ ├── annotations/ │ │ │ │ │ │ ├── InsnCodeOffset.java │ │ │ │ │ │ ├── NodeDeclareRef.java │ │ │ │ │ │ ├── NodeEnd.java │ │ │ │ │ │ ├── VarNode.java │ │ │ │ │ │ └── VarRef.java │ │ │ │ │ └── impl/ │ │ │ │ │ └── CodeMetadataStorage.java │ │ │ │ ├── plugins/ │ │ │ │ │ ├── CustomResourcesLoader.java │ │ │ │ │ ├── JadxPlugin.java │ │ │ │ │ ├── JadxPluginContext.java │ │ │ │ │ ├── JadxPluginInfo.java │ │ │ │ │ ├── JadxPluginInfoBuilder.java │ │ │ │ │ ├── data/ │ │ │ │ │ │ ├── IJadxFiles.java │ │ │ │ │ │ ├── IJadxPlugins.java │ │ │ │ │ │ └── JadxPluginRuntimeData.java │ │ │ │ │ ├── events/ │ │ │ │ │ │ ├── IJadxEvent.java │ │ │ │ │ │ ├── IJadxEvents.java │ │ │ │ │ │ ├── JadxEventType.java │ │ │ │ │ │ ├── JadxEvents.java │ │ │ │ │ │ └── types/ │ │ │ │ │ │ ├── NodeRenamedByUser.java │ │ │ │ │ │ ├── ReloadProject.java │ │ │ │ │ │ └── ReloadSettingsWindow.java │ │ │ │ │ ├── gui/ │ │ │ │ │ │ ├── ISettingsGroup.java │ │ │ │ │ │ ├── JadxGuiContext.java │ │ │ │ │ │ └── JadxGuiSettings.java │ │ │ │ │ ├── loader/ │ │ │ │ │ │ ├── JadxBasePluginLoader.java │ │ │ │ │ │ └── JadxPluginLoader.java │ │ │ │ │ ├── options/ │ │ │ │ │ │ ├── JadxPluginOptions.java │ │ │ │ │ │ ├── OptionDescription.java │ │ │ │ │ │ ├── OptionFlag.java │ │ │ │ │ │ ├── OptionType.java │ │ │ │ │ │ └── impl/ │ │ │ │ │ │ ├── BaseOptionsParser.java │ │ │ │ │ │ ├── BasePluginOptionsBuilder.java │ │ │ │ │ │ ├── JadxOptionDescription.java │ │ │ │ │ │ └── OptionBuilder.java │ │ │ │ │ ├── pass/ │ │ │ │ │ │ ├── JadxPass.java │ │ │ │ │ │ ├── JadxPassInfo.java │ │ │ │ │ │ ├── impl/ │ │ │ │ │ │ │ ├── OrderedJadxPassInfo.java │ │ │ │ │ │ │ ├── SimpleAfterLoadPass.java │ │ │ │ │ │ │ └── SimpleJadxPassInfo.java │ │ │ │ │ │ └── types/ │ │ │ │ │ │ ├── JadxAfterLoadPass.java │ │ │ │ │ │ ├── JadxDecompilePass.java │ │ │ │ │ │ ├── JadxPassType.java │ │ │ │ │ │ └── JadxPreparePass.java │ │ │ │ │ ├── resources/ │ │ │ │ │ │ ├── IResContainerFactory.java │ │ │ │ │ │ ├── IResTableParserProvider.java │ │ │ │ │ │ └── IResourcesLoader.java │ │ │ │ │ └── utils/ │ │ │ │ │ ├── CommonFileUtils.java │ │ │ │ │ ├── Utils.java │ │ │ │ │ └── ZipSecurity.java │ │ │ │ ├── resources/ │ │ │ │ │ └── ResourceContentType.java │ │ │ │ ├── security/ │ │ │ │ │ ├── IJadxSecurity.java │ │ │ │ │ ├── JadxSecurityFlag.java │ │ │ │ │ └── impl/ │ │ │ │ │ └── JadxSecurity.java │ │ │ │ ├── usage/ │ │ │ │ │ ├── IUsageInfoCache.java │ │ │ │ │ ├── IUsageInfoData.java │ │ │ │ │ ├── IUsageInfoVisitor.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── EmptyUsageInfoCache.java │ │ │ │ │ └── InMemoryUsageInfoCache.java │ │ │ │ └── utils/ │ │ │ │ ├── CodeUtils.java │ │ │ │ └── tasks/ │ │ │ │ └── ITaskExecutor.java │ │ │ └── core/ │ │ │ ├── Consts.java │ │ │ ├── Jadx.java │ │ │ ├── ProcessClass.java │ │ │ ├── clsp/ │ │ │ │ ├── ClsSet.java │ │ │ │ ├── ClspClass.java │ │ │ │ ├── ClspClassSource.java │ │ │ │ ├── ClspGraph.java │ │ │ │ ├── ClspMethod.java │ │ │ │ └── SimpleMethodDetails.java │ │ │ ├── codegen/ │ │ │ │ ├── AnnotationGen.java │ │ │ │ ├── ClassGen.java │ │ │ │ ├── CodeGen.java │ │ │ │ ├── ConditionGen.java │ │ │ │ ├── InsnGen.java │ │ │ │ ├── MethodGen.java │ │ │ │ ├── NameGen.java │ │ │ │ ├── RegionGen.java │ │ │ │ ├── SimpleModeHelper.java │ │ │ │ ├── TypeGen.java │ │ │ │ ├── json/ │ │ │ │ │ ├── JsonCodeGen.java │ │ │ │ │ ├── JsonMappingGen.java │ │ │ │ │ ├── cls/ │ │ │ │ │ │ ├── JsonClass.java │ │ │ │ │ │ ├── JsonCodeLine.java │ │ │ │ │ │ ├── JsonField.java │ │ │ │ │ │ ├── JsonMethod.java │ │ │ │ │ │ └── JsonNode.java │ │ │ │ │ └── mapping/ │ │ │ │ │ ├── JsonClsMapping.java │ │ │ │ │ ├── JsonFieldMapping.java │ │ │ │ │ ├── JsonMapping.java │ │ │ │ │ └── JsonMthMapping.java │ │ │ │ └── utils/ │ │ │ │ ├── CodeComment.java │ │ │ │ └── CodeGenUtils.java │ │ │ ├── deobf/ │ │ │ │ ├── DeobfAliasProvider.java │ │ │ │ ├── DeobfPresets.java │ │ │ │ ├── DeobfuscatorVisitor.java │ │ │ │ ├── FileTypeDetector.java │ │ │ │ ├── NameMapper.java │ │ │ │ ├── SaveDeobfMapping.java │ │ │ │ └── conditions/ │ │ │ │ ├── AbstractDeobfCondition.java │ │ │ │ ├── AvoidClsAndPkgNamesCollision.java │ │ │ │ ├── BaseDeobfCondition.java │ │ │ │ ├── DeobfLengthCondition.java │ │ │ │ ├── DeobfWhitelist.java │ │ │ │ ├── ExcludeAndroidRClass.java │ │ │ │ ├── ExcludePackageWithTLDNames.java │ │ │ │ └── JadxRenameConditions.java │ │ │ ├── dex/ │ │ │ │ ├── attributes/ │ │ │ │ │ ├── AFlag.java │ │ │ │ │ ├── AType.java │ │ │ │ │ ├── AttrList.java │ │ │ │ │ ├── AttrNode.java │ │ │ │ │ ├── AttributeStorage.java │ │ │ │ │ ├── EmptyAttrStorage.java │ │ │ │ │ ├── FieldInitInsnAttr.java │ │ │ │ │ ├── IAttributeNode.java │ │ │ │ │ ├── ILineAttributeNode.java │ │ │ │ │ └── nodes/ │ │ │ │ │ ├── AnonymousClassAttr.java │ │ │ │ │ ├── ClassTypeVarsAttr.java │ │ │ │ │ ├── CodeFeaturesAttr.java │ │ │ │ │ ├── DeclareVariablesAttr.java │ │ │ │ │ ├── DecompileModeOverrideAttr.java │ │ │ │ │ ├── EdgeInsnAttr.java │ │ │ │ │ ├── EnumClassAttr.java │ │ │ │ │ ├── EnumMapAttr.java │ │ │ │ │ ├── ExcSplitCrossAttr.java │ │ │ │ │ ├── FieldReplaceAttr.java │ │ │ │ │ ├── ForceReturnAttr.java │ │ │ │ │ ├── GenericInfoAttr.java │ │ │ │ │ ├── InlinedAttr.java │ │ │ │ │ ├── JadxCommentsAttr.java │ │ │ │ │ ├── JadxError.java │ │ │ │ │ ├── JumpInfo.java │ │ │ │ │ ├── LineAttrNode.java │ │ │ │ │ ├── LocalVarsDebugInfoAttr.java │ │ │ │ │ ├── LoopInfo.java │ │ │ │ │ ├── LoopLabelAttr.java │ │ │ │ │ ├── MethodBridgeAttr.java │ │ │ │ │ ├── MethodInlineAttr.java │ │ │ │ │ ├── MethodOverrideAttr.java │ │ │ │ │ ├── MethodReplaceAttr.java │ │ │ │ │ ├── MethodThrowsAttr.java │ │ │ │ │ ├── MethodTypeVarsAttr.java │ │ │ │ │ ├── NotificationAttrNode.java │ │ │ │ │ ├── PhiListAttr.java │ │ │ │ │ ├── RegDebugInfoAttr.java │ │ │ │ │ ├── RegionRefAttr.java │ │ │ │ │ ├── RenameReasonAttr.java │ │ │ │ │ ├── SkipMethodArgsAttr.java │ │ │ │ │ ├── SpecialEdgeAttr.java │ │ │ │ │ └── TmpEdgeAttr.java │ │ │ │ ├── info/ │ │ │ │ │ ├── AccessInfo.java │ │ │ │ │ ├── ClassAliasInfo.java │ │ │ │ │ ├── ClassInfo.java │ │ │ │ │ ├── ConstStorage.java │ │ │ │ │ ├── FieldInfo.java │ │ │ │ │ ├── InfoStorage.java │ │ │ │ │ ├── MethodInfo.java │ │ │ │ │ └── PackageInfo.java │ │ │ │ ├── instructions/ │ │ │ │ │ ├── ArithNode.java │ │ │ │ │ ├── ArithOp.java │ │ │ │ │ ├── BaseInvokeNode.java │ │ │ │ │ ├── ConstClassNode.java │ │ │ │ │ ├── ConstStringNode.java │ │ │ │ │ ├── FillArrayData.java │ │ │ │ │ ├── FillArrayInsn.java │ │ │ │ │ ├── FilledNewArrayNode.java │ │ │ │ │ ├── GotoNode.java │ │ │ │ │ ├── IfNode.java │ │ │ │ │ ├── IfOp.java │ │ │ │ │ ├── IndexInsnNode.java │ │ │ │ │ ├── InsnDecoder.java │ │ │ │ │ ├── InsnType.java │ │ │ │ │ ├── InvokeCustomBuilder.java │ │ │ │ │ ├── InvokeCustomNode.java │ │ │ │ │ ├── InvokeCustomRawNode.java │ │ │ │ │ ├── InvokeNode.java │ │ │ │ │ ├── InvokePolymorphicNode.java │ │ │ │ │ ├── InvokeType.java │ │ │ │ │ ├── NewArrayNode.java │ │ │ │ │ ├── PhiInsn.java │ │ │ │ │ ├── SwitchData.java │ │ │ │ │ ├── SwitchInsn.java │ │ │ │ │ ├── TargetInsnNode.java │ │ │ │ │ ├── args/ │ │ │ │ │ │ ├── ArgType.java │ │ │ │ │ │ ├── CodeVar.java │ │ │ │ │ │ ├── InsnArg.java │ │ │ │ │ │ ├── InsnWrapArg.java │ │ │ │ │ │ ├── LiteralArg.java │ │ │ │ │ │ ├── Named.java │ │ │ │ │ │ ├── NamedArg.java │ │ │ │ │ │ ├── PrimitiveType.java │ │ │ │ │ │ ├── RegisterArg.java │ │ │ │ │ │ ├── SSAVar.java │ │ │ │ │ │ ├── Typed.java │ │ │ │ │ │ └── VarName.java │ │ │ │ │ ├── invokedynamic/ │ │ │ │ │ │ ├── CustomLambdaCall.java │ │ │ │ │ │ ├── CustomRawCall.java │ │ │ │ │ │ ├── CustomStringConcat.java │ │ │ │ │ │ └── InvokeCustomUtils.java │ │ │ │ │ ├── java/ │ │ │ │ │ │ └── JsrNode.java │ │ │ │ │ └── mods/ │ │ │ │ │ ├── ConstructorInsn.java │ │ │ │ │ └── TernaryInsn.java │ │ │ │ ├── nodes/ │ │ │ │ │ ├── BlockNode.java │ │ │ │ │ ├── ClassNode.java │ │ │ │ │ ├── Edge.java │ │ │ │ │ ├── FieldNode.java │ │ │ │ │ ├── IBlock.java │ │ │ │ │ ├── IBranchRegion.java │ │ │ │ │ ├── ICodeDataUpdateListener.java │ │ │ │ │ ├── ICodeNode.java │ │ │ │ │ ├── IConditionRegion.java │ │ │ │ │ ├── IContainer.java │ │ │ │ │ ├── IDexNode.java │ │ │ │ │ ├── IFieldInfoRef.java │ │ │ │ │ ├── ILoadable.java │ │ │ │ │ ├── IMethodDetails.java │ │ │ │ │ ├── IPackageUpdate.java │ │ │ │ │ ├── IRegion.java │ │ │ │ │ ├── IUsageInfoNode.java │ │ │ │ │ ├── InsnContainer.java │ │ │ │ │ ├── InsnNode.java │ │ │ │ │ ├── LoadStage.java │ │ │ │ │ ├── MethodNode.java │ │ │ │ │ ├── PackageNode.java │ │ │ │ │ ├── ProcessState.java │ │ │ │ │ ├── RootNode.java │ │ │ │ │ ├── parser/ │ │ │ │ │ │ └── SignatureParser.java │ │ │ │ │ └── utils/ │ │ │ │ │ ├── MethodUtils.java │ │ │ │ │ ├── SelectFromDuplicates.java │ │ │ │ │ └── TypeUtils.java │ │ │ │ ├── regions/ │ │ │ │ │ ├── AbstractRegion.java │ │ │ │ │ ├── Region.java │ │ │ │ │ ├── SwitchRegion.java │ │ │ │ │ ├── SynchronizedRegion.java │ │ │ │ │ ├── TryCatchRegion.java │ │ │ │ │ ├── conditions/ │ │ │ │ │ │ ├── Compare.java │ │ │ │ │ │ ├── ConditionRegion.java │ │ │ │ │ │ ├── IfCondition.java │ │ │ │ │ │ ├── IfInfo.java │ │ │ │ │ │ └── IfRegion.java │ │ │ │ │ └── loops/ │ │ │ │ │ ├── ForEachLoop.java │ │ │ │ │ ├── ForLoop.java │ │ │ │ │ ├── LoopRegion.java │ │ │ │ │ └── LoopType.java │ │ │ │ ├── trycatch/ │ │ │ │ │ ├── CatchAttr.java │ │ │ │ │ ├── ExcHandlerAttr.java │ │ │ │ │ ├── ExceptionHandler.java │ │ │ │ │ ├── TryCatchBlockAttr.java │ │ │ │ │ ├── TryEdge.java │ │ │ │ │ ├── TryEdgeScopeGroupMap.java │ │ │ │ │ └── TryEdgeType.java │ │ │ │ └── visitors/ │ │ │ │ ├── AbstractVisitor.java │ │ │ │ ├── AdjustForIfMergeVisitor.java │ │ │ │ ├── AnonymousClassVisitor.java │ │ │ │ ├── ApplyVariableNames.java │ │ │ │ ├── AttachCommentsVisitor.java │ │ │ │ ├── AttachMethodDetails.java │ │ │ │ ├── AttachTryCatchVisitor.java │ │ │ │ ├── CheckCode.java │ │ │ │ ├── ClassModifier.java │ │ │ │ ├── ConstInlineVisitor.java │ │ │ │ ├── ConstructorVisitor.java │ │ │ │ ├── DeboxingVisitor.java │ │ │ │ ├── DepthTraversal.java │ │ │ │ ├── DotGraphVisitor.java │ │ │ │ ├── EnumVisitor.java │ │ │ │ ├── ExtractFieldInit.java │ │ │ │ ├── FallbackModeVisitor.java │ │ │ │ ├── FixSwitchOverEnum.java │ │ │ │ ├── GenericTypesVisitor.java │ │ │ │ ├── IDexTreeVisitor.java │ │ │ │ ├── InitCodeVariables.java │ │ │ │ ├── InlineMethods.java │ │ │ │ ├── JadxVisitor.java │ │ │ │ ├── MarkMethodsForInline.java │ │ │ │ ├── MethodInvokeVisitor.java │ │ │ │ ├── MethodThrowsVisitor.java │ │ │ │ ├── MethodVisitor.java │ │ │ │ ├── ModVisitor.java │ │ │ │ ├── MoveInlineVisitor.java │ │ │ │ ├── OverrideMethodVisitor.java │ │ │ │ ├── PrepareForCodeGen.java │ │ │ │ ├── ProcessAnonymous.java │ │ │ │ ├── ProcessInstructionsVisitor.java │ │ │ │ ├── ProcessMethodsForInline.java │ │ │ │ ├── ReplaceNewArray.java │ │ │ │ ├── SaveCode.java │ │ │ │ ├── ShadowFieldVisitor.java │ │ │ │ ├── SignatureProcessor.java │ │ │ │ ├── SimplifyVisitor.java │ │ │ │ ├── blocks/ │ │ │ │ │ ├── BlockExceptionHandler.java │ │ │ │ │ ├── BlockFinisher.java │ │ │ │ │ ├── BlockProcessor.java │ │ │ │ │ ├── BlockSplitter.java │ │ │ │ │ ├── DominatorTree.java │ │ │ │ │ ├── FixMultiEntryLoops.java │ │ │ │ │ ├── PostDominatorTree.java │ │ │ │ │ └── ResolveJavaJSR.java │ │ │ │ ├── debuginfo/ │ │ │ │ │ ├── DebugInfoApplyVisitor.java │ │ │ │ │ └── DebugInfoAttachVisitor.java │ │ │ │ ├── finaly/ │ │ │ │ │ ├── CentralityState.java │ │ │ │ │ ├── FinallyExtractInfo.java │ │ │ │ │ ├── InsnsSlice.java │ │ │ │ │ ├── MarkFinallyVisitor.java │ │ │ │ │ ├── SameInstructionsStrategy.java │ │ │ │ │ ├── SameInstructionsStrategyImpl.java │ │ │ │ │ ├── TryCatchEdgeBlockMap.java │ │ │ │ │ └── traverser/ │ │ │ │ │ ├── GlobalTraverserSourceState.java │ │ │ │ │ ├── TraverserController.java │ │ │ │ │ ├── TraverserException.java │ │ │ │ │ ├── factory/ │ │ │ │ │ │ ├── DuplicatedTraverserStateFactory.java │ │ │ │ │ │ └── TraverserStateFactory.java │ │ │ │ │ ├── handlers/ │ │ │ │ │ │ ├── AbstractActivePathTraverserHandler.java │ │ │ │ │ │ ├── AbstractBlockPathTraverserHandler.java │ │ │ │ │ │ ├── AbstractBlockTraverserHandler.java │ │ │ │ │ │ ├── BaseBlockTraverserHandler.java │ │ │ │ │ │ ├── InstructionActivePathTraverserHandler.java │ │ │ │ │ │ ├── MergePathActivePathTraverserHandler.java │ │ │ │ │ │ ├── PredecessorBlockPathTraverserHandler.java │ │ │ │ │ │ └── PredecessorMergeActivePathTraverserHandler.java │ │ │ │ │ ├── state/ │ │ │ │ │ │ ├── AwaitingInsnCompareTraverserState.java │ │ │ │ │ │ ├── ISourceBlockState.java │ │ │ │ │ │ ├── IdentifiedScopeWithTerminatorTraverserState.java │ │ │ │ │ │ ├── NewBlockTraverserState.java │ │ │ │ │ │ ├── NoBlockTraverserState.java │ │ │ │ │ │ ├── RecoveredFromCacheTraverserState.java │ │ │ │ │ │ ├── TerminalTraverserState.java │ │ │ │ │ │ ├── TraverserActivePathState.java │ │ │ │ │ │ ├── TraverserBlockInfo.java │ │ │ │ │ │ ├── TraverserGlobalCommonState.java │ │ │ │ │ │ ├── TraverserState.java │ │ │ │ │ │ └── UnknownAdvanceStrategyTraverserState.java │ │ │ │ │ └── visitors/ │ │ │ │ │ ├── AbstractBlockTraverserVisitor.java │ │ │ │ │ ├── ImplicitInsnBlockTraverserVisitor.java │ │ │ │ │ ├── PathEndBlockTraverserVisitor.java │ │ │ │ │ ├── PredecessorBlockTraverserVisitor.java │ │ │ │ │ └── comparator/ │ │ │ │ │ ├── AbstractTraverserComparatorVisitor.java │ │ │ │ │ └── InstructionBlockComparatorTraverserVisitor.java │ │ │ │ ├── fixaccessmodifiers/ │ │ │ │ │ ├── FixAccessModifiers.java │ │ │ │ │ └── VisibilityUtils.java │ │ │ │ ├── gradle/ │ │ │ │ │ └── NonFinalResIdsVisitor.java │ │ │ │ ├── kotlin/ │ │ │ │ │ └── ProcessKotlinInternals.java │ │ │ │ ├── methods/ │ │ │ │ │ └── MutableMethodDetails.java │ │ │ │ ├── prepare/ │ │ │ │ │ ├── AddAndroidConstants.java │ │ │ │ │ └── CollectConstValues.java │ │ │ │ ├── regions/ │ │ │ │ │ ├── AbstractRegionVisitor.java │ │ │ │ │ ├── CheckRegions.java │ │ │ │ │ ├── CleanRegions.java │ │ │ │ │ ├── DebugRegionCounter.java │ │ │ │ │ ├── DepthRegionTraversal.java │ │ │ │ │ ├── IRegionIterativeVisitor.java │ │ │ │ │ ├── IRegionVisitor.java │ │ │ │ │ ├── IfRegionVisitor.java │ │ │ │ │ ├── LoopRegionVisitor.java │ │ │ │ │ ├── PostProcessRegions.java │ │ │ │ │ ├── ProcessTryCatchRegions.java │ │ │ │ │ ├── RegionMakerVisitor.java │ │ │ │ │ ├── ReturnVisitor.java │ │ │ │ │ ├── SwitchBreakVisitor.java │ │ │ │ │ ├── SwitchOverStringVisitor.java │ │ │ │ │ ├── TernaryMod.java │ │ │ │ │ ├── TracedRegionVisitor.java │ │ │ │ │ ├── maker/ │ │ │ │ │ │ ├── ExcHandlersRegionMaker.java │ │ │ │ │ │ ├── IfRegionMaker.java │ │ │ │ │ │ ├── LoopRegionMaker.java │ │ │ │ │ │ ├── RegionMaker.java │ │ │ │ │ │ ├── RegionStack.java │ │ │ │ │ │ ├── SwitchRegionMaker.java │ │ │ │ │ │ └── SynchronizedRegionMaker.java │ │ │ │ │ └── variables/ │ │ │ │ │ ├── CollectUsageRegionVisitor.java │ │ │ │ │ ├── ProcessVariables.java │ │ │ │ │ ├── UsePlace.java │ │ │ │ │ └── VarUsage.java │ │ │ │ ├── rename/ │ │ │ │ │ ├── CodeRenameVisitor.java │ │ │ │ │ ├── RenameVisitor.java │ │ │ │ │ ├── SourceFileRename.java │ │ │ │ │ └── UserRenames.java │ │ │ │ ├── shrink/ │ │ │ │ │ ├── ArgsInfo.java │ │ │ │ │ ├── CodeShrinkVisitor.java │ │ │ │ │ └── WrapInfo.java │ │ │ │ ├── ssa/ │ │ │ │ │ ├── LiveVarAnalysis.java │ │ │ │ │ ├── RenameState.java │ │ │ │ │ └── SSATransform.java │ │ │ │ ├── typeinference/ │ │ │ │ │ ├── AbstractTypeConstraint.java │ │ │ │ │ ├── BoundEnum.java │ │ │ │ │ ├── FinishTypeInference.java │ │ │ │ │ ├── FixTypesVisitor.java │ │ │ │ │ ├── ITypeBound.java │ │ │ │ │ ├── ITypeBoundDynamic.java │ │ │ │ │ ├── ITypeConstraint.java │ │ │ │ │ ├── ITypeListener.java │ │ │ │ │ ├── TypeBoundCheckCastAssign.java │ │ │ │ │ ├── TypeBoundConst.java │ │ │ │ │ ├── TypeBoundFieldGetAssign.java │ │ │ │ │ ├── TypeBoundInvokeAssign.java │ │ │ │ │ ├── TypeBoundInvokeUse.java │ │ │ │ │ ├── TypeCompare.java │ │ │ │ │ ├── TypeCompareEnum.java │ │ │ │ │ ├── TypeInferenceVisitor.java │ │ │ │ │ ├── TypeInfo.java │ │ │ │ │ ├── TypeSearch.java │ │ │ │ │ ├── TypeSearchState.java │ │ │ │ │ ├── TypeSearchVarInfo.java │ │ │ │ │ ├── TypeUpdate.java │ │ │ │ │ ├── TypeUpdateEntry.java │ │ │ │ │ ├── TypeUpdateFlags.java │ │ │ │ │ ├── TypeUpdateInfo.java │ │ │ │ │ ├── TypeUpdateRegistry.java │ │ │ │ │ └── TypeUpdateResult.java │ │ │ │ └── usage/ │ │ │ │ ├── UsageInfo.java │ │ │ │ ├── UsageInfoVisitor.java │ │ │ │ └── UseSet.java │ │ │ ├── export/ │ │ │ │ ├── ExportGradle.java │ │ │ │ ├── ExportGradleType.java │ │ │ │ ├── GradleInfoStorage.java │ │ │ │ ├── OutDirs.java │ │ │ │ ├── TemplateFile.java │ │ │ │ └── gen/ │ │ │ │ ├── AndroidGradleGenerator.java │ │ │ │ ├── GradleGeneratorTools.java │ │ │ │ ├── IExportGradleGenerator.java │ │ │ │ └── SimpleJavaGradleGenerator.java │ │ │ ├── plugins/ │ │ │ │ ├── AppContext.java │ │ │ │ ├── JadxPluginManager.java │ │ │ │ ├── JadxPluginsData.java │ │ │ │ ├── PluginContext.java │ │ │ │ ├── events/ │ │ │ │ │ ├── JadxEventsImpl.java │ │ │ │ │ └── JadxEventsManager.java │ │ │ │ ├── files/ │ │ │ │ │ ├── IJadxFilesGetter.java │ │ │ │ │ ├── JadxFilesData.java │ │ │ │ │ ├── SingleDirFilesGetter.java │ │ │ │ │ └── TempFilesGetter.java │ │ │ │ └── versions/ │ │ │ │ ├── VerifyRequiredVersion.java │ │ │ │ └── VersionComparator.java │ │ │ ├── utils/ │ │ │ │ ├── BetterName.java │ │ │ │ ├── BlockInsnPair.java │ │ │ │ ├── BlockParentContainer.java │ │ │ │ ├── BlockUtils.java │ │ │ │ ├── CacheStorage.java │ │ │ │ ├── DebugChecks.java │ │ │ │ ├── DebugChecksPass.java │ │ │ │ ├── DebugUtils.java │ │ │ │ ├── DecompilerScheduler.java │ │ │ │ ├── DotGraphUtils.java │ │ │ │ ├── EmptyBitSet.java │ │ │ │ ├── EncodedValueUtils.java │ │ │ │ ├── ErrorsCounter.java │ │ │ │ ├── FileSignature.java │ │ │ │ ├── GsonUtils.java │ │ │ │ ├── ImmutableList.java │ │ │ │ ├── InsnList.java │ │ │ │ ├── InsnRemover.java │ │ │ │ ├── InsnUtils.java │ │ │ │ ├── ListUtils.java │ │ │ │ ├── Pair.java │ │ │ │ ├── PassMerge.java │ │ │ │ ├── RegionUtils.java │ │ │ │ ├── StringUtils.java │ │ │ │ ├── Utils.java │ │ │ │ ├── android/ │ │ │ │ │ ├── AndroidManifestParser.java │ │ │ │ │ ├── AndroidResourcesMap.java │ │ │ │ │ ├── AndroidResourcesUtils.java │ │ │ │ │ ├── AppAttribute.java │ │ │ │ │ ├── ApplicationParams.java │ │ │ │ │ ├── DataInputDelegate.java │ │ │ │ │ ├── ExtDataInput.java │ │ │ │ │ ├── Res9patchStreamDecoder.java │ │ │ │ │ └── TextResMapFile.java │ │ │ │ ├── blocks/ │ │ │ │ │ ├── BlockPair.java │ │ │ │ │ ├── BlockSet.java │ │ │ │ │ └── DFSIteration.java │ │ │ │ ├── exceptions/ │ │ │ │ │ ├── CodegenException.java │ │ │ │ │ ├── DecodeException.java │ │ │ │ │ ├── InvalidDataException.java │ │ │ │ │ ├── JadxArgsValidateException.java │ │ │ │ │ ├── JadxException.java │ │ │ │ │ ├── JadxOverflowException.java │ │ │ │ │ └── JadxRuntimeException.java │ │ │ │ ├── files/ │ │ │ │ │ └── FileUtils.java │ │ │ │ ├── input/ │ │ │ │ │ └── InsnDataUtils.java │ │ │ │ ├── log/ │ │ │ │ │ └── LogUtils.java │ │ │ │ └── tasks/ │ │ │ │ └── TaskExecutor.java │ │ │ └── xmlgen/ │ │ │ ├── BinaryXMLParser.java │ │ │ ├── BinaryXMLStrings.java │ │ │ ├── CommonBinaryParser.java │ │ │ ├── IResTableParser.java │ │ │ ├── ManifestAttributes.java │ │ │ ├── ParserConstants.java │ │ │ ├── ParserStream.java │ │ │ ├── ResContainer.java │ │ │ ├── ResDecoder.java │ │ │ ├── ResNameUtils.java │ │ │ ├── ResTableBinaryParser.java │ │ │ ├── ResTableBinaryParserProvider.java │ │ │ ├── ResXmlGen.java │ │ │ ├── ResourceStorage.java │ │ │ ├── ResourcesSaver.java │ │ │ ├── StringFormattedCheck.java │ │ │ ├── XMLChar.java │ │ │ ├── XmlDeobf.java │ │ │ ├── XmlGenUtils.java │ │ │ └── entry/ │ │ │ ├── EntryConfig.java │ │ │ ├── ProtoValue.java │ │ │ ├── RawNamedValue.java │ │ │ ├── RawValue.java │ │ │ ├── ResourceEntry.java │ │ │ └── ValuesParser.java │ │ └── resources/ │ │ ├── android/ │ │ │ ├── attrs.xml │ │ │ ├── attrs_manifest.xml │ │ │ └── res-map.txt │ │ ├── clst/ │ │ │ └── core.jcst │ │ ├── export/ │ │ │ ├── android/ │ │ │ │ ├── app.build.gradle.tmpl │ │ │ │ ├── build.gradle.tmpl │ │ │ │ ├── lib.build.gradle.tmpl │ │ │ │ └── settings.gradle.tmpl │ │ │ └── java/ │ │ │ ├── build.gradle.kts.tmpl │ │ │ └── settings.gradle.kts.tmpl │ │ └── jadx/ │ │ └── core/ │ │ └── deobf/ │ │ └── conditions/ │ │ └── tlds.txt │ └── test/ │ ├── java/ │ │ └── jadx/ │ │ ├── NotYetImplemented.java │ │ ├── NotYetImplementedExtension.java │ │ ├── api/ │ │ │ ├── JadxArgsValidatorOutDirsTest.java │ │ │ ├── JadxDecompilerTest.java │ │ │ └── JadxInternalAccess.java │ │ ├── core/ │ │ │ ├── deobf/ │ │ │ │ └── NameMapperTest.java │ │ │ ├── dex/ │ │ │ │ ├── info/ │ │ │ │ │ └── AccessInfoTest.java │ │ │ │ ├── instructions/ │ │ │ │ │ └── args/ │ │ │ │ │ └── ArgTypeTest.java │ │ │ │ ├── nodes/ │ │ │ │ │ └── utils/ │ │ │ │ │ ├── SelectFromDuplicatesTest.java │ │ │ │ │ └── TypeUtilsTest.java │ │ │ │ ├── trycatch/ │ │ │ │ │ └── TryCatchBlockAttrTest.java │ │ │ │ └── visitors/ │ │ │ │ └── typeinference/ │ │ │ │ ├── PrimitiveConversionsTests.java │ │ │ │ └── TypeCompareTest.java │ │ │ ├── plugins/ │ │ │ │ └── versions/ │ │ │ │ ├── VerifyRequiredVersionTest.java │ │ │ │ └── VersionComparatorTest.java │ │ │ ├── utils/ │ │ │ │ ├── PassMergeTest.java │ │ │ │ ├── TestBetterName.java │ │ │ │ ├── TestGetBetterClassName.java │ │ │ │ ├── TestGetBetterResourceName.java │ │ │ │ ├── TypeUtilsTest.java │ │ │ │ └── log/ │ │ │ │ └── LogUtilsTest.java │ │ │ └── xmlgen/ │ │ │ ├── ResNameUtilsTest.java │ │ │ ├── ResXmlGenTest.java │ │ │ └── entry/ │ │ │ └── ValuesParserTest.java │ │ └── tests/ │ │ ├── api/ │ │ │ ├── ExportGradleTest.java │ │ │ ├── IntegrationTest.java │ │ │ ├── RaungTest.java │ │ │ ├── SmaliTest.java │ │ │ ├── compiler/ │ │ │ │ ├── ClassFileManager.java │ │ │ │ ├── CompilerOptions.java │ │ │ │ ├── DynamicClassLoader.java │ │ │ │ ├── EclipseCompilerUtils.java │ │ │ │ ├── JavaClassObject.java │ │ │ │ ├── JavaUtils.java │ │ │ │ ├── StringJavaFileObject.java │ │ │ │ └── TestCompiler.java │ │ │ ├── extensions/ │ │ │ │ └── profiles/ │ │ │ │ ├── JadxTestProfilesExtension.java │ │ │ │ ├── TestProfile.java │ │ │ │ └── TestWithProfiles.java │ │ │ └── utils/ │ │ │ ├── TestFilesGetter.java │ │ │ ├── TestUtils.java │ │ │ └── assertj/ │ │ │ ├── JadxAssertions.java │ │ │ ├── JadxClassNodeAssertions.java │ │ │ ├── JadxCodeAssertions.java │ │ │ ├── JadxCodeInfoAssertions.java │ │ │ └── JadxMethodNodeAssertions.java │ │ ├── export/ │ │ │ ├── IllegalCharsForGradleWrapper.java │ │ │ ├── OptionalTargetSdkVersion.java │ │ │ ├── TestApacheHttpClient.java │ │ │ ├── TestNonFinalResIds.java │ │ │ └── VectorDrawablesUseSupportLibrary.java │ │ ├── external/ │ │ │ └── BaseExternalTest.java │ │ ├── functional/ │ │ │ ├── AttributeStorageTest.java │ │ │ ├── JadxClasspathTest.java │ │ │ ├── JadxVisitorsOrderTest.java │ │ │ ├── NameMapperTest.java │ │ │ ├── SignatureParserTest.java │ │ │ ├── StringUtilsTest.java │ │ │ ├── TemplateFileTest.java │ │ │ └── TestIfCondition.java │ │ └── integration/ │ │ ├── android/ │ │ │ ├── TestRFieldAccess.java │ │ │ ├── TestRFieldRestore.java │ │ │ ├── TestRFieldRestore2.java │ │ │ ├── TestRFieldRestore3.java │ │ │ ├── TestResConstReplace.java │ │ │ ├── TestResConstReplace2.java │ │ │ └── TestResConstReplace3.java │ │ ├── annotations/ │ │ │ ├── TestAnnotations.java │ │ │ ├── TestAnnotations2.java │ │ │ ├── TestAnnotationsMix.java │ │ │ ├── TestAnnotationsRename.java │ │ │ ├── TestAnnotationsRenameDef.java │ │ │ ├── TestAnnotationsUsage.java │ │ │ └── TestParamAnnotations.java │ │ ├── arith/ │ │ │ ├── TestArith.java │ │ │ ├── TestArith2.java │ │ │ ├── TestArith3.java │ │ │ ├── TestArith4.java │ │ │ ├── TestArithConst.java │ │ │ ├── TestArithNot.java │ │ │ ├── TestFieldIncrement.java │ │ │ ├── TestFieldIncrement2.java │ │ │ ├── TestFieldIncrement3.java │ │ │ ├── TestNumbersFormat.java │ │ │ ├── TestPrimitivesNegate.java │ │ │ ├── TestSpecialValues.java │ │ │ ├── TestSpecialValues2.java │ │ │ └── TestXor.java │ │ ├── arrays/ │ │ │ ├── TestArrayFill.java │ │ │ ├── TestArrayFill2.java │ │ │ ├── TestArrayFill3.java │ │ │ ├── TestArrayFill4.java │ │ │ ├── TestArrayFillConstReplace.java │ │ │ ├── TestArrayFillNegative.java │ │ │ ├── TestArrayFillWithMove.java │ │ │ ├── TestArrayInit.java │ │ │ ├── TestArrayInitField.java │ │ │ ├── TestArrayInitField2.java │ │ │ ├── TestArrays.java │ │ │ ├── TestArrays2.java │ │ │ ├── TestArrays3.java │ │ │ ├── TestArrays4.java │ │ │ ├── TestFillArrayData.java │ │ │ └── TestMultiDimArrayFill.java │ │ ├── code/ │ │ │ ├── TestArrayAccessReorder.java │ │ │ └── TestCodeCommentStyle.java │ │ ├── conditions/ │ │ │ ├── TestBitwiseAnd.java │ │ │ ├── TestBitwiseOr.java │ │ │ ├── TestBooleanToByte.java │ │ │ ├── TestBooleanToChar.java │ │ │ ├── TestBooleanToDouble.java │ │ │ ├── TestBooleanToFloat.java │ │ │ ├── TestBooleanToInt.java │ │ │ ├── TestBooleanToInt2.java │ │ │ ├── TestBooleanToLong.java │ │ │ ├── TestBooleanToShort.java │ │ │ ├── TestCast.java │ │ │ ├── TestCmpOp.java │ │ │ ├── TestCmpOp2.java │ │ │ ├── TestComplexIf.java │ │ │ ├── TestComplexIf2.java │ │ │ ├── TestComplexIf3.java │ │ │ ├── TestComplexIf4.java │ │ │ ├── TestConditionInLoop.java │ │ │ ├── TestConditions.java │ │ │ ├── TestConditions10.java │ │ │ ├── TestConditions11.java │ │ │ ├── TestConditions12.java │ │ │ ├── TestConditions13.java │ │ │ ├── TestConditions14.java │ │ │ ├── TestConditions15.java │ │ │ ├── TestConditions16.java │ │ │ ├── TestConditions17.java │ │ │ ├── TestConditions18.java │ │ │ ├── TestConditions2.java │ │ │ ├── TestConditions21.java │ │ │ ├── TestConditions3.java │ │ │ ├── TestConditions4.java │ │ │ ├── TestConditions5.java │ │ │ ├── TestConditions6.java │ │ │ ├── TestConditions7.java │ │ │ ├── TestConditions8.java │ │ │ ├── TestConditions9.java │ │ │ ├── TestElseIf.java │ │ │ ├── TestElseIfCodeStyle.java │ │ │ ├── TestIfAndSwitch.java │ │ │ ├── TestIfCodeStyle.java │ │ │ ├── TestIfCodeStyle2.java │ │ │ ├── TestIfElseAndConditionIntermediateInstruction.java │ │ │ ├── TestInnerAssign.java │ │ │ ├── TestInnerAssign2.java │ │ │ ├── TestInnerAssign3.java │ │ │ ├── TestNestedIf.java │ │ │ ├── TestNestedIf2.java │ │ │ ├── TestOutBlock.java │ │ │ ├── TestSimpleConditions.java │ │ │ ├── TestTernary.java │ │ │ ├── TestTernary2.java │ │ │ ├── TestTernary3.java │ │ │ ├── TestTernary4.java │ │ │ ├── TestTernaryInIf.java │ │ │ ├── TestTernaryInIf2.java │ │ │ ├── TestTernaryInIf3.java │ │ │ ├── TestTernaryOneBranchInConstructor.java │ │ │ └── TestTernaryOneBranchInConstructor2.java │ │ ├── debuginfo/ │ │ │ ├── TestLineNumbers.java │ │ │ ├── TestLineNumbers2.java │ │ │ ├── TestLineNumbers3.java │ │ │ ├── TestReturnSourceLine.java │ │ │ └── TestVariablesNames.java │ │ ├── deobf/ │ │ │ ├── TestDontRenameClspOverriddenMethod.java │ │ │ ├── TestFieldFromInnerClass.java │ │ │ ├── TestInheritedMethodRename.java │ │ │ ├── TestMthRename.java │ │ │ ├── TestRenameOverriddenMethod.java │ │ │ ├── TestRenameOverriddenMethod2.java │ │ │ ├── TestRenameOverriddenMethod3.java │ │ │ └── a/ │ │ │ └── TestNegativeRenameCondition.java │ │ ├── enums/ │ │ │ ├── TestEnumKotlinEntries.java │ │ │ ├── TestEnumObfuscated.java │ │ │ ├── TestEnumUsesOtherEnum.java │ │ │ ├── TestEnumWithConstInlining.java │ │ │ ├── TestEnumWithFields.java │ │ │ ├── TestEnums.java │ │ │ ├── TestEnums10.java │ │ │ ├── TestEnums11.java │ │ │ ├── TestEnums2.java │ │ │ ├── TestEnums2a.java │ │ │ ├── TestEnums3.java │ │ │ ├── TestEnums4.java │ │ │ ├── TestEnums5.java │ │ │ ├── TestEnums6.java │ │ │ ├── TestEnums7.java │ │ │ ├── TestEnums8.java │ │ │ ├── TestEnums9.java │ │ │ ├── TestEnumsInterface.java │ │ │ ├── TestEnumsWithAssert.java │ │ │ ├── TestEnumsWithConsts.java │ │ │ ├── TestEnumsWithCustomInit.java │ │ │ ├── TestEnumsWithStaticFields.java │ │ │ ├── TestEnumsWithTernary.java │ │ │ ├── TestInnerEnums.java │ │ │ ├── TestSwitchOverEnum.java │ │ │ └── TestSwitchOverEnum2.java │ │ ├── fallback/ │ │ │ ├── TestFallbackManyNops.java │ │ │ └── TestFallbackMode.java │ │ ├── generics/ │ │ │ ├── TestClassSignature.java │ │ │ ├── TestConstructorGenerics.java │ │ │ ├── TestGeneric8.java │ │ │ ├── TestGenericFields.java │ │ │ ├── TestGenerics.java │ │ │ ├── TestGenerics2.java │ │ │ ├── TestGenerics3.java │ │ │ ├── TestGenerics4.java │ │ │ ├── TestGenerics6.java │ │ │ ├── TestGenerics7.java │ │ │ ├── TestGenerics8.java │ │ │ ├── TestGenericsInArgs.java │ │ │ ├── TestGenericsMthOverride.java │ │ │ ├── TestImportGenericMap.java │ │ │ ├── TestMethodOverride.java │ │ │ ├── TestMissingGenericsTypes2.java │ │ │ ├── TestOuterGeneric.java │ │ │ ├── TestSyntheticOverride.java │ │ │ ├── TestTypeVarsFromOuterClass.java │ │ │ ├── TestTypeVarsFromSuperClass.java │ │ │ └── TestUsageInGenerics.java │ │ ├── inline/ │ │ │ ├── TestConstInline.java │ │ │ ├── TestGetterInlineNegative.java │ │ │ ├── TestInline.java │ │ │ ├── TestInline2.java │ │ │ ├── TestInline3.java │ │ │ ├── TestInline6.java │ │ │ ├── TestInline7.java │ │ │ ├── TestInstanceLambda.java │ │ │ ├── TestIssue86.java │ │ │ ├── TestMethodInline.java │ │ │ ├── TestOverlapSyntheticMethods.java │ │ │ ├── TestOverrideBridgeMerge.java │ │ │ ├── TestSyntheticBridgeRename.java │ │ │ ├── TestSyntheticClassInline.java │ │ │ ├── TestSyntheticInline.java │ │ │ ├── TestSyntheticInline2.java │ │ │ ├── TestSyntheticInline3.java │ │ │ └── TestTernaryCast.java │ │ ├── inner/ │ │ │ ├── TestAnonymousClass.java │ │ │ ├── TestAnonymousClass10.java │ │ │ ├── TestAnonymousClass11.java │ │ │ ├── TestAnonymousClass12.java │ │ │ ├── TestAnonymousClass13.java │ │ │ ├── TestAnonymousClass14.java │ │ │ ├── TestAnonymousClass15.java │ │ │ ├── TestAnonymousClass16.java │ │ │ ├── TestAnonymousClass17.java │ │ │ ├── TestAnonymousClass18.java │ │ │ ├── TestAnonymousClass19.java │ │ │ ├── TestAnonymousClass2.java │ │ │ ├── TestAnonymousClass20.java │ │ │ ├── TestAnonymousClass21.java │ │ │ ├── TestAnonymousClass22.java │ │ │ ├── TestAnonymousClass3.java │ │ │ ├── TestAnonymousClass3a.java │ │ │ ├── TestAnonymousClass4.java │ │ │ ├── TestAnonymousClass5.java │ │ │ ├── TestAnonymousClass6.java │ │ │ ├── TestAnonymousClass7.java │ │ │ ├── TestAnonymousClass8.java │ │ │ ├── TestAnonymousClass9.java │ │ │ ├── TestIncorrectAnonymousClass.java │ │ │ ├── TestInner2Samples.java │ │ │ ├── TestInnerClass.java │ │ │ ├── TestInnerClass2.java │ │ │ ├── TestInnerClass3.java │ │ │ ├── TestInnerClass4.java │ │ │ ├── TestInnerClass5.java │ │ │ ├── TestInnerClassFakeSyntheticConstructor.java │ │ │ ├── TestInnerClassSyntheticConstructor.java │ │ │ ├── TestInnerClassSyntheticRename.java │ │ │ ├── TestInnerConstructorCall.java │ │ │ ├── TestNestedAnonymousClass.java │ │ │ ├── TestOuterConstructorCall.java │ │ │ ├── TestReplaceConstsInAnnotations.java │ │ │ ├── TestReplaceConstsInAnnotations2.java │ │ │ └── TestSyntheticMthRename.java │ │ ├── invoke/ │ │ │ ├── TestCastInOverloadedAccessor.java │ │ │ ├── TestCastInOverloadedInvoke.java │ │ │ ├── TestCastInOverloadedInvoke2.java │ │ │ ├── TestCastInOverloadedInvoke3.java │ │ │ ├── TestCastInOverloadedInvoke4.java │ │ │ ├── TestConstructorWithMoves.java │ │ │ ├── TestHierarchyOverloadedInvoke.java │ │ │ ├── TestInheritedStaticInvoke.java │ │ │ ├── TestInvoke1.java │ │ │ ├── TestInvokeInCatch.java │ │ │ ├── TestInvokeWithWideVars.java │ │ │ ├── TestOverloadedInvoke.java │ │ │ ├── TestOverloadedMethodInvoke.java │ │ │ ├── TestOverloadedMethodInvoke2.java │ │ │ ├── TestPolymorphicInvoke.java │ │ │ ├── TestPolymorphicRangeInvoke.java │ │ │ ├── TestRawCustomInvoke.java │ │ │ ├── TestSuperInvoke.java │ │ │ ├── TestSuperInvoke2.java │ │ │ ├── TestSuperInvokeUnknown.java │ │ │ ├── TestSuperInvokeWithGenerics.java │ │ │ ├── TestVarArg.java │ │ │ └── TestVarArg2.java │ │ ├── java8/ │ │ │ ├── TestLambdaArgs.java │ │ │ ├── TestLambdaConstructor.java │ │ │ ├── TestLambdaExtVar.java │ │ │ ├── TestLambdaExtVar2.java │ │ │ ├── TestLambdaInArray.java │ │ │ ├── TestLambdaInstance.java │ │ │ ├── TestLambdaInstance2.java │ │ │ ├── TestLambdaInstance3.java │ │ │ ├── TestLambdaResugar.java │ │ │ ├── TestLambdaReturn.java │ │ │ └── TestLambdaStatic.java │ │ ├── jbc/ │ │ │ ├── TestDup2x1.java │ │ │ └── TestStackConvert.java │ │ ├── loops/ │ │ │ ├── TestArrayForEach.java │ │ │ ├── TestArrayForEach2.java │ │ │ ├── TestArrayForEach3.java │ │ │ ├── TestArrayForEachNegative.java │ │ │ ├── TestBreakInComplexIf.java │ │ │ ├── TestBreakInComplexIf2.java │ │ │ ├── TestBreakInLoop.java │ │ │ ├── TestBreakInLoop2.java │ │ │ ├── TestBreakInLoop3.java │ │ │ ├── TestBreakInLoop4.java │ │ │ ├── TestBreakInLoop5.java │ │ │ ├── TestBreakInLoop6.java │ │ │ ├── TestBreakWithLabel.java │ │ │ ├── TestComplexWhileLoop.java │ │ │ ├── TestContinueInLoop.java │ │ │ ├── TestDoWhileBreak.java │ │ │ ├── TestDoWhileBreak2.java │ │ │ ├── TestDoWhileBreak3.java │ │ │ ├── TestEndlessLoop.java │ │ │ ├── TestEndlessLoop2.java │ │ │ ├── TestIfInLoop2.java │ │ │ ├── TestIfInLoop3.java │ │ │ ├── TestIfInLoop4.java │ │ │ ├── TestIndexForLoop.java │ │ │ ├── TestIndexedLoop.java │ │ │ ├── TestIterableForEach.java │ │ │ ├── TestIterableForEach2.java │ │ │ ├── TestIterableForEach3.java │ │ │ ├── TestIterableForEach4.java │ │ │ ├── TestLoopCondition.java │ │ │ ├── TestLoopCondition2.java │ │ │ ├── TestLoopCondition3.java │ │ │ ├── TestLoopCondition4.java │ │ │ ├── TestLoopCondition5.java │ │ │ ├── TestLoopConditionInvoke.java │ │ │ ├── TestLoopDetection.java │ │ │ ├── TestLoopDetection2.java │ │ │ ├── TestLoopDetection3.java │ │ │ ├── TestLoopDetection4.java │ │ │ ├── TestLoopDetection5.java │ │ │ ├── TestLoopRestore.java │ │ │ ├── TestLoopRestore2.java │ │ │ ├── TestLoopRestore3.java │ │ │ ├── TestMultiEntryLoop.java │ │ │ ├── TestMultiEntryLoop2.java │ │ │ ├── TestNestedLoops.java │ │ │ ├── TestNestedLoops2.java │ │ │ ├── TestNestedLoops3.java │ │ │ ├── TestNestedLoops4.java │ │ │ ├── TestNestedLoops5.java │ │ │ ├── TestNotIndexedLoop.java │ │ │ ├── TestSequentialLoops.java │ │ │ ├── TestSequentialLoops2.java │ │ │ ├── TestSynchronizedInEndlessLoop.java │ │ │ ├── TestTryCatchInLoop.java │ │ │ └── TestTryCatchInLoop2.java │ │ ├── names/ │ │ │ ├── TestCaseSensitiveChecks.java │ │ │ ├── TestClassNameWithInvalidChar.java │ │ │ ├── TestClassNamesCollision.java │ │ │ ├── TestClassNamesCollision2.java │ │ │ ├── TestCollisionWithJavaLangClasses.java │ │ │ ├── TestConstructorArgNames.java │ │ │ ├── TestDefPkgRename.java │ │ │ ├── TestDuplicateVarNames.java │ │ │ ├── TestDuplicatedNames.java │ │ │ ├── TestFieldCollideWithPackage.java │ │ │ ├── TestLocalVarCollideWithPackage.java │ │ │ ├── TestNameAssign2.java │ │ │ ├── TestReservedClassNames.java │ │ │ ├── TestReservedNames.java │ │ │ ├── TestReservedPackageNames.java │ │ │ ├── TestSameMethodsNames.java │ │ │ ├── pkg/ │ │ │ │ ├── a.java │ │ │ │ └── b.java │ │ │ └── pkg2/ │ │ │ ├── System.java │ │ │ └── TestCls.java │ │ ├── others/ │ │ │ ├── TestAllNops.java │ │ │ ├── TestArgInline.java │ │ │ ├── TestBadClassAccessModifiers.java │ │ │ ├── TestBadMethodAccessModifiers.java │ │ │ ├── TestCastOfNull.java │ │ │ ├── TestClassGen.java │ │ │ ├── TestClassImplementsSignature.java │ │ │ ├── TestClassReGen.java │ │ │ ├── TestCodeComments.java │ │ │ ├── TestCodeComments2.java │ │ │ ├── TestCodeComments2a.java │ │ │ ├── TestCodeCommentsMultiline.java │ │ │ ├── TestCodeCommentsOverride.java │ │ │ ├── TestCodeMetadata.java │ │ │ ├── TestCodeMetadata2.java │ │ │ ├── TestCodeMetadata3.java │ │ │ ├── TestConstReplace.java │ │ │ ├── TestConstStringConcat.java │ │ │ ├── TestConstructor.java │ │ │ ├── TestConstructor2.java │ │ │ ├── TestConstructorBranched.java │ │ │ ├── TestConstructorBranched2.java │ │ │ ├── TestConstructorBranched3.java │ │ │ ├── TestDeadBlockReferencesStart.java │ │ │ ├── TestDeboxing.java │ │ │ ├── TestDeboxing2.java │ │ │ ├── TestDeboxing3.java │ │ │ ├── TestDeboxing4.java │ │ │ ├── TestDeboxing5.java │ │ │ ├── TestDefConstructorNotRemoved.java │ │ │ ├── TestDefConstructorWithAnnotation.java │ │ │ ├── TestDuplicateCast.java │ │ │ ├── TestExplicitOverride.java │ │ │ ├── TestFieldAccessReorder.java │ │ │ ├── TestFieldInit2.java │ │ │ ├── TestFieldInit3.java │ │ │ ├── TestFieldInitInTryCatch.java │ │ │ ├── TestFieldInitNegative.java │ │ │ ├── TestFieldInitOrder.java │ │ │ ├── TestFieldInitOrder2.java │ │ │ ├── TestFieldInitOrderStatic.java │ │ │ ├── TestFieldUsageMove.java │ │ │ ├── TestFixClassAccessModifiers.java │ │ │ ├── TestFloatValue.java │ │ │ ├── TestIfInTry.java │ │ │ ├── TestIfTryInCatch.java │ │ │ ├── TestIncorrectFieldSignature.java │ │ │ ├── TestIncorrectMethodSignature.java │ │ │ ├── TestInlineVarArg.java │ │ │ ├── TestInsnsBeforeSuper.java │ │ │ ├── TestInsnsBeforeSuper2.java │ │ │ ├── TestInsnsBeforeThis.java │ │ │ ├── TestInterfaceDefaultMethod.java │ │ │ ├── TestInvalidExceptions.java │ │ │ ├── TestInvalidExceptions2.java │ │ │ ├── TestIssue13a.java │ │ │ ├── TestIssue13b.java │ │ │ ├── TestJavaDup2x2.java │ │ │ ├── TestJavaDupInsn.java │ │ │ ├── TestJavaJSR.java │ │ │ ├── TestJavaSwap.java │ │ │ ├── TestJsonOutput.java │ │ │ ├── TestLoopInTry.java │ │ │ ├── TestMethodParametersAttribute.java │ │ │ ├── TestMissingExceptions.java │ │ │ ├── TestMoveInline.java │ │ │ ├── TestMultipleNOPs.java │ │ │ ├── TestN21.java │ │ │ ├── TestNullInline.java │ │ │ ├── TestOverridePackagePrivateMethod.java │ │ │ ├── TestOverridePrivateMethod.java │ │ │ ├── TestOverrideStaticMethod.java │ │ │ ├── TestOverrideWithSameName.java │ │ │ ├── TestOverrideWithTwoBases.java │ │ │ ├── TestOverrideWithTwoBases2.java │ │ │ ├── TestPrimitiveCasts.java │ │ │ ├── TestPrimitiveCasts2.java │ │ │ ├── TestRedundantBrackets.java │ │ │ ├── TestRedundantReturn.java │ │ │ ├── TestReturnWrapping.java │ │ │ ├── TestShadowingSuperMember.java │ │ │ ├── TestStaticFieldsInit.java │ │ │ ├── TestStaticMethod.java │ │ │ ├── TestStringBuilderElimination.java │ │ │ ├── TestStringBuilderElimination2.java │ │ │ ├── TestStringBuilderElimination3.java │ │ │ ├── TestStringBuilderElimination4Neg.java │ │ │ ├── TestStringBuilderElimination5.java │ │ │ ├── TestStringConcatJava11.java │ │ │ ├── TestStringConcatWithoutResult.java │ │ │ ├── TestStringConstructor.java │ │ │ ├── TestSuperLoop.java │ │ │ ├── TestSyntheticConstructor.java │ │ │ ├── TestThrows.java │ │ │ ├── TestUsageApacheHttpClient.java │ │ │ ├── TestWrongCode.java │ │ │ └── TestWrongCode2.java │ │ ├── rename/ │ │ │ ├── TestAnonymousInline.java │ │ │ ├── TestConstReplace.java │ │ │ ├── TestFieldRenameFormat.java │ │ │ ├── TestFieldWithGenericRename.java │ │ │ ├── TestRenameEnum.java │ │ │ ├── TestUserRenames.java │ │ │ └── TestUsingSourceFileName.java │ │ ├── special/ │ │ │ └── TestPackageInfoSupport.java │ │ ├── switches/ │ │ │ ├── TestSwitch.java │ │ │ ├── TestSwitch2.java │ │ │ ├── TestSwitch3.java │ │ │ ├── TestSwitch4.java │ │ │ ├── TestSwitchBreak.java │ │ │ ├── TestSwitchBreak2.java │ │ │ ├── TestSwitchBreak3.java │ │ │ ├── TestSwitchBreak4.java │ │ │ ├── TestSwitchContinue.java │ │ │ ├── TestSwitchFallThrough.java │ │ │ ├── TestSwitchInLoop.java │ │ │ ├── TestSwitchInLoop2.java │ │ │ ├── TestSwitchInLoop3.java │ │ │ ├── TestSwitchInLoop4.java │ │ │ ├── TestSwitchInLoop5.java │ │ │ ├── TestSwitchInLoop6.java │ │ │ ├── TestSwitchInLoop7.java │ │ │ ├── TestSwitchInLoop8.java │ │ │ ├── TestSwitchInLoop9.java │ │ │ ├── TestSwitchLabels.java │ │ │ ├── TestSwitchNoDefault.java │ │ │ ├── TestSwitchOverStrings.java │ │ │ ├── TestSwitchOverStrings2.java │ │ │ ├── TestSwitchOverStrings3.java │ │ │ ├── TestSwitchReturnFromCase.java │ │ │ ├── TestSwitchReturnFromCase2.java │ │ │ ├── TestSwitchSimple.java │ │ │ ├── TestSwitchWithFallThroughCase.java │ │ │ ├── TestSwitchWithFallThroughCase2.java │ │ │ ├── TestSwitchWithThrow.java │ │ │ └── TestSwitchWithTryCatch.java │ │ ├── synchronize/ │ │ │ ├── TestNestedSynchronize.java │ │ │ ├── TestSynchronized.java │ │ │ ├── TestSynchronized2.java │ │ │ ├── TestSynchronized3.java │ │ │ ├── TestSynchronized4.java │ │ │ ├── TestSynchronized5.java │ │ │ └── TestSynchronized6.java │ │ ├── trycatch/ │ │ │ ├── TestEmptyCatch.java │ │ │ ├── TestEmptyFinally.java │ │ │ ├── TestFinally.java │ │ │ ├── TestFinally2.java │ │ │ ├── TestFinally3.java │ │ │ ├── TestFinallyExtract.java │ │ │ ├── TestIfInTryCatch.java │ │ │ ├── TestInlineInCatch.java │ │ │ ├── TestLoopInTryCatch.java │ │ │ ├── TestMultiExceptionCatch.java │ │ │ ├── TestMultiExceptionCatch2.java │ │ │ ├── TestMultiExceptionCatchSameJump.java │ │ │ ├── TestNestedTryCatch.java │ │ │ ├── TestNestedTryCatch2.java │ │ │ ├── TestNestedTryCatch3.java │ │ │ ├── TestNestedTryCatch4.java │ │ │ ├── TestNestedTryCatch5.java │ │ │ ├── TestTryAfterDeclaration.java │ │ │ ├── TestTryCatch.java │ │ │ ├── TestTryCatch10.java │ │ │ ├── TestTryCatch11.java │ │ │ ├── TestTryCatch2.java │ │ │ ├── TestTryCatch6.java │ │ │ ├── TestTryCatch7.java │ │ │ ├── TestTryCatch8.java │ │ │ ├── TestTryCatch9.java │ │ │ ├── TestTryCatchFinally.java │ │ │ ├── TestTryCatchFinally10.java │ │ │ ├── TestTryCatchFinally11.java │ │ │ ├── TestTryCatchFinally12.java │ │ │ ├── TestTryCatchFinally13.java │ │ │ ├── TestTryCatchFinally14.java │ │ │ ├── TestTryCatchFinally15.java │ │ │ ├── TestTryCatchFinally16.java │ │ │ ├── TestTryCatchFinally17.java │ │ │ ├── TestTryCatchFinally18.java │ │ │ ├── TestTryCatchFinally19.java │ │ │ ├── TestTryCatchFinally2.java │ │ │ ├── TestTryCatchFinally3.java │ │ │ ├── TestTryCatchFinally4.java │ │ │ ├── TestTryCatchFinally5.java │ │ │ ├── TestTryCatchFinally6.java │ │ │ ├── TestTryCatchFinally7.java │ │ │ ├── TestTryCatchFinally8.java │ │ │ ├── TestTryCatchFinally9.java │ │ │ ├── TestTryCatchInIf.java │ │ │ ├── TestTryCatchInIf2.java │ │ │ ├── TestTryCatchLastInsn.java │ │ │ ├── TestTryCatchMultiException.java │ │ │ ├── TestTryCatchMultiException2.java │ │ │ ├── TestTryCatchNoMoveExc.java │ │ │ ├── TestTryCatchNoMoveExc2.java │ │ │ ├── TestTryCatchStartOnMove.java │ │ │ ├── TestTryWithEmptyCatch.java │ │ │ ├── TestTryWithEmptyCatchTriple.java │ │ │ ├── TestTryWithResources.java │ │ │ ├── TestUnreachableCatch.java │ │ │ └── TestUnreachableCatch2.java │ │ ├── types/ │ │ │ ├── TestArrayTypes.java │ │ │ ├── TestConstInline.java │ │ │ ├── TestConstTypeInference.java │ │ │ ├── TestFieldAccess.java │ │ │ ├── TestFieldCast.java │ │ │ ├── TestGenerics.java │ │ │ ├── TestGenerics2.java │ │ │ ├── TestGenerics3.java │ │ │ ├── TestGenerics4.java │ │ │ ├── TestGenerics5.java │ │ │ ├── TestGenerics6.java │ │ │ ├── TestGenerics7.java │ │ │ ├── TestGenerics8.java │ │ │ ├── TestGenericsInFullInnerCls.java │ │ │ ├── TestInterfacesCast.java │ │ │ ├── TestLongCast.java │ │ │ ├── TestPrimitiveConversion.java │ │ │ ├── TestPrimitiveConversion2.java │ │ │ ├── TestPrimitivesInIf.java │ │ │ ├── TestTypeInheritance.java │ │ │ ├── TestTypeResolver.java │ │ │ ├── TestTypeResolver10.java │ │ │ ├── TestTypeResolver11.java │ │ │ ├── TestTypeResolver12.java │ │ │ ├── TestTypeResolver13.java │ │ │ ├── TestTypeResolver14.java │ │ │ ├── TestTypeResolver15.java │ │ │ ├── TestTypeResolver16.java │ │ │ ├── TestTypeResolver17.java │ │ │ ├── TestTypeResolver18.java │ │ │ ├── TestTypeResolver19.java │ │ │ ├── TestTypeResolver2.java │ │ │ ├── TestTypeResolver20.java │ │ │ ├── TestTypeResolver21.java │ │ │ ├── TestTypeResolver22.java │ │ │ ├── TestTypeResolver23.java │ │ │ ├── TestTypeResolver24.java │ │ │ ├── TestTypeResolver25.java │ │ │ ├── TestTypeResolver26.java │ │ │ ├── TestTypeResolver3.java │ │ │ ├── TestTypeResolver4.java │ │ │ ├── TestTypeResolver5.java │ │ │ ├── TestTypeResolver6.java │ │ │ ├── TestTypeResolver6a.java │ │ │ ├── TestTypeResolver7.java │ │ │ ├── TestTypeResolver8.java │ │ │ └── TestTypeResolver9.java │ │ ├── usethis/ │ │ │ ├── TestDontInlineThis.java │ │ │ ├── TestInlineThis.java │ │ │ ├── TestInlineThis2.java │ │ │ └── TestRedundantThis.java │ │ └── variables/ │ │ ├── TestThisBranchDup.java │ │ ├── TestVariables2.java │ │ ├── TestVariables3.java │ │ ├── TestVariables4.java │ │ ├── TestVariables5.java │ │ ├── TestVariables6.java │ │ ├── TestVariablesDeclAnnotation.java │ │ ├── TestVariablesDefinitions.java │ │ ├── TestVariablesDefinitions2.java │ │ ├── TestVariablesGeneric.java │ │ ├── TestVariablesIfElseChain.java │ │ ├── TestVariablesInInlinedAssign.java │ │ ├── TestVariablesInLoop.java │ │ └── TestVariablesUsageWithLoops.java │ ├── raung/ │ │ ├── enums/ │ │ │ └── TestEnums11.raung │ │ ├── java8/ │ │ │ └── TestLambdaInstance3.raung │ │ ├── jbc/ │ │ │ └── TestStackConvert.raung │ │ ├── loops/ │ │ │ └── TestLoopRestore2.raung │ │ └── others/ │ │ ├── TestClassImplementsSignature.raung │ │ ├── TestJavaDup2x2.raung │ │ ├── TestJavaJSR.raung │ │ ├── TestJavaSwap.raung │ │ └── TestStringConcatJava11.raung │ ├── resources/ │ │ ├── logback.xml │ │ ├── manifest/ │ │ │ ├── IllegalCharsForGradleWrapper.xml │ │ │ ├── MinSdkVersion25.xml │ │ │ ├── OptionalTargetSdkVersion.xml │ │ │ └── strings.xml │ │ ├── mockito-extensions/ │ │ │ └── org.mockito.plugins.MockMaker │ │ └── test-samples/ │ │ ├── app-with-fake-dex.apk │ │ └── hello.dex │ └── smali/ │ ├── arith/ │ │ ├── TestArithConst.smali │ │ ├── TestArithNot.smali │ │ └── TestXor.smali │ ├── arrays/ │ │ ├── TestArrayFillWithMove/ │ │ │ └── TestCls.smali │ │ ├── TestArrayInitField2.smali │ │ └── TestFillArrayData/ │ │ └── TestCls.smali │ ├── conditions/ │ │ ├── TestBooleanToByte.smali │ │ ├── TestBooleanToChar.smali │ │ ├── TestBooleanToDouble.smali │ │ ├── TestBooleanToFloat.smali │ │ ├── TestBooleanToInt.smali │ │ ├── TestBooleanToInt2.smali │ │ ├── TestBooleanToLong.smali │ │ ├── TestBooleanToShort.smali │ │ ├── TestComplexIf.smali │ │ ├── TestComplexIf2.smali │ │ ├── TestComplexIf3.smali │ │ ├── TestComplexIf4.smali │ │ ├── TestConditions18.smali │ │ ├── TestConditions21.smali │ │ ├── TestIfAndSwitch.smali │ │ ├── TestIfCodeStyle.smali │ │ ├── TestIfCodeStyle2.smali │ │ ├── TestIfElseAndConditionIntermediateInstruction.smali │ │ ├── TestInnerAssign3.smali │ │ ├── TestOutBlock.smali │ │ ├── TestTernary4.smali │ │ ├── TestTernaryInIf2.smali │ │ ├── TestTernaryInIf3.smali │ │ └── TestTernaryOneBranchInConstructor2.smali │ ├── debuginfo/ │ │ └── TestVariablesNames.smali │ ├── enums/ │ │ ├── TestEnumKotlinEntries.smali │ │ ├── TestEnumObfuscated.smali │ │ ├── TestEnumUsesOtherEnum.smali │ │ ├── TestEnumWithFields.smali │ │ ├── TestEnums10.smali │ │ ├── TestEnums5.smali │ │ ├── TestEnums8.smali │ │ ├── TestEnumsWithStaticFields.smali │ │ └── TestSwitchOverEnum/ │ │ ├── Count.smali │ │ └── TestSwitchOverEnum.smali │ ├── fallback/ │ │ └── TestFallbackManyNops.smali │ ├── generics/ │ │ ├── TestClassSignature.smali │ │ ├── TestMethodOverride.smali │ │ ├── TestMissingGenericsTypes2.smali │ │ └── TestSyntheticOverride/ │ │ ├── KotlinFunction1.smali │ │ └── TestSyntheticOverride.smali │ ├── inline/ │ │ ├── TestGetterInlineNegative.smali │ │ ├── TestInline7.smali │ │ ├── TestInstanceLambda/ │ │ │ ├── Lambda.smali │ │ │ └── TestCls.smali │ │ ├── TestMethodInline/ │ │ │ ├── A.smali │ │ │ ├── B.smali │ │ │ └── C.smali │ │ ├── TestOverlapSyntheticMethods.smali │ │ ├── TestOverrideBridgeMerge.smali │ │ ├── TestSyntheticClassInline/ │ │ │ ├── A.smali │ │ │ └── B.smali │ │ └── TestSyntheticInline3/ │ │ ├── KotlinFunction1.smali │ │ ├── TestSyntheticInline3$onCreate$1.smali │ │ └── TestSyntheticInline3.smali │ ├── inner/ │ │ ├── TestAnonymousClass14/ │ │ │ ├── OuterCls$1.smali │ │ │ ├── OuterCls$TestCls.smali │ │ │ └── OuterCls.smali │ │ ├── TestAnonymousClass19/ │ │ │ ├── ATestCls.smali │ │ │ └── Lambda$TestCls$1.smali │ │ ├── TestIncorrectAnonymousClass/ │ │ │ ├── TestCls$1.smali │ │ │ └── TestCls.smali │ │ ├── TestInnerClassFakeSyntheticConstructor.smali │ │ ├── TestInnerClassSyntheticRename.smali │ │ ├── TestNestedAnonymousClass/ │ │ │ ├── A.smali │ │ │ ├── B.smali │ │ │ └── C.smali │ │ └── TestSyntheticMthRename/ │ │ ├── TestCls$A.smali │ │ ├── TestCls$I.smali │ │ └── TestCls.smali │ ├── invoke/ │ │ ├── TestCastInOverloadedInvoke2.smali │ │ ├── TestConstructorWithMoves.smali │ │ ├── TestPolymorphicInvoke.smali │ │ └── TestRawCustomInvoke.smali │ ├── loops/ │ │ ├── TestBreakInLoop6.smali │ │ ├── TestEndlessLoop2.smali │ │ ├── TestIfInLoop4.smali │ │ ├── TestLoopCondition5.smali │ │ ├── TestLoopRestore.smali │ │ ├── TestLoopRestore3.smali │ │ ├── TestMultiEntryLoop.smali │ │ └── TestMultiEntryLoop2.smali │ ├── names/ │ │ ├── TestCaseSensitiveChecks/ │ │ │ ├── 1.smali │ │ │ └── 2.smali │ │ ├── TestClassNameWithInvalidChar/ │ │ │ ├── a.smali │ │ │ └── b.smali │ │ ├── TestDefPkgRename/ │ │ │ ├── a.smali │ │ │ └── b.smali │ │ ├── TestDuplicatedNames.smali │ │ ├── TestFieldCollideWithPackage/ │ │ │ ├── 1.smali │ │ │ └── 2.smali │ │ ├── TestLocalVarCollideWithPackage/ │ │ │ ├── 1.smali │ │ │ ├── 2.smali │ │ │ └── 3.smali │ │ ├── TestReservedClassNames.smali │ │ ├── TestReservedNames.smali │ │ └── TestReservedPackageNames/ │ │ └── a.smali │ ├── others/ │ │ ├── TestAllNops.smali │ │ ├── TestBadClassAccessModifiers/ │ │ │ ├── A.smali │ │ │ ├── B$BB$BBB.smali │ │ │ ├── B$BB.smali │ │ │ └── B.smali │ │ ├── TestBadMethodAccessModifiers/ │ │ │ ├── TestCls$A.smali │ │ │ ├── TestCls$B.smali │ │ │ └── TestCls.smali │ │ ├── TestConstructor.smali │ │ ├── TestConstructor2/ │ │ │ ├── A.smali │ │ │ └── TestConstructor2.smali │ │ ├── TestConstructorBranched.smali │ │ ├── TestConstructorBranched2.smali │ │ ├── TestConstructorBranched3.smali │ │ ├── TestDeadBlockReferencesStart.smali │ │ ├── TestExplicitOverride.smali │ │ ├── TestFieldInitOrder2.smali │ │ ├── TestFieldUsageMove.smali │ │ ├── TestFixClassAccessModifiers/ │ │ │ ├── Cls.smali │ │ │ ├── InnerCls.smali │ │ │ └── TestCls.smali │ │ ├── TestIncorrectFieldSignature.smali │ │ ├── TestIncorrectMethodSignature.smali │ │ ├── TestInlineVarArg.smali │ │ ├── TestInsnsBeforeSuper/ │ │ │ ├── A.smali │ │ │ └── B.smali │ │ ├── TestInsnsBeforeSuper2.smali │ │ ├── TestInsnsBeforeThis.smali │ │ ├── TestInvalidExceptions.smali │ │ ├── TestInvalidExceptions2.smali │ │ ├── TestMissingExceptions.smali │ │ ├── TestMoveInline.smali │ │ ├── TestMultipleNOPs/ │ │ │ └── test.smali │ │ ├── TestN21.smali │ │ ├── TestOverridePackagePrivateMethod/ │ │ │ ├── A.smali │ │ │ ├── B.smali │ │ │ └── C.smali │ │ ├── TestOverrideWithSameName/ │ │ │ ├── A.smali │ │ │ ├── B.smali │ │ │ └── C.smali │ │ ├── TestSuperLoop/ │ │ │ ├── A.smali │ │ │ └── B.smali │ │ ├── TestSyntheticConstructor/ │ │ │ ├── BuggyConstructor.smali │ │ │ └── Test.smali │ │ └── TestUsageApacheHttpClient.smali │ ├── rename/ │ │ └── TestUsingSourceFileName/ │ │ └── b.smali │ ├── special/ │ │ └── TestPackageInfoSupport/ │ │ ├── pkg1.smali │ │ ├── pkg2.smali │ │ └── pkg3.smali │ ├── switches/ │ │ ├── TestSwitchOverStrings3.smali │ │ └── TestSwitchOverStrings4.smali │ ├── synchronize/ │ │ ├── TestNestedSynchronize.smali │ │ ├── TestSynchronized4.smali │ │ ├── TestSynchronized5.smali │ │ └── TestSynchronized6.smali │ ├── trycatch/ │ │ ├── TestEmptyCatch.smali │ │ ├── TestFinally3.smali │ │ ├── TestLoopInTryCatch.smali │ │ ├── TestMultiExceptionCatchSameJump.smali │ │ ├── TestNestedTryCatch4.smali │ │ ├── TestNestedTryCatch5.smali │ │ ├── TestTryCatch10.smali │ │ ├── TestTryCatchFinally10.smali │ │ ├── TestTryCatchFinally15.smali │ │ ├── TestTryCatchLastInsn.smali │ │ ├── TestTryCatchMultiException2.smali │ │ ├── TestTryCatchNoMoveExc.smali │ │ ├── TestTryCatchNoMoveExc2.smali │ │ ├── TestTryCatchStartOnMove.smali │ │ ├── TestTryWithEmptyCatchTriple.smali │ │ └── TestUnreachableCatch.smali │ ├── types/ │ │ ├── TestConstInline.smali │ │ ├── TestGenerics2.smali │ │ ├── TestGenericsInFullInnerCls/ │ │ │ ├── FieldCls.smali │ │ │ ├── ba.smali │ │ │ ├── bb.smali │ │ │ ├── bc.smali │ │ │ └── n.smali │ │ ├── TestPrimitiveConversion.smali │ │ ├── TestPrimitiveConversion2.smali │ │ ├── TestTypeResolver10.smali │ │ ├── TestTypeResolver14.smali │ │ ├── TestTypeResolver15.smali │ │ ├── TestTypeResolver16.smali │ │ ├── TestTypeResolver17.smali │ │ ├── TestTypeResolver20/ │ │ │ ├── Sequence.smali │ │ │ └── TestTypeResolver20.smali │ │ ├── TestTypeResolver21.smali │ │ ├── TestTypeResolver24/ │ │ │ ├── T1.smali │ │ │ ├── T2.smali │ │ │ └── Test1.smali │ │ ├── TestTypeResolver25.smali │ │ ├── TestTypeResolver5.smali │ │ └── TestTypeResolver8/ │ │ ├── A.smali │ │ ├── B.smali │ │ └── TestCls.smali │ └── variables/ │ ├── TestThisBranchDup.smali │ ├── TestVariables6.smali │ ├── TestVariablesGeneric.smali │ └── TestVariablesInLoop.smali ├── jadx-gui/ │ ├── build.gradle.kts │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── jadx/ │ │ │ └── gui/ │ │ │ ├── JadxGUI.java │ │ │ ├── JadxWrapper.java │ │ │ ├── cache/ │ │ │ │ ├── code/ │ │ │ │ │ ├── CodeCacheMode.java │ │ │ │ │ ├── CodeStringCache.java │ │ │ │ │ ├── FixedCodeCache.java │ │ │ │ │ └── disk/ │ │ │ │ │ ├── BufferCodeCache.java │ │ │ │ │ ├── CodeMetadataAdapter.java │ │ │ │ │ ├── DiskCodeCache.java │ │ │ │ │ └── adapters/ │ │ │ │ │ ├── ArgTypeAdapter.java │ │ │ │ │ ├── ClassNodeAdapter.java │ │ │ │ │ ├── CodeAnnotationAdapter.java │ │ │ │ │ ├── DataAdapter.java │ │ │ │ │ ├── DataAdapterHelper.java │ │ │ │ │ ├── FieldNodeAdapter.java │ │ │ │ │ ├── InsnCodeOffsetAdapter.java │ │ │ │ │ ├── MethodNodeAdapter.java │ │ │ │ │ ├── NodeDeclareRefAdapter.java │ │ │ │ │ ├── NodeEndAdapter.java │ │ │ │ │ ├── VarNodeAdapter.java │ │ │ │ │ └── VarRefAdapter.java │ │ │ │ ├── manager/ │ │ │ │ │ ├── CacheEntry.java │ │ │ │ │ └── CacheManager.java │ │ │ │ └── usage/ │ │ │ │ ├── CachedMethodRef.java │ │ │ │ ├── ClsUsageData.java │ │ │ │ ├── CollectUsageData.java │ │ │ │ ├── FldRef.java │ │ │ │ ├── FldUsageData.java │ │ │ │ ├── MthRef.java │ │ │ │ ├── MthUsageData.java │ │ │ │ ├── RawUsageData.java │ │ │ │ ├── UsageCacheMode.java │ │ │ │ ├── UsageData.java │ │ │ │ ├── UsageFileAdapter.java │ │ │ │ └── UsageInfoCache.java │ │ │ ├── device/ │ │ │ │ ├── debugger/ │ │ │ │ │ ├── ArtAdapter.java │ │ │ │ │ ├── BreakpointManager.java │ │ │ │ │ ├── DbgUtils.java │ │ │ │ │ ├── DebugController.java │ │ │ │ │ ├── DebugSettings.java │ │ │ │ │ ├── EventListenerAdapter.java │ │ │ │ │ ├── LogcatController.java │ │ │ │ │ ├── RegisterObserver.java │ │ │ │ │ ├── RuntimeType.java │ │ │ │ │ ├── SmaliDebugger.java │ │ │ │ │ ├── SmaliDebuggerException.java │ │ │ │ │ ├── SuspendInfo.java │ │ │ │ │ └── smali/ │ │ │ │ │ ├── RegisterInfo.java │ │ │ │ │ ├── Smali.java │ │ │ │ │ ├── SmaliMethodNode.java │ │ │ │ │ ├── SmaliRegister.java │ │ │ │ │ └── SmaliWriter.java │ │ │ │ └── protocol/ │ │ │ │ ├── ADB.java │ │ │ │ ├── ADBDevice.java │ │ │ │ └── ADBDeviceInfo.java │ │ │ ├── events/ │ │ │ │ ├── JadxGuiEvents.java │ │ │ │ ├── services/ │ │ │ │ │ └── RenameService.java │ │ │ │ └── types/ │ │ │ │ ├── JadxGuiEventsImpl.java │ │ │ │ └── TreeUpdate.java │ │ │ ├── jobs/ │ │ │ │ ├── BackgroundExecutor.java │ │ │ │ ├── Cancelable.java │ │ │ │ ├── CancelableBackgroundTask.java │ │ │ │ ├── DecompileTask.java │ │ │ │ ├── ExportTask.java │ │ │ │ ├── IBackgroundTask.java │ │ │ │ ├── ITaskInfo.java │ │ │ │ ├── ITaskProgress.java │ │ │ │ ├── InternalTask.java │ │ │ │ ├── LoadTask.java │ │ │ │ ├── ProcessResult.java │ │ │ │ ├── ProgressUpdater.java │ │ │ │ ├── SilentTask.java │ │ │ │ ├── SimpleTask.java │ │ │ │ ├── TaskProgress.java │ │ │ │ ├── TaskStatus.java │ │ │ │ └── TaskWithExtraOnFinish.java │ │ │ ├── logs/ │ │ │ │ ├── ILogListener.java │ │ │ │ ├── IssuesListener.java │ │ │ │ ├── LimitedQueue.java │ │ │ │ ├── LogAppender.java │ │ │ │ ├── LogCollector.java │ │ │ │ ├── LogEvent.java │ │ │ │ ├── LogMode.java │ │ │ │ ├── LogOptions.java │ │ │ │ └── LogPanel.java │ │ │ ├── plugins/ │ │ │ │ ├── context/ │ │ │ │ │ ├── CodePopupAction.java │ │ │ │ │ ├── CommonGuiPluginsContext.java │ │ │ │ │ ├── GuiPluginContext.java │ │ │ │ │ ├── GuiSettingsContext.java │ │ │ │ │ ├── ITreeInputCategory.java │ │ │ │ │ └── TreePopupMenuEntry.java │ │ │ │ ├── mappings/ │ │ │ │ │ ├── JInputMapping.java │ │ │ │ │ └── RenameMappingsGui.java │ │ │ │ └── quark/ │ │ │ │ ├── QuarkDialog.java │ │ │ │ ├── QuarkManager.java │ │ │ │ ├── QuarkReportData.java │ │ │ │ ├── QuarkReportNode.java │ │ │ │ └── QuarkReportPanel.java │ │ │ ├── report/ │ │ │ │ ├── ExceptionData.java │ │ │ │ ├── ExceptionDialog.java │ │ │ │ └── JadxExceptionHandler.java │ │ │ ├── search/ │ │ │ │ ├── ISearchMethod.java │ │ │ │ ├── ISearchProvider.java │ │ │ │ ├── SearchJob.java │ │ │ │ ├── SearchSettings.java │ │ │ │ ├── SearchTask.java │ │ │ │ └── providers/ │ │ │ │ ├── BaseSearchProvider.java │ │ │ │ ├── ClassSearchProvider.java │ │ │ │ ├── CodeSearchProvider.java │ │ │ │ ├── CommentSearchProvider.java │ │ │ │ ├── FieldSearchProvider.java │ │ │ │ ├── MergedSearchProvider.java │ │ │ │ ├── MethodSearchProvider.java │ │ │ │ ├── ResourceFilter.java │ │ │ │ └── ResourceSearchProvider.java │ │ │ ├── settings/ │ │ │ │ ├── JadxConfigExcludeExport.java │ │ │ │ ├── JadxGUIArgs.java │ │ │ │ ├── JadxProject.java │ │ │ │ ├── JadxSettings.java │ │ │ │ ├── JadxSettingsData.java │ │ │ │ ├── JadxUpdateChannel.java │ │ │ │ ├── LineNumbersMode.java │ │ │ │ ├── TabStateViewAdapter.java │ │ │ │ ├── WindowLocation.java │ │ │ │ ├── XposedCodegenLanguage.java │ │ │ │ ├── data/ │ │ │ │ │ ├── ITabStatePersist.java │ │ │ │ │ ├── ProjectData.java │ │ │ │ │ ├── SaveOptionEnum.java │ │ │ │ │ ├── ShortcutsWrapper.java │ │ │ │ │ ├── TabViewState.java │ │ │ │ │ └── ViewPoint.java │ │ │ │ ├── font/ │ │ │ │ │ ├── FontAdapter.java │ │ │ │ │ └── FontSettings.java │ │ │ │ └── ui/ │ │ │ │ ├── JadxSettingsWindow.java │ │ │ │ ├── SettingsGroup.java │ │ │ │ ├── SettingsTree.java │ │ │ │ ├── SettingsTreeNode.java │ │ │ │ ├── SubSettingsGroup.java │ │ │ │ ├── cache/ │ │ │ │ │ ├── CacheSettingsGroup.java │ │ │ │ │ ├── CachesTable.java │ │ │ │ │ ├── CachesTableModel.java │ │ │ │ │ ├── CachesTableRenderer.java │ │ │ │ │ └── TableRow.java │ │ │ │ ├── font/ │ │ │ │ │ ├── FontChooserHack.java │ │ │ │ │ └── JadxFontDialog.java │ │ │ │ ├── plugins/ │ │ │ │ │ ├── AvailablePluginNode.java │ │ │ │ │ ├── BasePluginListNode.java │ │ │ │ │ ├── InstallPluginDialog.java │ │ │ │ │ ├── InstalledPluginNode.java │ │ │ │ │ ├── LoadedPluginNode.java │ │ │ │ │ ├── PluginAction.java │ │ │ │ │ ├── PluginSettings.java │ │ │ │ │ ├── PluginSettingsGroup.java │ │ │ │ │ └── TitleNode.java │ │ │ │ └── shortcut/ │ │ │ │ ├── ShortcutEdit.java │ │ │ │ └── ShortcutsSettingsGroup.java │ │ │ ├── tree/ │ │ │ │ └── TreeExpansionService.java │ │ │ ├── treemodel/ │ │ │ │ ├── ApkSignatureNode.java │ │ │ │ ├── CodeNode.java │ │ │ │ ├── JClass.java │ │ │ │ ├── JEditableNode.java │ │ │ │ ├── JField.java │ │ │ │ ├── JInputFile.java │ │ │ │ ├── JInputFiles.java │ │ │ │ ├── JInputSmaliFile.java │ │ │ │ ├── JInputs.java │ │ │ │ ├── JLoadableNode.java │ │ │ │ ├── JMethod.java │ │ │ │ ├── JNode.java │ │ │ │ ├── JPackage.java │ │ │ │ ├── JRenameNode.java │ │ │ │ ├── JResSearchNode.java │ │ │ │ ├── JResource.java │ │ │ │ ├── JRoot.java │ │ │ │ ├── JSources.java │ │ │ │ ├── JSubResource.java │ │ │ │ ├── JVariable.java │ │ │ │ └── TextNode.java │ │ │ ├── ui/ │ │ │ │ ├── HeapUsageBar.java │ │ │ │ ├── JadxEventQueue.java │ │ │ │ ├── MainDropTarget.java │ │ │ │ ├── MainWindow.java │ │ │ │ ├── action/ │ │ │ │ │ ├── ActionCategory.java │ │ │ │ │ ├── ActionModel.java │ │ │ │ │ ├── CodeAreaAction.java │ │ │ │ │ ├── CommentSearchAction.java │ │ │ │ │ ├── FindUsageAction.java │ │ │ │ │ ├── FridaAction.java │ │ │ │ │ ├── GoToDeclarationAction.java │ │ │ │ │ ├── IShortcutAction.java │ │ │ │ │ ├── JNodeAction.java │ │ │ │ │ ├── JadxAutoCompletion.java │ │ │ │ │ ├── JadxGuiAction.java │ │ │ │ │ ├── JsonPrettifyAction.java │ │ │ │ │ ├── RenameAction.java │ │ │ │ │ ├── ViewCallGraphAction.java │ │ │ │ │ ├── ViewClassInheritanceGraphAction.java │ │ │ │ │ ├── ViewClassMethodGraphAction.java │ │ │ │ │ ├── ViewControlFlowGraphAction.java │ │ │ │ │ ├── ViewRawControlFlowGraphAction.java │ │ │ │ │ ├── ViewRegionControlFlowGraphAction.java │ │ │ │ │ └── XposedAction.kt │ │ │ │ ├── cellrenders/ │ │ │ │ │ ├── MethodRenderHelper.java │ │ │ │ │ ├── MethodsListRenderer.java │ │ │ │ │ └── PathHighlightTreeCellRenderer.java │ │ │ │ ├── codearea/ │ │ │ │ │ ├── AbstractCodeArea.java │ │ │ │ │ ├── AbstractCodeContentPanel.java │ │ │ │ │ ├── BinaryContentPanel.java │ │ │ │ │ ├── ClassCodeContentPanel.java │ │ │ │ │ ├── CodeArea.java │ │ │ │ │ ├── CodeContentPanel.java │ │ │ │ │ ├── CodeLinkGenerator.java │ │ │ │ │ ├── CodePanel.java │ │ │ │ │ ├── CommentAction.java │ │ │ │ │ ├── ConvertNumberAction.java │ │ │ │ │ ├── EditorViewState.java │ │ │ │ │ ├── JNodePopupBuilder.java │ │ │ │ │ ├── JNodePopupListener.java │ │ │ │ │ ├── JadxTokenMaker.java │ │ │ │ │ ├── MouseHoverHighlighter.java │ │ │ │ │ ├── SearchBar.java │ │ │ │ │ ├── SimpleTokenMaker.java │ │ │ │ │ ├── SmaliArea.java │ │ │ │ │ ├── SmaliFoldParser.java │ │ │ │ │ ├── SmaliTokenMaker.java │ │ │ │ │ ├── SourceLineFormatter.java │ │ │ │ │ ├── UsageDialogPlusAction.java │ │ │ │ │ ├── mode/ │ │ │ │ │ │ └── JCodeMode.java │ │ │ │ │ ├── sync/ │ │ │ │ │ │ ├── CodeMetadataRange.java │ │ │ │ │ │ ├── CodePanelSyncee.java │ │ │ │ │ │ ├── CodePanelSyncer.java │ │ │ │ │ │ ├── CodePanelSyncerAbstractFactory.java │ │ │ │ │ │ ├── CodeSyncHighlighter.java │ │ │ │ │ │ ├── DebugLineJavaSyncer.java │ │ │ │ │ │ ├── DebugLineSmaliSyncer.java │ │ │ │ │ │ ├── IToJavaSyncStrategy.java │ │ │ │ │ │ ├── IToSmaliSyncStrategy.java │ │ │ │ │ │ ├── InsnOffsetJavaSyncer.java │ │ │ │ │ │ ├── InsnOffsetSmaliSyncer.java │ │ │ │ │ │ ├── JavaSyncer.java │ │ │ │ │ │ ├── SmaliSyncer.java │ │ │ │ │ │ └── fallback/ │ │ │ │ │ │ ├── AbstractCodeAreaLine.java │ │ │ │ │ │ ├── AbstractCodeAreaToken.java │ │ │ │ │ │ ├── ClassDeclaration.java │ │ │ │ │ │ ├── FallbackSyncException.java │ │ │ │ │ │ ├── FallbackSyncer.java │ │ │ │ │ │ ├── IDeclaration.java │ │ │ │ │ │ ├── JavaCodeAreaLine.java │ │ │ │ │ │ ├── JavaCodeAreaToken.java │ │ │ │ │ │ ├── MethodDeclaration.java │ │ │ │ │ │ ├── SmaliAreaLine.java │ │ │ │ │ │ └── SmaliAreaToken.java │ │ │ │ │ └── theme/ │ │ │ │ │ ├── DynamicCodeAreaTheme.java │ │ │ │ │ ├── EditorThemeManager.java │ │ │ │ │ ├── FallbackEditorTheme.java │ │ │ │ │ ├── IEditorTheme.java │ │ │ │ │ ├── RSTABundledTheme.java │ │ │ │ │ ├── RSTAThemeXML.java │ │ │ │ │ └── ThemeIdAndName.java │ │ │ │ ├── dialog/ │ │ │ │ │ ├── ADBDialog.java │ │ │ │ │ ├── AboutDialog.java │ │ │ │ │ ├── CallGraphDialog.java │ │ │ │ │ ├── CharsetDialog.java │ │ │ │ │ ├── ClassInheritanceGraphDialog.java │ │ │ │ │ ├── ClassMethodGraphDialog.java │ │ │ │ │ ├── CommentDialog.java │ │ │ │ │ ├── CommonDialog.java │ │ │ │ │ ├── CommonSearchDialog.java │ │ │ │ │ ├── ControlFlowGraphDialog.java │ │ │ │ │ ├── ExcludePkgDialog.java │ │ │ │ │ ├── GotoAddressDialog.java │ │ │ │ │ ├── GraphDialog.java │ │ │ │ │ ├── LogViewerDialog.java │ │ │ │ │ ├── MethodsDialog.java │ │ │ │ │ ├── RenameDialog.java │ │ │ │ │ ├── SearchDialog.java │ │ │ │ │ ├── SetValueDialog.java │ │ │ │ │ ├── UsageDialog.java │ │ │ │ │ └── UsageDialogPlus.java │ │ │ │ ├── export/ │ │ │ │ │ ├── ExportProjectDialog.java │ │ │ │ │ └── ExportProjectProperties.java │ │ │ │ ├── filedialog/ │ │ │ │ │ ├── CustomFileChooser.java │ │ │ │ │ ├── CustomFileDialog.java │ │ │ │ │ ├── FileDialogWrapper.java │ │ │ │ │ ├── FileNameMultiExtensionFilter.java │ │ │ │ │ └── FileOpenMode.java │ │ │ │ ├── hexviewer/ │ │ │ │ │ ├── BinEdCodeAreaAssessor.java │ │ │ │ │ ├── HexEditorHeader.java │ │ │ │ │ ├── HexInspectorPanel.java │ │ │ │ │ ├── HexPreviewPanel.java │ │ │ │ │ ├── HexSearchBar.java │ │ │ │ │ └── search/ │ │ │ │ │ ├── BinarySearch.java │ │ │ │ │ ├── SearchCondition.java │ │ │ │ │ ├── SearchParameters.java │ │ │ │ │ └── service/ │ │ │ │ │ ├── BinarySearchService.java │ │ │ │ │ └── BinarySearchServiceImpl.java │ │ │ │ ├── menu/ │ │ │ │ │ ├── HiddenMenuItem.java │ │ │ │ │ ├── JadxMenu.java │ │ │ │ │ └── JadxMenuBar.java │ │ │ │ ├── panel/ │ │ │ │ │ ├── ContentPanel.java │ │ │ │ │ ├── FontPanel.java │ │ │ │ │ ├── HtmlPanel.java │ │ │ │ │ ├── IDebugController.java │ │ │ │ │ ├── IViewStateSupport.java │ │ │ │ │ ├── ImagePanel.java │ │ │ │ │ ├── IssuesPanel.java │ │ │ │ │ ├── JDebuggerPanel.java │ │ │ │ │ ├── LogcatPanel.java │ │ │ │ │ ├── ProgressPanel.java │ │ │ │ │ ├── SimpleCodePanel.java │ │ │ │ │ └── UndisplayedStringsPanel.java │ │ │ │ ├── popupmenu/ │ │ │ │ │ ├── JClassExportType.java │ │ │ │ │ ├── JClassPopupMenu.java │ │ │ │ │ ├── JPackagePopupMenu.java │ │ │ │ │ ├── JResourcePopupMenu.java │ │ │ │ │ ├── RecentProjectsMenuListener.java │ │ │ │ │ └── VarTreePopupMenu.java │ │ │ │ ├── startpage/ │ │ │ │ │ ├── RecentProjectItem.java │ │ │ │ │ ├── RecentProjectListCellRenderer.java │ │ │ │ │ ├── StartPageNode.java │ │ │ │ │ └── StartPagePanel.java │ │ │ │ ├── tab/ │ │ │ │ │ ├── EditorSyncManager.java │ │ │ │ │ ├── ITabStatesListener.java │ │ │ │ │ ├── LogTabStates.java │ │ │ │ │ ├── NavigationController.java │ │ │ │ │ ├── QuickTabsBaseNode.java │ │ │ │ │ ├── QuickTabsBookmarkParentNode.java │ │ │ │ │ ├── QuickTabsChildNode.java │ │ │ │ │ ├── QuickTabsOpenParentNode.java │ │ │ │ │ ├── QuickTabsParentNode.java │ │ │ │ │ ├── QuickTabsPinParentNode.java │ │ │ │ │ ├── QuickTabsTree.java │ │ │ │ │ ├── TabBlueprint.java │ │ │ │ │ ├── TabComponent.java │ │ │ │ │ ├── TabbedPane.java │ │ │ │ │ ├── TabsController.java │ │ │ │ │ └── dnd/ │ │ │ │ │ ├── TabDndController.java │ │ │ │ │ ├── TabDndGestureListener.java │ │ │ │ │ ├── TabDndGhostPane.java │ │ │ │ │ ├── TabDndGhostType.java │ │ │ │ │ ├── TabDndSourceListener.java │ │ │ │ │ ├── TabDndTargetListener.java │ │ │ │ │ └── TabDndTransferable.java │ │ │ │ └── treenodes/ │ │ │ │ ├── SummaryNode.java │ │ │ │ └── UndisplayedStringsNode.java │ │ │ ├── update/ │ │ │ │ └── JadxUpdate.kt │ │ │ └── utils/ │ │ │ ├── CacheObject.java │ │ │ ├── CaretPositionFix.java │ │ │ ├── CertificateManager.java │ │ │ ├── DefaultPopupMenuListener.java │ │ │ ├── DesktopEntryUtils.java │ │ │ ├── FontUtils.java │ │ │ ├── HexUtils.java │ │ │ ├── ILoadListener.java │ │ │ ├── IOUtils.java │ │ │ ├── Icons.java │ │ │ ├── IconsCache.java │ │ │ ├── JNodeCache.java │ │ │ ├── JumpManager.java │ │ │ ├── JumpPosition.java │ │ │ ├── LafManager.java │ │ │ ├── LangLocale.java │ │ │ ├── Link.java │ │ │ ├── NLS.java │ │ │ ├── ObjectPool.java │ │ │ ├── OverlayIcon.java │ │ │ ├── PathTypeAdapter.java │ │ │ ├── RectangleTypeAdapter.java │ │ │ ├── RelativePathTypeAdapter.java │ │ │ ├── SimpleListener.java │ │ │ ├── TextStandardActions.java │ │ │ ├── UiUtils.java │ │ │ ├── cache/ │ │ │ │ └── ValueCache.java │ │ │ ├── dbg/ │ │ │ │ └── UIWatchDog.java │ │ │ ├── files/ │ │ │ │ └── JadxFiles.java │ │ │ ├── fileswatcher/ │ │ │ │ ├── FilesWatcher.java │ │ │ │ └── LiveReloadWorker.java │ │ │ ├── layout/ │ │ │ │ └── WrapLayout.java │ │ │ ├── pkgs/ │ │ │ │ ├── JRenamePackage.java │ │ │ │ └── PackageHelper.java │ │ │ ├── plugins/ │ │ │ │ ├── CloseablePlugins.java │ │ │ │ ├── CollectPlugins.java │ │ │ │ ├── PluginWithOptions.java │ │ │ │ ├── SettingsGroupPluginWrap.java │ │ │ │ └── TreeInputsHelper.java │ │ │ ├── res/ │ │ │ │ └── ResTableHelper.java │ │ │ ├── rx/ │ │ │ │ ├── CustomDisposable.java │ │ │ │ ├── DebounceUpdate.java │ │ │ │ └── RxUtils.java │ │ │ ├── shortcut/ │ │ │ │ ├── Shortcut.java │ │ │ │ └── ShortcutsController.java │ │ │ ├── tools/ │ │ │ │ └── SyncNLSLines.java │ │ │ └── ui/ │ │ │ ├── ActionHandler.java │ │ │ ├── DocumentUpdateListener.java │ │ │ ├── FileOpenerHelper.java │ │ │ ├── MousePressedHandler.java │ │ │ ├── NodeLabel.java │ │ │ ├── SimpleMenuItem.java │ │ │ └── ZoomActions.java │ │ └── resources/ │ │ ├── files/ │ │ │ └── jadx-gui.desktop.tmpl │ │ └── i18n/ │ │ ├── Messages_de_DE.properties │ │ ├── Messages_en_US.properties │ │ ├── Messages_es_ES.properties │ │ ├── Messages_id_ID.properties │ │ ├── Messages_ko_KR.properties │ │ ├── Messages_pt_BR.properties │ │ ├── Messages_ru_RU.properties │ │ ├── Messages_zh_CN.properties │ │ └── Messages_zh_TW.properties │ └── test/ │ ├── java/ │ │ └── jadx/ │ │ └── gui/ │ │ ├── TestI18n.java │ │ ├── device/ │ │ │ └── debugger/ │ │ │ └── smali/ │ │ │ └── DbgSmaliTest.java │ │ ├── ui/ │ │ │ └── codearea/ │ │ │ └── ConvertNumberActionTest.java │ │ ├── update/ │ │ │ └── TestJadxUpdate.kt │ │ └── utils/ │ │ ├── CertificateManagerTest.java │ │ ├── JumpManagerTest.java │ │ ├── cache/ │ │ │ └── code/ │ │ │ ├── DiskCodeCacheTest.java │ │ │ └── disk/ │ │ │ └── adapters/ │ │ │ └── DataAdapterHelperTest.java │ │ └── pkgs/ │ │ └── TestJRenamePackage.java │ ├── resources/ │ │ ├── certificate-test/ │ │ │ ├── CERT.DSA │ │ │ ├── CERT.RSA │ │ │ └── EMPTY.txt │ │ └── logback-test.xml │ └── smali/ │ ├── params.smali │ └── switch.smali ├── jadx-plugins/ │ ├── jadx-aab-input/ │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── jadx/ │ │ │ └── plugins/ │ │ │ └── input/ │ │ │ └── aab/ │ │ │ ├── AabInputPlugin.java │ │ │ ├── ResTableProtoParserProvider.java │ │ │ ├── factories/ │ │ │ │ ├── ProtoAppDependenciesResContainerFactory.java │ │ │ │ ├── ProtoAssetsConfigResContainerFactory.java │ │ │ │ ├── ProtoBundleConfigResContainerFactory.java │ │ │ │ ├── ProtoNativeConfigResContainerFactory.java │ │ │ │ ├── ProtoTableResContainerFactory.java │ │ │ │ └── ProtoXmlResContainerFactory.java │ │ │ └── parsers/ │ │ │ ├── CommonProtoParser.java │ │ │ ├── ResTableProtoParser.java │ │ │ └── ResXmlProtoParser.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── services/ │ │ └── jadx.api.plugins.JadxPlugin │ ├── jadx-apkm-input/ │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── jadx/ │ │ │ └── plugins/ │ │ │ └── input/ │ │ │ └── apkm/ │ │ │ ├── ApkmCustomCodeInput.kt │ │ │ ├── ApkmCustomResourcesLoader.kt │ │ │ ├── ApkmInputPlugin.kt │ │ │ ├── ApkmManifest.kt │ │ │ └── ApkmUtils.kt │ │ └── resources/ │ │ └── META-INF/ │ │ └── services/ │ │ └── jadx.api.plugins.JadxPlugin │ ├── jadx-apks-input/ │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── jadx/ │ │ │ └── plugins/ │ │ │ └── input/ │ │ │ └── apks/ │ │ │ ├── ApksCustomCodeInput.kt │ │ │ ├── ApksCustomResourcesLoader.kt │ │ │ └── ApksInputPlugin.kt │ │ └── resources/ │ │ └── META-INF/ │ │ └── services/ │ │ └── jadx.api.plugins.JadxPlugin │ ├── jadx-dex-input/ │ │ ├── build.gradle.kts │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── jadx/ │ │ │ │ └── plugins/ │ │ │ │ └── input/ │ │ │ │ └── dex/ │ │ │ │ ├── DexException.java │ │ │ │ ├── DexFileLoader.java │ │ │ │ ├── DexInputOptions.java │ │ │ │ ├── DexInputPlugin.java │ │ │ │ ├── DexLoadResult.java │ │ │ │ ├── DexReader.java │ │ │ │ ├── insns/ │ │ │ │ │ ├── DexInsnData.java │ │ │ │ │ ├── DexInsnFormat.java │ │ │ │ │ ├── DexInsnInfo.java │ │ │ │ │ ├── DexInsnMnemonics.java │ │ │ │ │ ├── DexOpcodes.java │ │ │ │ │ └── payloads/ │ │ │ │ │ └── DexArrayPayload.java │ │ │ │ ├── sections/ │ │ │ │ │ ├── DexAnnotationsConvert.java │ │ │ │ │ ├── DexClassData.java │ │ │ │ │ ├── DexCodeReader.java │ │ │ │ │ ├── DexConsts.java │ │ │ │ │ ├── DexFieldData.java │ │ │ │ │ ├── DexHeader.java │ │ │ │ │ ├── DexHeaderV41.java │ │ │ │ │ ├── DexMethodData.java │ │ │ │ │ ├── DexMethodProto.java │ │ │ │ │ ├── DexMethodRef.java │ │ │ │ │ ├── SectionReader.java │ │ │ │ │ ├── annotations/ │ │ │ │ │ │ ├── AnnotationsParser.java │ │ │ │ │ │ ├── AnnotationsUtils.java │ │ │ │ │ │ └── EncodedValueParser.java │ │ │ │ │ └── debuginfo/ │ │ │ │ │ ├── DebugInfoParser.java │ │ │ │ │ └── DexLocalVar.java │ │ │ │ ├── smali/ │ │ │ │ │ ├── InsnFormatter.java │ │ │ │ │ ├── InsnFormatterInfo.java │ │ │ │ │ ├── SmaliCodeWriter.java │ │ │ │ │ ├── SmaliInsnFormat.java │ │ │ │ │ └── SmaliPrinter.java │ │ │ │ └── utils/ │ │ │ │ ├── DataReader.java │ │ │ │ ├── DexCheckSum.java │ │ │ │ ├── IDexData.java │ │ │ │ ├── Leb128.java │ │ │ │ ├── MUtf8.java │ │ │ │ ├── SimpleDexData.java │ │ │ │ └── SmaliUtils.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── jadx.api.plugins.JadxPlugin │ │ └── test/ │ │ ├── java/ │ │ │ └── jadx/ │ │ │ └── plugins/ │ │ │ └── input/ │ │ │ └── dex/ │ │ │ ├── DexInputPluginTest.java │ │ │ └── utils/ │ │ │ └── SmaliTestUtils.java │ │ └── resources/ │ │ └── samples/ │ │ ├── app-with-fake-dex.apk │ │ ├── hello.dex │ │ └── test.smali │ ├── jadx-input-api/ │ │ ├── README.md │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── jadx/ │ │ └── api/ │ │ └── plugins/ │ │ └── input/ │ │ ├── ICodeLoader.java │ │ ├── JadxCodeInput.java │ │ ├── data/ │ │ │ ├── AccessFlags.java │ │ │ ├── AccessFlagsScope.java │ │ │ ├── ICallSite.java │ │ │ ├── ICatch.java │ │ │ ├── IClassData.java │ │ │ ├── ICodeReader.java │ │ │ ├── IDebugInfo.java │ │ │ ├── IFieldData.java │ │ │ ├── IFieldRef.java │ │ │ ├── ILocalVar.java │ │ │ ├── IMethodData.java │ │ │ ├── IMethodHandle.java │ │ │ ├── IMethodProto.java │ │ │ ├── IMethodRef.java │ │ │ ├── IResourceData.java │ │ │ ├── ISeqConsumer.java │ │ │ ├── ITry.java │ │ │ ├── MethodHandleType.java │ │ │ ├── annotations/ │ │ │ │ ├── AnnotationVisibility.java │ │ │ │ ├── EncodedType.java │ │ │ │ ├── EncodedValue.java │ │ │ │ ├── IAnnotation.java │ │ │ │ └── JadxAnnotation.java │ │ │ ├── attributes/ │ │ │ │ ├── IJadxAttrType.java │ │ │ │ ├── IJadxAttribute.java │ │ │ │ ├── JadxAttrType.java │ │ │ │ ├── PinnedAttribute.java │ │ │ │ └── types/ │ │ │ │ ├── AnnotationDefaultAttr.java │ │ │ │ ├── AnnotationDefaultClassAttr.java │ │ │ │ ├── AnnotationMethodParamsAttr.java │ │ │ │ ├── AnnotationsAttr.java │ │ │ │ ├── ExceptionsAttr.java │ │ │ │ ├── InnerClassesAttr.java │ │ │ │ ├── InnerClsInfo.java │ │ │ │ ├── MethodParametersAttr.java │ │ │ │ ├── SignatureAttr.java │ │ │ │ └── SourceFileAttr.java │ │ │ └── impl/ │ │ │ ├── CallSite.java │ │ │ ├── CatchData.java │ │ │ ├── DebugInfo.java │ │ │ ├── EmptyCodeLoader.java │ │ │ ├── FieldRefHandle.java │ │ │ ├── InputUtils.java │ │ │ ├── JadxFieldRef.java │ │ │ ├── ListConsumer.java │ │ │ ├── MergeCodeLoader.java │ │ │ ├── MethodRefHandle.java │ │ │ └── TryData.java │ │ └── insns/ │ │ ├── InsnData.java │ │ ├── InsnIndexType.java │ │ ├── Opcode.java │ │ └── custom/ │ │ ├── IArrayPayload.java │ │ ├── ICustomPayload.java │ │ ├── ISwitchPayload.java │ │ └── impl/ │ │ └── SwitchPayload.java │ ├── jadx-java-convert/ │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── jadx/ │ │ │ └── plugins/ │ │ │ └── input/ │ │ │ └── javaconvert/ │ │ │ ├── AsmUtils.java │ │ │ ├── ConvertResult.java │ │ │ ├── D8Converter.java │ │ │ ├── DxConverter.java │ │ │ ├── JavaConvertLoader.java │ │ │ ├── JavaConvertOptions.java │ │ │ └── JavaConvertPlugin.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── services/ │ │ └── jadx.api.plugins.JadxPlugin │ ├── jadx-java-input/ │ │ ├── build.gradle.kts │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── jadx/ │ │ │ │ └── plugins/ │ │ │ │ └── input/ │ │ │ │ └── java/ │ │ │ │ ├── JavaClassReader.java │ │ │ │ ├── JavaInputLoader.java │ │ │ │ ├── JavaInputPlugin.java │ │ │ │ ├── JavaLoadResult.java │ │ │ │ ├── data/ │ │ │ │ │ ├── ClassOffsets.java │ │ │ │ │ ├── ConstPoolReader.java │ │ │ │ │ ├── ConstantType.java │ │ │ │ │ ├── DataReader.java │ │ │ │ │ ├── JavaClassData.java │ │ │ │ │ ├── JavaFieldData.java │ │ │ │ │ ├── JavaMethodData.java │ │ │ │ │ ├── JavaMethodProto.java │ │ │ │ │ ├── JavaMethodRef.java │ │ │ │ │ ├── attributes/ │ │ │ │ │ │ ├── AttributesReader.java │ │ │ │ │ │ ├── EncodedValueReader.java │ │ │ │ │ │ ├── IJavaAttribute.java │ │ │ │ │ │ ├── IJavaAttributeReader.java │ │ │ │ │ │ ├── JavaAttrStorage.java │ │ │ │ │ │ ├── JavaAttrType.java │ │ │ │ │ │ ├── debuginfo/ │ │ │ │ │ │ │ ├── JavaLocalVar.java │ │ │ │ │ │ │ ├── LineNumberTableAttr.java │ │ │ │ │ │ │ ├── LocalVarTypesAttr.java │ │ │ │ │ │ │ └── LocalVarsAttr.java │ │ │ │ │ │ ├── stack/ │ │ │ │ │ │ │ ├── StackFrame.java │ │ │ │ │ │ │ ├── StackFrameType.java │ │ │ │ │ │ │ ├── StackMapTableReader.java │ │ │ │ │ │ │ ├── StackValueType.java │ │ │ │ │ │ │ └── TypeInfoReader.java │ │ │ │ │ │ └── types/ │ │ │ │ │ │ ├── CodeAttr.java │ │ │ │ │ │ ├── ConstValueAttr.java │ │ │ │ │ │ ├── IgnoredAttr.java │ │ │ │ │ │ ├── JavaAnnotationDefaultAttr.java │ │ │ │ │ │ ├── JavaAnnotationsAttr.java │ │ │ │ │ │ ├── JavaBootstrapMethodsAttr.java │ │ │ │ │ │ ├── JavaExceptionsAttr.java │ │ │ │ │ │ ├── JavaInnerClsAttr.java │ │ │ │ │ │ ├── JavaMethodParametersAttr.java │ │ │ │ │ │ ├── JavaParamAnnsAttr.java │ │ │ │ │ │ ├── JavaSignatureAttr.java │ │ │ │ │ │ ├── JavaSourceFileAttr.java │ │ │ │ │ │ ├── StackMapTableAttr.java │ │ │ │ │ │ └── data/ │ │ │ │ │ │ └── RawBootstrapMethod.java │ │ │ │ │ └── code/ │ │ │ │ │ ├── ArrayType.java │ │ │ │ │ ├── CodeDecodeState.java │ │ │ │ │ ├── JavaCodeReader.java │ │ │ │ │ ├── JavaInsnData.java │ │ │ │ │ ├── JavaInsnInfo.java │ │ │ │ │ ├── JavaInsnsRegister.java │ │ │ │ │ ├── StackState.java │ │ │ │ │ ├── decoders/ │ │ │ │ │ │ ├── IJavaInsnDecoder.java │ │ │ │ │ │ ├── InvokeDecoder.java │ │ │ │ │ │ ├── LoadConstDecoder.java │ │ │ │ │ │ ├── LookupSwitchDecoder.java │ │ │ │ │ │ ├── TableSwitchDecoder.java │ │ │ │ │ │ └── WideDecoder.java │ │ │ │ │ └── trycatch/ │ │ │ │ │ ├── JavaSingleCatch.java │ │ │ │ │ └── JavaTryData.java │ │ │ │ └── utils/ │ │ │ │ ├── DescriptorParser.java │ │ │ │ ├── DisasmUtils.java │ │ │ │ ├── JavaClassParseException.java │ │ │ │ └── ModifiedUTF8Decoder.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── jadx.api.plugins.JadxPlugin │ │ └── test/ │ │ └── java/ │ │ └── jadx/ │ │ └── plugins/ │ │ └── input/ │ │ └── java/ │ │ ├── CustomLoadTest.java │ │ └── utils/ │ │ ├── DescriptorParserTest.java │ │ └── ModifiedUTF8DecoderTest.java │ ├── jadx-kotlin-metadata/ │ │ ├── build.gradle.kts │ │ └── src/ │ │ ├── main/ │ │ │ ├── kotlin/ │ │ │ │ └── jadx/ │ │ │ │ └── plugins/ │ │ │ │ └── kotlin/ │ │ │ │ └── metadata/ │ │ │ │ ├── KotlinMetadataOptions.kt │ │ │ │ ├── KotlinMetadataPlugin.kt │ │ │ │ ├── model/ │ │ │ │ │ ├── KotlinMetadataConsts.kt │ │ │ │ │ └── KotlinRenameResults.kt │ │ │ │ ├── pass/ │ │ │ │ │ ├── KotlinMetadataDecompilePass.kt │ │ │ │ │ └── KotlinMetadataPreparePass.kt │ │ │ │ └── utils/ │ │ │ │ ├── KmClassWrapper.kt │ │ │ │ ├── KmExt.kt │ │ │ │ ├── KotlinMetadataExt.kt │ │ │ │ ├── KotlinMetadataUtils.kt │ │ │ │ ├── KotlinUtils.kt │ │ │ │ ├── LogExt.kt │ │ │ │ └── ToStringParser.kt │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── jadx.api.plugins.JadxPlugin │ │ └── test/ │ │ ├── kotlin/ │ │ │ ├── TestJavaParser.kt │ │ │ └── TestKotlinMetadata.kt │ │ └── smali/ │ │ └── deobf/ │ │ └── TestKotlinMetadata/ │ │ ├── a$b.smali │ │ └── a.smali │ ├── jadx-kotlin-source-debug-extension/ │ │ ├── build.gradle.kts │ │ └── src/ │ │ ├── main/ │ │ │ ├── kotlin/ │ │ │ │ └── jadx/ │ │ │ │ └── plugins/ │ │ │ │ └── kotlin/ │ │ │ │ └── smap/ │ │ │ │ ├── KotlinSmapOptions.kt │ │ │ │ ├── KotlinSmapPlugin.kt │ │ │ │ ├── model/ │ │ │ │ │ ├── ClassAliasRename.kt │ │ │ │ │ ├── Constants.kt │ │ │ │ │ ├── SMAP.kt │ │ │ │ │ └── SourceInfo.kt │ │ │ │ ├── pass/ │ │ │ │ │ └── KotlinSourceDebugExtensionPass.kt │ │ │ │ └── utils/ │ │ │ │ ├── Extensions.kt │ │ │ │ ├── KotlinSmapUtils.kt │ │ │ │ └── SMAPParser.kt │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── jadx.api.plugins.JadxPlugin │ │ └── test/ │ │ ├── kotlin/ │ │ │ └── TestSourceDebugExtension.kt │ │ └── smali/ │ │ └── deobf/ │ │ └── TestKotlinSourceDebugExtension/ │ │ └── C6.smali │ ├── jadx-raung-input/ │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── jadx/ │ │ │ └── plugins/ │ │ │ └── input/ │ │ │ └── raung/ │ │ │ ├── RaungConvert.java │ │ │ └── RaungInputPlugin.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── services/ │ │ └── jadx.api.plugins.JadxPlugin │ ├── jadx-rename-mappings/ │ │ ├── build.gradle.kts │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── jadx/ │ │ │ │ └── plugins/ │ │ │ │ └── mappings/ │ │ │ │ ├── RenameMappingsData.java │ │ │ │ ├── RenameMappingsOptions.java │ │ │ │ ├── RenameMappingsPlugin.java │ │ │ │ ├── load/ │ │ │ │ │ ├── ApplyMappingsPass.java │ │ │ │ │ ├── CodeMappingsPass.java │ │ │ │ │ └── LoadMappingsPass.java │ │ │ │ ├── save/ │ │ │ │ │ └── MappingExporter.java │ │ │ │ └── utils/ │ │ │ │ ├── DalvikToJavaBytecodeUtils.java │ │ │ │ └── VariablesUtils.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── services/ │ │ │ └── jadx.api.plugins.JadxPlugin │ │ └── test/ │ │ ├── java/ │ │ │ └── jadx/ │ │ │ └── plugins/ │ │ │ └── mappings/ │ │ │ ├── BaseRenameMappingsTest.java │ │ │ └── TestInnerClassRename.java │ │ └── resources/ │ │ ├── inner-cls-rename/ │ │ │ ├── base.smali │ │ │ ├── enigma.mapping │ │ │ └── inner.smali │ │ └── logback-test.xml │ ├── jadx-smali-input/ │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── jadx/ │ │ │ └── plugins/ │ │ │ └── input/ │ │ │ └── smali/ │ │ │ ├── SmaliConvert.java │ │ │ ├── SmaliInputOptions.java │ │ │ ├── SmaliInputPlugin.java │ │ │ └── SmaliUtils.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── services/ │ │ └── jadx.api.plugins.JadxPlugin │ └── jadx-xapk-input/ │ ├── build.gradle.kts │ └── src/ │ └── main/ │ ├── java/ │ │ └── jadx/ │ │ └── plugins/ │ │ └── input/ │ │ └── xapk/ │ │ ├── XApkCustomInput.java │ │ ├── XApkInputPlugin.java │ │ ├── XApkLoader.java │ │ └── data/ │ │ ├── SplitApk.java │ │ ├── XApkData.java │ │ └── XApkManifest.java │ └── resources/ │ └── META-INF/ │ └── services/ │ └── jadx.api.plugins.JadxPlugin ├── jadx-plugins-tools/ │ ├── build.gradle.kts │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── jadx/ │ │ └── plugins/ │ │ └── tools/ │ │ ├── JadxExternalPluginsLoader.java │ │ ├── JadxPluginsList.java │ │ ├── JadxPluginsTools.java │ │ ├── data/ │ │ │ ├── JadxInstalledPlugins.java │ │ │ ├── JadxPluginListCache.java │ │ │ ├── JadxPluginListEntry.java │ │ │ ├── JadxPluginMetadata.java │ │ │ └── JadxPluginUpdate.java │ │ ├── resolvers/ │ │ │ ├── IJadxPluginResolver.java │ │ │ ├── README.md │ │ │ ├── ResolversRegistry.java │ │ │ ├── file/ │ │ │ │ └── LocalFileResolver.java │ │ │ └── github/ │ │ │ ├── GithubReleaseResolver.java │ │ │ ├── GithubTools.java │ │ │ ├── LocationInfo.java │ │ │ └── data/ │ │ │ ├── Asset.java │ │ │ └── Release.java │ │ └── utils/ │ │ ├── PluginFiles.java │ │ └── PluginUtils.java │ └── test/ │ ├── java/ │ │ └── jadx/ │ │ └── plugins/ │ │ └── tools/ │ │ └── resolvers/ │ │ └── github/ │ │ └── GithubToolsTest.java │ └── resources/ │ └── github/ │ └── plugins-list-good.json └── settings.gradle.kts