├── .classpath
├── .gitattributes
├── .gitignore
├── .project
├── .settings
└── org.eclipse.jdt.core.prefs
├── AndroidManifest.xml
├── LICENSE
├── README.md
├── XposedBridgeApi-54.jar
├── assets
└── xposed_init
├── ic_launcher-web.png
├── lib
├── .gitignore
└── full_framework_15.jar
├── libs
├── android-support-v4.jar
├── antlr-3.5.2-complete.jar
├── armeabi
│ ├── libdvmnative.so
│ └── libluajava.so
├── commons-cli-1.2.jar
└── guava-17.0.jar
├── lint.xml
├── proguard-project.txt
├── project.properties
├── res
├── drawable-hdpi
│ ├── ic_launcher.png
│ └── logo.png
├── drawable-mdpi
│ └── ic_launcher.png
├── drawable-xhdpi
│ └── ic_launcher.png
├── drawable-xxhdpi
│ └── ic_launcher.png
├── layout
│ └── activity_main.xml
├── menu
│ └── main.xml
├── values-sw600dp
│ └── dimens.xml
├── values-sw720dp-land
│ └── dimens.xml
├── values-v11
│ └── styles.xml
├── values-v14
│ └── styles.xml
└── values
│ ├── dimens.xml
│ ├── strings.xml
│ └── styles.xml
└── src
├── com
└── android
│ └── reverse
│ ├── apimonitor
│ ├── AbstractBahaviorHookCallBack.java
│ ├── AccountManagerHook.java
│ ├── ActivityManagerHook.java
│ ├── ActivityThreadHook.java
│ ├── AlarmManagerHook.java
│ ├── ApiMonitorHook.java
│ ├── ApiMonitorHookManager.java
│ ├── AudioRecordHook.java
│ ├── CameraHook.java
│ ├── ConnectivityManagerHook.java
│ ├── ContentResolverHook.java
│ ├── ContextImplHook.java
│ ├── MediaRecorderHook.java
│ ├── NetWorkHook.java
│ ├── NotificationManagerHook.java
│ ├── PackageManagerHook.java
│ ├── ProcessBuilderHook.java
│ ├── RuntimeHook.java
│ ├── SmsManagerHook.java
│ └── TelephonyManagerHook.java
│ ├── client
│ └── MainActivity.java
│ ├── collecter
│ ├── DexFileInfo.java
│ ├── DexFileInfoCollecter.java
│ ├── HeapDump.java
│ ├── LuaScriptInvoker.java
│ ├── MemDump.java
│ ├── ModuleContext.java
│ └── NativeHookCollecter.java
│ ├── hook
│ ├── HookHelperFacktory.java
│ ├── HookHelperInterface.java
│ ├── HookParam.java
│ ├── MethodHookCallBack.java
│ └── XposeHookHelperImpl.java
│ ├── mod
│ ├── CommandBroadcastReceiver.java
│ ├── PackageMetaInfo.java
│ └── ReverseXposedModule.java
│ ├── request
│ ├── BackSmaliCommandHandler.java
│ ├── CommandHandler.java
│ ├── CommandHandlerParser.java
│ ├── DumpClassCommandHandler.java
│ ├── DumpDexFileCommandHandler.java
│ ├── DumpDexInfoCommandHandler.java
│ ├── DumpHeapCommandHandler.java
│ ├── DumpMemCommandHandler.java
│ ├── InvokeScriptCommandHandler.java
│ └── NativeHookInfoHandler.java
│ ├── smali
│ ├── DexFileBuilder.java
│ ├── DexFileHeadersPointer.java
│ └── MemoryBackSmali.java
│ └── util
│ ├── Constant.java
│ ├── JsonWriter.java
│ ├── Logger.java
│ ├── NativeFunction.java
│ ├── RefInvoke.java
│ └── Utility.java
├── ds
└── tree
│ ├── DuplicateKeyException.java
│ ├── RadixTree.java
│ ├── RadixTreeImpl.java
│ ├── RadixTreeNode.java
│ ├── Visitor.java
│ └── VisitorImpl.java
├── javax
└── annotation
│ ├── CheckForNull.java
│ ├── CheckForSigned.java
│ ├── CheckReturnValue.java
│ ├── Detainted.java
│ ├── MatchesPattern.java
│ ├── Nonnegative.java
│ ├── Nonnull.java
│ ├── Nullable.java
│ ├── OverridingMethodsMustInvokeSuper.java
│ ├── ParametersAreNonnullByDefault.java
│ ├── ParametersAreNullableByDefault.java
│ ├── PropertyKey.java
│ ├── RegEx.java
│ ├── Signed.java
│ ├── Syntax.java
│ ├── Tainted.java
│ ├── Untainted.java
│ ├── WillClose.java
│ ├── WillCloseWhenClosed.java
│ ├── WillNotClose.java
│ ├── concurrent
│ ├── GuardedBy.java
│ ├── Immutable.java
│ ├── NotThreadSafe.java
│ └── ThreadSafe.java
│ └── meta
│ ├── Exclusive.java
│ ├── Exhaustive.java
│ ├── TypeQualifier.java
│ ├── TypeQualifierDefault.java
│ ├── TypeQualifierNickname.java
│ ├── TypeQualifierValidator.java
│ └── When.java
└── org
├── jf
├── baksmali
│ ├── Adaptors
│ │ ├── AnnotationFormatter.java
│ │ ├── BlankMethodItem.java
│ │ ├── CatchMethodItem.java
│ │ ├── ClassDefinition.java
│ │ ├── CommentMethodItem.java
│ │ ├── CommentedOutMethodItem.java
│ │ ├── CommentingIndentingWriter.java
│ │ ├── Debug
│ │ │ ├── BeginEpilogueMethodItem.java
│ │ │ ├── DebugMethodItem.java
│ │ │ ├── EndLocalMethodItem.java
│ │ │ ├── EndPrologueMethodItem.java
│ │ │ ├── LineNumberMethodItem.java
│ │ │ ├── LocalFormatter.java
│ │ │ ├── RestartLocalMethodItem.java
│ │ │ ├── SetSourceFileMethodItem.java
│ │ │ └── StartLocalMethodItem.java
│ │ ├── EncodedValue
│ │ │ ├── AnnotationEncodedValueAdaptor.java
│ │ │ ├── ArrayEncodedValueAdaptor.java
│ │ │ └── EncodedValueAdaptor.java
│ │ ├── EndTryLabelMethodItem.java
│ │ ├── FieldDefinition.java
│ │ ├── Format
│ │ │ ├── ArrayDataMethodItem.java
│ │ │ ├── InstructionMethodItem.java
│ │ │ ├── InstructionMethodItemFactory.java
│ │ │ ├── OffsetInstructionFormatMethodItem.java
│ │ │ ├── PackedSwitchMethodItem.java
│ │ │ ├── SparseSwitchMethodItem.java
│ │ │ └── UnresolvedOdexInstructionMethodItem.java
│ │ ├── LabelMethodItem.java
│ │ ├── MethodDefinition.java
│ │ ├── MethodItem.java
│ │ ├── PostInstructionRegisterInfoMethodItem.java
│ │ ├── PreInstructionRegisterInfoMethodItem.java
│ │ ├── ReferenceFormatter.java
│ │ ├── RegisterFormatter.java
│ │ └── SyntheticAccessCommentMethodItem.java
│ ├── Renderers
│ │ ├── BooleanRenderer.java
│ │ ├── ByteRenderer.java
│ │ ├── CharRenderer.java
│ │ ├── DoubleRenderer.java
│ │ ├── FloatRenderer.java
│ │ ├── IntegerRenderer.java
│ │ ├── LongRenderer.java
│ │ └── ShortRenderer.java
│ ├── baksmali.java
│ ├── baksmaliOptions.java
│ ├── dump.java
│ └── main.java
├── dexlib2
│ ├── AccessFlags.java
│ ├── AnnotationVisibility.java
│ ├── DebugItemType.java
│ ├── DexFileFactory.java
│ ├── Format.java
│ ├── Opcode.java
│ ├── Opcodes.java
│ ├── ReferenceType.java
│ ├── ValueType.java
│ ├── VerificationError.java
│ ├── analysis
│ │ ├── AnalysisException.java
│ │ ├── AnalyzedInstruction.java
│ │ ├── ArrayProto.java
│ │ ├── ClassPath.java
│ │ ├── ClassProto.java
│ │ ├── CustomInlineMethodResolver.java
│ │ ├── DumpFields.java
│ │ ├── DumpVtables.java
│ │ ├── InlineMethodResolver.java
│ │ ├── MethodAnalyzer.java
│ │ ├── OdexedFieldInstructionMapper.java
│ │ ├── PrimitiveProto.java
│ │ ├── RegisterType.java
│ │ ├── TypeProto.java
│ │ ├── UnknownClassProto.java
│ │ ├── UnresolvedClassException.java
│ │ ├── UnresolvedOdexInstruction.java
│ │ ├── reflection
│ │ │ ├── ReflectionClassDef.java
│ │ │ ├── ReflectionConstructor.java
│ │ │ ├── ReflectionField.java
│ │ │ ├── ReflectionMethod.java
│ │ │ └── util
│ │ │ │ └── ReflectionUtils.java
│ │ └── util
│ │ │ └── TypeProtoUtils.java
│ ├── base
│ │ ├── BaseAnnotation.java
│ │ ├── BaseAnnotationElement.java
│ │ ├── BaseExceptionHandler.java
│ │ ├── BaseMethodParameter.java
│ │ ├── BaseTryBlock.java
│ │ ├── reference
│ │ │ ├── BaseFieldReference.java
│ │ │ ├── BaseMethodReference.java
│ │ │ ├── BaseStringReference.java
│ │ │ └── BaseTypeReference.java
│ │ └── value
│ │ │ ├── BaseAnnotationEncodedValue.java
│ │ │ ├── BaseArrayEncodedValue.java
│ │ │ ├── BaseBooleanEncodedValue.java
│ │ │ ├── BaseByteEncodedValue.java
│ │ │ ├── BaseCharEncodedValue.java
│ │ │ ├── BaseDoubleEncodedValue.java
│ │ │ ├── BaseEnumEncodedValue.java
│ │ │ ├── BaseFieldEncodedValue.java
│ │ │ ├── BaseFloatEncodedValue.java
│ │ │ ├── BaseIntEncodedValue.java
│ │ │ ├── BaseLongEncodedValue.java
│ │ │ ├── BaseMethodEncodedValue.java
│ │ │ ├── BaseNullEncodedValue.java
│ │ │ ├── BaseShortEncodedValue.java
│ │ │ ├── BaseStringEncodedValue.java
│ │ │ └── BaseTypeEncodedValue.java
│ ├── builder
│ │ ├── BuilderDebugItem.java
│ │ ├── BuilderExceptionHandler.java
│ │ ├── BuilderInstruction.java
│ │ ├── BuilderOffsetInstruction.java
│ │ ├── BuilderSwitchPayload.java
│ │ ├── BuilderTryBlock.java
│ │ ├── Label.java
│ │ ├── MethodImplementationBuilder.java
│ │ ├── MethodLocation.java
│ │ ├── MutableMethodImplementation.java
│ │ ├── SwitchLabelElement.java
│ │ ├── debug
│ │ │ ├── BuilderEndLocal.java
│ │ │ ├── BuilderEpilogueBegin.java
│ │ │ ├── BuilderLineNumber.java
│ │ │ ├── BuilderPrologueEnd.java
│ │ │ ├── BuilderRestartLocal.java
│ │ │ ├── BuilderSetSourceFile.java
│ │ │ └── BuilderStartLocal.java
│ │ └── instruction
│ │ │ ├── BuilderArrayPayload.java
│ │ │ ├── BuilderInstruction10t.java
│ │ │ ├── BuilderInstruction10x.java
│ │ │ ├── BuilderInstruction11n.java
│ │ │ ├── BuilderInstruction11x.java
│ │ │ ├── BuilderInstruction12x.java
│ │ │ ├── BuilderInstruction20bc.java
│ │ │ ├── BuilderInstruction20t.java
│ │ │ ├── BuilderInstruction21c.java
│ │ │ ├── BuilderInstruction21ih.java
│ │ │ ├── BuilderInstruction21lh.java
│ │ │ ├── BuilderInstruction21s.java
│ │ │ ├── BuilderInstruction21t.java
│ │ │ ├── BuilderInstruction22b.java
│ │ │ ├── BuilderInstruction22c.java
│ │ │ ├── BuilderInstruction22s.java
│ │ │ ├── BuilderInstruction22t.java
│ │ │ ├── BuilderInstruction22x.java
│ │ │ ├── BuilderInstruction23x.java
│ │ │ ├── BuilderInstruction30t.java
│ │ │ ├── BuilderInstruction31c.java
│ │ │ ├── BuilderInstruction31i.java
│ │ │ ├── BuilderInstruction31t.java
│ │ │ ├── BuilderInstruction32x.java
│ │ │ ├── BuilderInstruction35c.java
│ │ │ ├── BuilderInstruction3rc.java
│ │ │ ├── BuilderInstruction51l.java
│ │ │ ├── BuilderPackedSwitchPayload.java
│ │ │ ├── BuilderSparseSwitchPayload.java
│ │ │ └── BuilderSwitchElement.java
│ ├── dexbacked
│ │ ├── BaseDexBuffer.java
│ │ ├── BaseDexReader.java
│ │ ├── DexBackedAnnotation.java
│ │ ├── DexBackedAnnotationElement.java
│ │ ├── DexBackedCatchAllExceptionHandler.java
│ │ ├── DexBackedClassDef.java
│ │ ├── DexBackedDexFile.java
│ │ ├── DexBackedExceptionHandler.java
│ │ ├── DexBackedField.java
│ │ ├── DexBackedMethod.java
│ │ ├── DexBackedMethodImplementation.java
│ │ ├── DexBackedOdexFile.java
│ │ ├── DexBackedTryBlock.java
│ │ ├── DexBackedTypedExceptionHandler.java
│ │ ├── DexReader.java
│ │ ├── MemoryDexFileItemPointer.java
│ │ ├── MemoryReader.java
│ │ ├── instruction
│ │ │ ├── DexBackedArrayPayload.java
│ │ │ ├── DexBackedInstruction.java
│ │ │ ├── DexBackedInstruction10t.java
│ │ │ ├── DexBackedInstruction10x.java
│ │ │ ├── DexBackedInstruction11n.java
│ │ │ ├── DexBackedInstruction11x.java
│ │ │ ├── DexBackedInstruction12x.java
│ │ │ ├── DexBackedInstruction20bc.java
│ │ │ ├── DexBackedInstruction20t.java
│ │ │ ├── DexBackedInstruction21c.java
│ │ │ ├── DexBackedInstruction21ih.java
│ │ │ ├── DexBackedInstruction21lh.java
│ │ │ ├── DexBackedInstruction21s.java
│ │ │ ├── DexBackedInstruction21t.java
│ │ │ ├── DexBackedInstruction22b.java
│ │ │ ├── DexBackedInstruction22c.java
│ │ │ ├── DexBackedInstruction22cs.java
│ │ │ ├── DexBackedInstruction22s.java
│ │ │ ├── DexBackedInstruction22t.java
│ │ │ ├── DexBackedInstruction22x.java
│ │ │ ├── DexBackedInstruction23x.java
│ │ │ ├── DexBackedInstruction30t.java
│ │ │ ├── DexBackedInstruction31c.java
│ │ │ ├── DexBackedInstruction31i.java
│ │ │ ├── DexBackedInstruction31t.java
│ │ │ ├── DexBackedInstruction32x.java
│ │ │ ├── DexBackedInstruction35c.java
│ │ │ ├── DexBackedInstruction35mi.java
│ │ │ ├── DexBackedInstruction35ms.java
│ │ │ ├── DexBackedInstruction3rc.java
│ │ │ ├── DexBackedInstruction3rmi.java
│ │ │ ├── DexBackedInstruction3rms.java
│ │ │ ├── DexBackedInstruction51l.java
│ │ │ ├── DexBackedPackedSwitchPayload.java
│ │ │ ├── DexBackedSparseSwitchPayload.java
│ │ │ └── DexBackedUnknownInstruction.java
│ │ ├── raw
│ │ │ ├── AnnotationDirectoryItem.java
│ │ │ ├── AnnotationItem.java
│ │ │ ├── AnnotationSetItem.java
│ │ │ ├── AnnotationSetRefList.java
│ │ │ ├── ClassDataItem.java
│ │ │ ├── ClassDefItem.java
│ │ │ ├── CodeItem.java
│ │ │ ├── DebugInfoItem.java
│ │ │ ├── EncodedArrayItem.java
│ │ │ ├── EncodedValue.java
│ │ │ ├── FieldIdItem.java
│ │ │ ├── HeaderItem.java
│ │ │ ├── ItemType.java
│ │ │ ├── MapItem.java
│ │ │ ├── MethodIdItem.java
│ │ │ ├── OdexHeaderItem.java
│ │ │ ├── ProtoIdItem.java
│ │ │ ├── RawDexFile.java
│ │ │ ├── SectionAnnotator.java
│ │ │ ├── StringDataItem.java
│ │ │ ├── StringIdItem.java
│ │ │ ├── TypeIdItem.java
│ │ │ ├── TypeListItem.java
│ │ │ └── util
│ │ │ │ └── DexAnnotator.java
│ │ ├── reference
│ │ │ ├── DexBackedFieldReference.java
│ │ │ ├── DexBackedMethodReference.java
│ │ │ ├── DexBackedReference.java
│ │ │ ├── DexBackedStringReference.java
│ │ │ └── DexBackedTypeReference.java
│ │ ├── util
│ │ │ ├── AnnotationsDirectory.java
│ │ │ ├── DebugInfo.java
│ │ │ ├── FixedSizeList.java
│ │ │ ├── FixedSizeSet.java
│ │ │ ├── ParameterIterator.java
│ │ │ ├── StaticInitialValueIterator.java
│ │ │ ├── VariableSizeCollection.java
│ │ │ ├── VariableSizeIterator.java
│ │ │ ├── VariableSizeList.java
│ │ │ ├── VariableSizeListIterator.java
│ │ │ ├── VariableSizeLookaheadIterator.java
│ │ │ └── VariableSizeSet.java
│ │ └── value
│ │ │ ├── DexBackedAnnotationEncodedValue.java
│ │ │ ├── DexBackedArrayEncodedValue.java
│ │ │ ├── DexBackedEncodedValue.java
│ │ │ ├── DexBackedEnumEncodedValue.java
│ │ │ ├── DexBackedFieldEncodedValue.java
│ │ │ ├── DexBackedMethodEncodedValue.java
│ │ │ ├── DexBackedStringEncodedValue.java
│ │ │ └── DexBackedTypeEncodedValue.java
│ ├── iface
│ │ ├── Annotation.java
│ │ ├── AnnotationElement.java
│ │ ├── BasicAnnotation.java
│ │ ├── ClassDef.java
│ │ ├── DexFile.java
│ │ ├── ExceptionHandler.java
│ │ ├── Field.java
│ │ ├── Method.java
│ │ ├── MethodImplementation.java
│ │ ├── MethodParameter.java
│ │ ├── TryBlock.java
│ │ ├── debug
│ │ │ ├── DebugItem.java
│ │ │ ├── EndLocal.java
│ │ │ ├── EpilogueBegin.java
│ │ │ ├── LineNumber.java
│ │ │ ├── LocalInfo.java
│ │ │ ├── PrologueEnd.java
│ │ │ ├── RestartLocal.java
│ │ │ ├── SetSourceFile.java
│ │ │ └── StartLocal.java
│ │ ├── instruction
│ │ │ ├── FieldOffsetInstruction.java
│ │ │ ├── FiveRegisterInstruction.java
│ │ │ ├── HatLiteralInstruction.java
│ │ │ ├── InlineIndexInstruction.java
│ │ │ ├── Instruction.java
│ │ │ ├── LongHatLiteralInstruction.java
│ │ │ ├── NarrowHatLiteralInstruction.java
│ │ │ ├── NarrowLiteralInstruction.java
│ │ │ ├── OffsetInstruction.java
│ │ │ ├── OneRegisterInstruction.java
│ │ │ ├── PayloadInstruction.java
│ │ │ ├── ReferenceInstruction.java
│ │ │ ├── RegisterRangeInstruction.java
│ │ │ ├── SwitchElement.java
│ │ │ ├── SwitchPayload.java
│ │ │ ├── ThreeRegisterInstruction.java
│ │ │ ├── TwoRegisterInstruction.java
│ │ │ ├── VariableRegisterInstruction.java
│ │ │ ├── VerificationErrorInstruction.java
│ │ │ ├── VtableIndexInstruction.java
│ │ │ ├── WideLiteralInstruction.java
│ │ │ └── formats
│ │ │ │ ├── ArrayPayload.java
│ │ │ │ ├── Instruction10t.java
│ │ │ │ ├── Instruction10x.java
│ │ │ │ ├── Instruction11n.java
│ │ │ │ ├── Instruction11x.java
│ │ │ │ ├── Instruction12x.java
│ │ │ │ ├── Instruction20bc.java
│ │ │ │ ├── Instruction20t.java
│ │ │ │ ├── Instruction21c.java
│ │ │ │ ├── Instruction21ih.java
│ │ │ │ ├── Instruction21lh.java
│ │ │ │ ├── Instruction21s.java
│ │ │ │ ├── Instruction21t.java
│ │ │ │ ├── Instruction22b.java
│ │ │ │ ├── Instruction22c.java
│ │ │ │ ├── Instruction22cs.java
│ │ │ │ ├── Instruction22s.java
│ │ │ │ ├── Instruction22t.java
│ │ │ │ ├── Instruction22x.java
│ │ │ │ ├── Instruction23x.java
│ │ │ │ ├── Instruction30t.java
│ │ │ │ ├── Instruction31c.java
│ │ │ │ ├── Instruction31i.java
│ │ │ │ ├── Instruction31t.java
│ │ │ │ ├── Instruction32x.java
│ │ │ │ ├── Instruction35c.java
│ │ │ │ ├── Instruction35mi.java
│ │ │ │ ├── Instruction35ms.java
│ │ │ │ ├── Instruction3rc.java
│ │ │ │ ├── Instruction3rmi.java
│ │ │ │ ├── Instruction3rms.java
│ │ │ │ ├── Instruction51l.java
│ │ │ │ ├── PackedSwitchPayload.java
│ │ │ │ ├── SparseSwitchPayload.java
│ │ │ │ └── UnknownInstruction.java
│ │ ├── reference
│ │ │ ├── FieldReference.java
│ │ │ ├── MethodReference.java
│ │ │ ├── Reference.java
│ │ │ ├── StringReference.java
│ │ │ └── TypeReference.java
│ │ └── value
│ │ │ ├── AnnotationEncodedValue.java
│ │ │ ├── ArrayEncodedValue.java
│ │ │ ├── BooleanEncodedValue.java
│ │ │ ├── ByteEncodedValue.java
│ │ │ ├── CharEncodedValue.java
│ │ │ ├── DoubleEncodedValue.java
│ │ │ ├── EncodedValue.java
│ │ │ ├── EnumEncodedValue.java
│ │ │ ├── FieldEncodedValue.java
│ │ │ ├── FloatEncodedValue.java
│ │ │ ├── IntEncodedValue.java
│ │ │ ├── LongEncodedValue.java
│ │ │ ├── MethodEncodedValue.java
│ │ │ ├── NullEncodedValue.java
│ │ │ ├── ShortEncodedValue.java
│ │ │ ├── StringEncodedValue.java
│ │ │ └── TypeEncodedValue.java
│ ├── immutable
│ │ ├── ImmutableAnnotation.java
│ │ ├── ImmutableAnnotationElement.java
│ │ ├── ImmutableClassDef.java
│ │ ├── ImmutableDexFile.java
│ │ ├── ImmutableExceptionHandler.java
│ │ ├── ImmutableField.java
│ │ ├── ImmutableMethod.java
│ │ ├── ImmutableMethodImplementation.java
│ │ ├── ImmutableMethodParameter.java
│ │ ├── ImmutableTryBlock.java
│ │ ├── debug
│ │ │ ├── ImmutableDebugItem.java
│ │ │ ├── ImmutableEndLocal.java
│ │ │ ├── ImmutableEpilogueBegin.java
│ │ │ ├── ImmutableLineNumber.java
│ │ │ ├── ImmutablePrologueEnd.java
│ │ │ ├── ImmutableRestartLocal.java
│ │ │ ├── ImmutableSetSourceFile.java
│ │ │ └── ImmutableStartLocal.java
│ │ ├── instruction
│ │ │ ├── ImmutableArrayPayload.java
│ │ │ ├── ImmutableInstruction.java
│ │ │ ├── ImmutableInstruction10t.java
│ │ │ ├── ImmutableInstruction10x.java
│ │ │ ├── ImmutableInstruction11n.java
│ │ │ ├── ImmutableInstruction11x.java
│ │ │ ├── ImmutableInstruction12x.java
│ │ │ ├── ImmutableInstruction20bc.java
│ │ │ ├── ImmutableInstruction20t.java
│ │ │ ├── ImmutableInstruction21c.java
│ │ │ ├── ImmutableInstruction21ih.java
│ │ │ ├── ImmutableInstruction21lh.java
│ │ │ ├── ImmutableInstruction21s.java
│ │ │ ├── ImmutableInstruction21t.java
│ │ │ ├── ImmutableInstruction22b.java
│ │ │ ├── ImmutableInstruction22c.java
│ │ │ ├── ImmutableInstruction22cs.java
│ │ │ ├── ImmutableInstruction22s.java
│ │ │ ├── ImmutableInstruction22t.java
│ │ │ ├── ImmutableInstruction22x.java
│ │ │ ├── ImmutableInstruction23x.java
│ │ │ ├── ImmutableInstruction30t.java
│ │ │ ├── ImmutableInstruction31c.java
│ │ │ ├── ImmutableInstruction31i.java
│ │ │ ├── ImmutableInstruction31t.java
│ │ │ ├── ImmutableInstruction32x.java
│ │ │ ├── ImmutableInstruction35c.java
│ │ │ ├── ImmutableInstruction35mi.java
│ │ │ ├── ImmutableInstruction35ms.java
│ │ │ ├── ImmutableInstruction3rc.java
│ │ │ ├── ImmutableInstruction3rmi.java
│ │ │ ├── ImmutableInstruction3rms.java
│ │ │ ├── ImmutableInstruction51l.java
│ │ │ ├── ImmutableInstructionFactory.java
│ │ │ ├── ImmutablePackedSwitchPayload.java
│ │ │ ├── ImmutableSparseSwitchPayload.java
│ │ │ ├── ImmutableSwitchElement.java
│ │ │ └── ImmutableUnknownInstruction.java
│ │ ├── reference
│ │ │ ├── ImmutableFieldReference.java
│ │ │ ├── ImmutableMethodReference.java
│ │ │ ├── ImmutableReference.java
│ │ │ ├── ImmutableReferenceFactory.java
│ │ │ ├── ImmutableStringReference.java
│ │ │ └── ImmutableTypeReference.java
│ │ ├── util
│ │ │ ├── CharSequenceConverter.java
│ │ │ └── ParamUtil.java
│ │ └── value
│ │ │ ├── ImmutableAnnotationEncodedValue.java
│ │ │ ├── ImmutableArrayEncodedValue.java
│ │ │ ├── ImmutableBooleanEncodedValue.java
│ │ │ ├── ImmutableByteEncodedValue.java
│ │ │ ├── ImmutableCharEncodedValue.java
│ │ │ ├── ImmutableDoubleEncodedValue.java
│ │ │ ├── ImmutableEncodedValue.java
│ │ │ ├── ImmutableEncodedValueFactory.java
│ │ │ ├── ImmutableEnumEncodedValue.java
│ │ │ ├── ImmutableFieldEncodedValue.java
│ │ │ ├── ImmutableFloatEncodedValue.java
│ │ │ ├── ImmutableIntEncodedValue.java
│ │ │ ├── ImmutableLongEncodedValue.java
│ │ │ ├── ImmutableMethodEncodedValue.java
│ │ │ ├── ImmutableNullEncodedValue.java
│ │ │ ├── ImmutableShortEncodedValue.java
│ │ │ ├── ImmutableStringEncodedValue.java
│ │ │ └── ImmutableTypeEncodedValue.java
│ ├── rewriter
│ │ ├── AnnotationElementRewriter.java
│ │ ├── AnnotationRewriter.java
│ │ ├── ClassDefRewriter.java
│ │ ├── DebugItemRewriter.java
│ │ ├── DexRewriter.java
│ │ ├── EncodedValueRewriter.java
│ │ ├── ExceptionHandlerRewriter.java
│ │ ├── FieldReferenceRewriter.java
│ │ ├── FieldRewriter.java
│ │ ├── InstructionRewriter.java
│ │ ├── MethodImplementationRewriter.java
│ │ ├── MethodParameterRewriter.java
│ │ ├── MethodReferenceRewriter.java
│ │ ├── MethodRewriter.java
│ │ ├── Rewriter.java
│ │ ├── RewriterModule.java
│ │ ├── RewriterUtils.java
│ │ ├── Rewriters.java
│ │ ├── TryBlockRewriter.java
│ │ └── TypeRewriter.java
│ ├── util
│ │ ├── AnnotatedBytes.java
│ │ ├── EncodedValueUtils.java
│ │ ├── FieldUtil.java
│ │ ├── InstructionOffsetMap.java
│ │ ├── InstructionUtil.java
│ │ ├── MethodUtil.java
│ │ ├── Preconditions.java
│ │ ├── ReferenceUtil.java
│ │ ├── SyntheticAccessorFSM.java
│ │ ├── SyntheticAccessorResolver.java
│ │ └── TypeUtils.java
│ └── writer
│ │ ├── AnnotationSection.java
│ │ ├── AnnotationSetSection.java
│ │ ├── ClassSection.java
│ │ ├── DebugWriter.java
│ │ ├── DexDataWriter.java
│ │ ├── DexWriter.java
│ │ ├── EncodedValueWriter.java
│ │ ├── FieldSection.java
│ │ ├── IndexSection.java
│ │ ├── InstructionFactory.java
│ │ ├── InstructionWriter.java
│ │ ├── MethodSection.java
│ │ ├── NullableIndexSection.java
│ │ ├── NullableOffsetSection.java
│ │ ├── OffsetSection.java
│ │ ├── ProtoSection.java
│ │ ├── StringSection.java
│ │ ├── TypeListSection.java
│ │ ├── TypeSection.java
│ │ ├── builder
│ │ ├── BuilderAnnotation.java
│ │ ├── BuilderAnnotationElement.java
│ │ ├── BuilderAnnotationPool.java
│ │ ├── BuilderAnnotationSet.java
│ │ ├── BuilderAnnotationSetPool.java
│ │ ├── BuilderClassDef.java
│ │ ├── BuilderClassPool.java
│ │ ├── BuilderContext.java
│ │ ├── BuilderEncodedValues.java
│ │ ├── BuilderExceptionHandler.java
│ │ ├── BuilderField.java
│ │ ├── BuilderFieldPool.java
│ │ ├── BuilderFieldReference.java
│ │ ├── BuilderMapEntryCollection.java
│ │ ├── BuilderMethod.java
│ │ ├── BuilderMethodParameter.java
│ │ ├── BuilderMethodPool.java
│ │ ├── BuilderMethodReference.java
│ │ ├── BuilderProtoPool.java
│ │ ├── BuilderProtoReference.java
│ │ ├── BuilderReference.java
│ │ ├── BuilderStringPool.java
│ │ ├── BuilderStringReference.java
│ │ ├── BuilderTryBlock.java
│ │ ├── BuilderTypeList.java
│ │ ├── BuilderTypeListPool.java
│ │ ├── BuilderTypePool.java
│ │ ├── BuilderTypeReference.java
│ │ └── DexBuilder.java
│ │ ├── io
│ │ ├── DeferredOutputStream.java
│ │ ├── DeferredOutputStreamFactory.java
│ │ ├── DexDataStore.java
│ │ ├── FileDataStore.java
│ │ ├── FileDeferredOutputStream.java
│ │ ├── MemoryDataStore.java
│ │ └── MemoryDeferredOutputStream.java
│ │ ├── pool
│ │ ├── AnnotationPool.java
│ │ ├── AnnotationSetPool.java
│ │ ├── BaseIndexPool.java
│ │ ├── BaseNullableOffsetPool.java
│ │ ├── BaseOffsetPool.java
│ │ ├── ClassPool.java
│ │ ├── DexPool.java
│ │ ├── FieldPool.java
│ │ ├── MethodPool.java
│ │ ├── PoolClassDef.java
│ │ ├── PoolMethod.java
│ │ ├── ProtoPool.java
│ │ ├── StringPool.java
│ │ ├── StringTypeBasePool.java
│ │ ├── TypeListPool.java
│ │ └── TypePool.java
│ │ └── util
│ │ └── TryListBuilder.java
├── smali
│ ├── InvalidToken.java
│ ├── LexerErrorInterface.java
│ ├── LiteralTools.java
│ ├── OdexedInstructionException.java
│ ├── SemanticException.java
│ ├── SmaliMethodParameter.java
│ ├── WithRegister.java
│ ├── main.java
│ ├── smaliFlexLexer.java
│ ├── smaliParser.java
│ └── smaliTreeWalker.java
└── util
│ ├── AbstractForwardSequentialList.java
│ ├── AbstractListIterator.java
│ ├── AlignmentUtils.java
│ ├── ArraySortedSet.java
│ ├── BitSetUtils.java
│ ├── CharSequenceUtils.java
│ ├── ClassFileNameHandler.java
│ ├── CollectionUtils.java
│ ├── ConsoleUtil.java
│ ├── ExceptionWithContext.java
│ ├── Hex.java
│ ├── ImmutableConverter.java
│ ├── ImmutableUtils.java
│ ├── IndentingWriter.java
│ ├── LinearSearch.java
│ ├── NakedByteArrayOutputStream.java
│ ├── NibbleUtils.java
│ ├── NumberUtils.java
│ ├── PathUtil.java
│ ├── RandomAccessFileInputStream.java
│ ├── RandomAccessFileOutputStream.java
│ ├── SmaliHelpFormatter.java
│ ├── SparseArray.java
│ ├── SparseIntArray.java
│ ├── StringUtils.java
│ ├── StringWrapper.java
│ ├── TwoColumnOutput.java
│ ├── Utf8Utils.java
│ └── WrappedIndentingWriter.java
└── keplerproject
└── luajava
├── CPtr.java
├── Console.java
├── JavaFunction.java
├── LuaException.java
├── LuaInvocationHandler.java
├── LuaJavaAPI.java
├── LuaObject.java
├── LuaState.java
└── LuaStateFactory.java
/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
This annotation implies the same "nullness" as no annotation. However, it is different
21 | * than having no annotation, as it is inherited and it can override a ParametersAreNonnullByDefault
22 | * annotation at an outer scope.
23 | *
24 | */
25 | @Documented
26 | @Nullable
27 | @TypeQualifierDefault(ElementType.PARAMETER)
28 | @Retention(RetentionPolicy.RUNTIME)
29 | public @interface ParametersAreNullableByDefault {
30 | }
31 |
--------------------------------------------------------------------------------
/src/javax/annotation/PropertyKey.java:
--------------------------------------------------------------------------------
1 | package javax.annotation;
2 |
3 | import java.lang.annotation.Documented;
4 | import java.lang.annotation.Retention;
5 | import java.lang.annotation.RetentionPolicy;
6 |
7 | import javax.annotation.meta.TypeQualifier;
8 | import javax.annotation.meta.When;
9 |
10 | @Documented
11 | @TypeQualifier
12 | @Retention(RetentionPolicy.RUNTIME)
13 | public @interface PropertyKey {
14 | When when() default When.ALWAYS;
15 | }
16 |
--------------------------------------------------------------------------------
/src/javax/annotation/RegEx.java:
--------------------------------------------------------------------------------
1 | package javax.annotation;
2 |
3 | import java.lang.annotation.Documented;
4 | import java.lang.annotation.Retention;
5 | import java.lang.annotation.RetentionPolicy;
6 | import java.util.regex.Pattern;
7 | import java.util.regex.PatternSyntaxException;
8 |
9 | import javax.annotation.meta.TypeQualifierNickname;
10 | import javax.annotation.meta.TypeQualifierValidator;
11 | import javax.annotation.meta.When;
12 |
13 | /**
14 | * This qualifier is used to denote String values that should be a Regular
15 | * expression.
16 | *
17 | */
18 | @Documented
19 | @Syntax("RegEx")
20 | @TypeQualifierNickname
21 | @Retention(RetentionPolicy.RUNTIME)
22 | public @interface RegEx {
23 | When when() default When.ALWAYS;
24 |
25 | static class Checker implements TypeQualifierValidator
15 | * Thus, you might define a qualifier SocialSecurityNumber as follows:
16 | *
28 | *
36 | *
37 | * Syntax names can be followed by a colon and a list of key value pairs,
38 | * separated by commas. For example, "SQL:dialect=Oracle,version=2.3". Tools
39 | * should ignore any keys they don't recognize.
40 | */
41 | String value();
42 |
43 | When when() default When.ALWAYS;
44 | }
45 |
--------------------------------------------------------------------------------
/src/javax/annotation/Tainted.java:
--------------------------------------------------------------------------------
1 | package javax.annotation;
2 |
3 | import java.lang.annotation.Documented;
4 | import java.lang.annotation.Retention;
5 | import java.lang.annotation.RetentionPolicy;
6 |
7 | import javax.annotation.meta.TypeQualifierNickname;
8 | import javax.annotation.meta.When;
9 |
10 | @Documented
11 | @TypeQualifierNickname
12 | @Untainted(when = When.MAYBE)
13 | @Retention(RetentionPolicy.RUNTIME)
14 | public @interface Tainted {
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/src/javax/annotation/Untainted.java:
--------------------------------------------------------------------------------
1 | package javax.annotation;
2 |
3 | import java.lang.annotation.Documented;
4 | import java.lang.annotation.Retention;
5 | import java.lang.annotation.RetentionPolicy;
6 |
7 | import javax.annotation.meta.TypeQualifier;
8 | import javax.annotation.meta.When;
9 |
10 | @Documented
11 | @TypeQualifier
12 | @Retention(RetentionPolicy.RUNTIME)
13 | public @interface Untainted {
14 | When when() default When.ALWAYS;
15 | }
16 |
--------------------------------------------------------------------------------
/src/javax/annotation/WillClose.java:
--------------------------------------------------------------------------------
1 | package javax.annotation;
2 |
3 | import java.lang.annotation.Documented;
4 | import java.lang.annotation.Retention;
5 | import java.lang.annotation.RetentionPolicy;
6 |
7 | @Documented
8 | @Retention(RetentionPolicy.RUNTIME)
9 | /**
10 | * Used to annotate a method parameter to indicate that this method will close
11 | * the resource.
12 | */
13 | public @interface WillClose {
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/src/javax/annotation/WillCloseWhenClosed.java:
--------------------------------------------------------------------------------
1 | package javax.annotation;
2 |
3 | import java.lang.annotation.Documented;
4 | import java.lang.annotation.Retention;
5 | import java.lang.annotation.RetentionPolicy;
6 |
7 | @Documented
8 | @Retention(RetentionPolicy.RUNTIME)
9 | /**
10 | * Used to annotate a constructor/factory parameter to indicate that returned
11 | * object (X) will close the resource when X is closed.
12 | */
13 | public @interface WillCloseWhenClosed {
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/src/javax/annotation/WillNotClose.java:
--------------------------------------------------------------------------------
1 | package javax.annotation;
2 |
3 | import java.lang.annotation.Documented;
4 | import java.lang.annotation.Retention;
5 | import java.lang.annotation.RetentionPolicy;
6 |
7 | @Documented
8 | @Retention(RetentionPolicy.RUNTIME)
9 | /**
10 | * Used to annotate a method parameter to indicate that this method will not
11 | * close the resource.
12 | */
13 | public @interface WillNotClose {
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/src/javax/annotation/concurrent/GuardedBy.java:
--------------------------------------------------------------------------------
1 | package javax.annotation.concurrent;
2 |
3 | import java.lang.annotation.ElementType;
4 | import java.lang.annotation.Retention;
5 | import java.lang.annotation.RetentionPolicy;
6 | import java.lang.annotation.Target;
7 |
8 | /*
9 | * Copyright (c) 2005 Brian Goetz
10 | * Released under the Creative Commons Attribution License
11 | * (http://creativecommons.org/licenses/by/2.5)
12 | * Official home: http://www.jcip.net
13 | */
14 |
15 | /**
16 | * GuardedBy
17 | *
18 | * The field or method to which this annotation is applied can only be accessed
19 | * when holding a particular lock, which may be a built-in (synchronization)
20 | * lock, or may be an explicit java.util.concurrent.Lock.
21 | *
22 | * The argument determines which lock guards the annotated field or method: this :
23 | * The string literal "this" means that this field is guarded by the class in
24 | * which it is defined. class-name.this : For inner classes, it may be necessary
25 | * to disambiguate 'this'; the class-name.this designation allows you to specify
26 | * which 'this' reference is intended itself : For reference fields only; the
27 | * object to which the field refers. field-name : The lock object is referenced
28 | * by the (instance or static) field specified by field-name.
29 | * class-name.field-name : The lock object is reference by the static field
30 | * specified by class-name.field-name. method-name() : The lock object is
31 | * returned by calling the named nil-ary method. class-name.class : The Class
32 | * object for the specified class should be used as the lock object.
33 | */
34 | @Target( { ElementType.FIELD, ElementType.METHOD })
35 | @Retention(RetentionPolicy.CLASS)
36 | public @interface GuardedBy {
37 | String value();
38 | }
39 |
--------------------------------------------------------------------------------
/src/javax/annotation/concurrent/Immutable.java:
--------------------------------------------------------------------------------
1 | package javax.annotation.concurrent;
2 |
3 | import java.lang.annotation.Documented;
4 | import java.lang.annotation.ElementType;
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 | import java.lang.annotation.Target;
8 |
9 | /*
10 | * Copyright (c) 2005 Brian Goetz
11 | * Released under the Creative Commons Attribution License
12 | * (http://creativecommons.org/licenses/by/2.5)
13 | * Official home: http://www.jcip.net
14 | */
15 |
16 | /**
17 | * Immutable
18 | *
19 | * The class to which this annotation is applied is immutable. This means that
20 | * its state cannot be seen to change by callers. Of necessity this means that
21 | * all public fields are final, and that all public final reference fields refer
22 | * to other immutable objects, and that methods do not publish references to any
23 | * internal state which is mutable by implementation even if not by design.
24 | * Immutable objects may still have internal mutable state for purposes of
25 | * performance optimization; some state variables may be lazily computed, so
26 | * long as they are computed from immutable state and that callers cannot tell
27 | * the difference.
28 | *
29 | * Immutable objects are inherently thread-safe; they may be passed between
30 | * threads or published without synchronization.
31 | */
32 | @Documented
33 | @Target(ElementType.TYPE)
34 | @Retention(RetentionPolicy.CLASS)
35 | public @interface Immutable {
36 | }
37 |
--------------------------------------------------------------------------------
/src/javax/annotation/concurrent/NotThreadSafe.java:
--------------------------------------------------------------------------------
1 | package javax.annotation.concurrent;
2 |
3 | import java.lang.annotation.Documented;
4 | import java.lang.annotation.ElementType;
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 | import java.lang.annotation.Target;
8 |
9 | /*
10 | * Copyright (c) 2005 Brian Goetz
11 | * Released under the Creative Commons Attribution License
12 | * (http://creativecommons.org/licenses/by/2.5)
13 | * Official home: http://www.jcip.net
14 | */
15 |
16 | /**
17 | * NotThreadSafe
18 | *
19 | * The class to which this annotation is applied is not thread-safe. This
20 | * annotation primarily exists for clarifying the non-thread-safety of a class
21 | * that might otherwise be assumed to be thread-safe, despite the fact that it
22 | * is a bad idea to assume a class is thread-safe without good reason.
23 | *
24 | * @see ThreadSafe
25 | */
26 | @Documented
27 | @Target(ElementType.TYPE)
28 | @Retention(RetentionPolicy.CLASS)
29 | public @interface NotThreadSafe {
30 | }
31 |
--------------------------------------------------------------------------------
/src/javax/annotation/concurrent/ThreadSafe.java:
--------------------------------------------------------------------------------
1 | package javax.annotation.concurrent;
2 |
3 | import java.lang.annotation.Documented;
4 | import java.lang.annotation.ElementType;
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 | import java.lang.annotation.Target;
8 |
9 | /**
10 | * ThreadSafe
11 | *
12 | * The class to which this annotation is applied is thread-safe. This means that
13 | * no sequences of accesses (reads and writes to public fields, calls to public
14 | * methods) may put the object into an invalid state, regardless of the
15 | * interleaving of those actions by the runtime, and without requiring any
16 | * additional synchronization or coordination on the part of the caller.
17 | */
18 | @Documented
19 | @Target(ElementType.TYPE)
20 | @Retention(RetentionPolicy.CLASS)
21 | public @interface ThreadSafe {
22 | }
23 |
--------------------------------------------------------------------------------
/src/javax/annotation/meta/Exclusive.java:
--------------------------------------------------------------------------------
1 | package javax.annotation.meta;
2 |
3 | import java.lang.annotation.Documented;
4 | import java.lang.annotation.Retention;
5 | import java.lang.annotation.RetentionPolicy;
6 |
7 | /**
8 | * This annotation can be applied to the value() element of an annotation that
9 | * is annotated as a TypeQualifier.
10 | *
11 | * For example, the following defines a type qualifier such that if you know a
12 | * value is {@literal @Foo(1)}, then the value cannot be {@literal @Foo(2)} or {{@literal @Foo(3)}.
13 | *
14 | *
15 | * @TypeQualifier @interface Foo {
16 | * @Exclusive int value();
17 | * }
18 | *
19 | *
20 | */
21 |
22 | @Documented
23 | @Retention(RetentionPolicy.RUNTIME)
24 | public @interface Exclusive {
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/src/javax/annotation/meta/Exhaustive.java:
--------------------------------------------------------------------------------
1 | package javax.annotation.meta;
2 |
3 | import java.lang.annotation.Documented;
4 | import java.lang.annotation.Retention;
5 | import java.lang.annotation.RetentionPolicy;
6 |
7 | /**
8 | * This annotation can be applied to the value() element of an annotation that
9 | * is annotated as a TypeQualifier. This is only appropriate if the value field
10 | * returns a value that is an Enumeration.
11 | *
12 | * Applications of the type qualifier with different values are exclusive, and
13 | * the enumeration is an exhaustive list of the possible values.
14 | *
15 | * For example, the following defines a type qualifier such that if you know a
16 | * value is neither {@literal @Foo(Color.Red)} or {@literal @Foo(Color.Blue)},
17 | * then the value must be {@literal @Foo(Color.Green)}. And if you know it is
18 | * {@literal @Foo(Color.Green)}, you know it cannot be
19 | * {@literal @Foo(Color.Red)} or {@literal @Foo(Color.Blue)}
20 | *
21 | *
22 | * @TypeQualifier @interface Foo {
23 | * enum Color {RED, BLUE, GREEN};
24 | * @Exhaustive Color value();
25 | * }
26 | *
27 | */
28 |
29 | @Documented
30 | @Retention(RetentionPolicy.RUNTIME)
31 | public @interface Exhaustive {
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/src/javax/annotation/meta/TypeQualifier.java:
--------------------------------------------------------------------------------
1 | package javax.annotation.meta;
2 |
3 | import java.lang.annotation.Documented;
4 | import java.lang.annotation.ElementType;
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 | import java.lang.annotation.Target;
8 |
9 | /**
10 | * This qualifier is applied to an annotation to denote that the annotation
11 | * should be treated as a type qualifier.
12 | */
13 |
14 | @Documented
15 | @Target(ElementType.ANNOTATION_TYPE)
16 | @Retention(RetentionPolicy.RUNTIME)
17 | public @interface TypeQualifier {
18 |
19 | /**
20 | * Describes the kinds of values the qualifier can be applied to. If a
21 | * numeric class is provided (e.g., Number.class or Integer.class) then the
22 | * annotation can also be applied to the corresponding primitive numeric
23 | * types.
24 | */
25 | Class> applicableTo() default Object.class;
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/src/javax/annotation/meta/TypeQualifierDefault.java:
--------------------------------------------------------------------------------
1 | package javax.annotation.meta;
2 |
3 | import java.lang.annotation.Documented;
4 | import java.lang.annotation.ElementType;
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 | import java.lang.annotation.Target;
8 |
9 | /**
10 | * This qualifier is applied to an annotation to denote that the annotation
11 | * defines a default type qualifier that is visible within the scope of the
12 | * element it is applied to.
13 | */
14 |
15 | @Documented
16 | @Target(ElementType.ANNOTATION_TYPE)
17 | @Retention(RetentionPolicy.RUNTIME)
18 | public @interface TypeQualifierDefault {
19 | ElementType[] value() default {};
20 | }
21 |
--------------------------------------------------------------------------------
/src/javax/annotation/meta/TypeQualifierNickname.java:
--------------------------------------------------------------------------------
1 | package javax.annotation.meta;
2 |
3 | import java.lang.annotation.Documented;
4 | import java.lang.annotation.ElementType;
5 | import java.lang.annotation.Target;
6 |
7 | /**
8 | *
9 | * This annotation is applied to a annotation, and marks the annotation as being
10 | * a qualifier nickname. Applying a nickname annotation X to a element Y should
11 | * be interpreted as having the same meaning as applying all of annotations of X
12 | * (other than QualifierNickname) to Y.
13 | *
14 | *
20 | @Documented
21 | @TypeQualifierNickname @Pattern("[0-9]{3}-[0-9]{2}-[0-9]{4}")
22 | @Retention(RetentionPolicy.RUNTIME)
23 | public @interface SocialSecurityNumber {
24 | }
25 |
26 | *
27 | *
28 | */
29 | @Documented
30 | @Target(ElementType.ANNOTATION_TYPE)
31 | public @interface TypeQualifierNickname {
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/src/javax/annotation/meta/TypeQualifierValidator.java:
--------------------------------------------------------------------------------
1 | package javax.annotation.meta;
2 |
3 | import java.lang.annotation.Annotation;
4 |
5 | import javax.annotation.Nonnull;
6 |
7 | public interface TypeQualifierValidator {
8 | /**
9 | * Given a type qualifier, check to see if a known specific constant value
10 | * is an instance of the set of values denoted by the qualifier.
11 | *
12 | * @param annotation
13 | * the type qualifier
14 | * @param value
15 | * the value to check
16 | * @return a value indicating whether or not the value is an member of the
17 | * values denoted by the type qualifier
18 | */
19 | public @Nonnull
20 | When forConstantValue(@Nonnull A annotation, Object value);
21 | }
22 |
--------------------------------------------------------------------------------
/src/javax/annotation/meta/When.java:
--------------------------------------------------------------------------------
1 | package javax.annotation.meta;
2 |
3 | /**
4 | * Used to describe the relationship between a qualifier T and the set of values
5 | * S possible on an annotated element.
6 | *
7 | * In particular, an issues should be reported if an ALWAYS or MAYBE value is
8 | * used where a NEVER value is required, or if a NEVER or MAYBE value is used
9 | * where an ALWAYS value is required.
10 | *
11 | *
12 | */
13 | public enum When {
14 | /** S is a subset of T */
15 | ALWAYS,
16 | /** nothing definitive is known about the relation between S and T */
17 | UNKNOWN,
18 | /** S intersection T is non empty and S - T is nonempty */
19 | MAYBE,
20 | /** S intersection T is empty */
21 | NEVER;
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/src/org/jf/baksmali/Renderers/DoubleRenderer.java:
--------------------------------------------------------------------------------
1 | /*
2 | * [The "BSD licence"]
3 | * Copyright (c) 2010 Ben Gruver
4 | * All rights reserved.
5 | *
6 | * Redistribution and use in source and binary forms, with or without
7 | * modification, are permitted provided that the following conditions
8 | * are met:
9 | * 1. Redistributions of source code must retain the above copyright
10 | * notice, this list of conditions and the following disclaimer.
11 | * 2. Redistributions in binary form must reproduce the above copyright
12 | * notice, this list of conditions and the following disclaimer in the
13 | * documentation and/or other materials provided with the distribution.
14 | * 3. The name of the author may not be used to endorse or promote products
15 | * derived from this software without specific prior written permission.
16 | *
17 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 | * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 | * INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 | */
28 |
29 | package org.jf.baksmali.Renderers;
30 |
31 | import org.jf.util.IndentingWriter;
32 |
33 | import java.io.IOException;
34 |
35 | public class DoubleRenderer {
36 | public static void writeTo(IndentingWriter writer, double val) throws IOException {
37 | writer.write(Double.toString(val));
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/src/org/jf/baksmali/Renderers/FloatRenderer.java:
--------------------------------------------------------------------------------
1 | /*
2 | * [The "BSD licence"]
3 | * Copyright (c) 2010 Ben Gruver (JesusFreke)
4 | * All rights reserved.
5 | *
6 | * Redistribution and use in source and binary forms, with or without
7 | * modification, are permitted provided that the following conditions
8 | * are met:
9 | * 1. Redistributions of source code must retain the above copyright
10 | * notice, this list of conditions and the following disclaimer.
11 | * 2. Redistributions in binary form must reproduce the above copyright
12 | * notice, this list of conditions and the following disclaimer in the
13 | * documentation and/or other materials provided with the distribution.
14 | * 3. The name of the author may not be used to endorse or promote products
15 | * derived from this software without specific prior written permission.
16 | *
17 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 | * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 | * INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 | */
28 |
29 | package org.jf.baksmali.Renderers;
30 |
31 | import org.jf.util.IndentingWriter;
32 |
33 | import java.io.IOException;
34 |
35 | public class FloatRenderer {
36 | public static void writeTo(IndentingWriter writer, float val) throws IOException {
37 | writer.write(Float.toString(val));
38 | writer.write('f');
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/src/org/jf/dexlib2/builder/instruction/BuilderSwitchElement.java:
--------------------------------------------------------------------------------
1 | package org.jf.dexlib2.builder.instruction;
2 |
3 | import org.jf.dexlib2.builder.BuilderSwitchPayload;
4 | import org.jf.dexlib2.builder.Label;
5 | import org.jf.dexlib2.iface.instruction.SwitchElement;
6 |
7 | import javax.annotation.Nonnull;
8 |
9 | public class BuilderSwitchElement implements SwitchElement {
10 | @Nonnull BuilderSwitchPayload parent;
11 | private final int key;
12 | @Nonnull private final Label target;
13 |
14 | public BuilderSwitchElement(@Nonnull BuilderSwitchPayload parent,
15 | int key,
16 | @Nonnull Label target) {
17 | this.parent = parent;
18 | this.key = key;
19 | this.target = target;
20 | }
21 |
22 | @Override public int getKey() {
23 | return key;
24 | }
25 |
26 | @Override public int getOffset() {
27 | return target.getCodeAddress() - parent.getReferrer().getCodeAddress();
28 | }
29 |
30 | @Nonnull
31 | public Label getTarget() {
32 | return target;
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/org/jf/dexlib2/dexbacked/DexBackedExceptionHandler.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2012, Google Inc.
3 | * All rights reserved.
4 | *
5 | * Redistribution and use in source and binary forms, with or without
6 | * modification, are permitted provided that the following conditions are
7 | * met:
8 | *
9 | * * Redistributions of source code must retain the above copyright
10 | * notice, this list of conditions and the following disclaimer.
11 | * * Redistributions in binary form must reproduce the above
12 | * copyright notice, this list of conditions and the following disclaimer
13 | * in the documentation and/or other materials provided with the
14 | * distribution.
15 | * * Neither the name of Google Inc. nor the names of its
16 | * contributors may be used to endorse or promote products derived from
17 | * this software without specific prior written permission.
18 | *
19 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23 | * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 | */
31 |
32 | package org.jf.dexlib2.dexbacked;
33 |
34 | import org.jf.dexlib2.base.BaseExceptionHandler;
35 |
36 | public abstract class DexBackedExceptionHandler extends BaseExceptionHandler {
37 | }
38 |
--------------------------------------------------------------------------------
/src/org/jf/dexlib2/dexbacked/DexReader.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2012, Google Inc.
3 | * All rights reserved.
4 | *
5 | * Redistribution and use in source and binary forms, with or without
6 | * modification, are permitted provided that the following conditions are
7 | * met:
8 | *
9 | * * Redistributions of source code must retain the above copyright
10 | * notice, this list of conditions and the following disclaimer.
11 | * * Redistributions in binary form must reproduce the above
12 | * copyright notice, this list of conditions and the following disclaimer
13 | * in the documentation and/or other materials provided with the
14 | * distribution.
15 | * * Neither the name of Google Inc. nor the names of its
16 | * contributors may be used to endorse or promote products derived from
17 | * this software without specific prior written permission.
18 | *
19 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23 | * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 | */
31 |
32 | package org.jf.dexlib2.dexbacked;
33 |
34 | import javax.annotation.Nonnull;
35 |
36 | public class DexReader extends BaseDexReader