// $ANTLR 3.2 Sep 23, 2009 14:05:07 org/jf/smali/smaliTreeWalker.g 2011-02-10 14:15:53 package org.jf.smali; import java.util.HashMap; import java.util.LinkedList; import java.util.regex.*; import java.lang.Float; import java.lang.Double; import org.jf.dexlib.*; import org.jf.dexlib.EncodedValue.*; import org.jf.dexlib.Util.*; import org.jf.dexlib.Code.*; import org.jf.dexlib.Code.Format.*; import org.antlr.runtime.*; import org.antlr.runtime.tree.*;import java.util.Stack; import java.util.List; import java.util.ArrayList; public class smaliTreeWalker extends TreeParser { public static final String[] tokenNames = new String[] { "<invalid>", "<EOR>", "<DOWN>", "<UP>", "CLASS_DIRECTIVE", "SUPER_DIRECTIVE", "IMPLEMENTS_DIRECTIVE", "SOURCE_DIRECTIVE", "FIELD_DIRECTIVE", "END_FIELD_DIRECTIVE", "SUBANNOTATION_DIRECTIVE", "END_SUBANNOTATION_DIRECTIVE", "ANNOTATION_DIRECTIVE", "END_ANNOTATION_DIRECTIVE", "ENUM_DIRECTIVE", "METHOD_DIRECTIVE", "END_METHOD_DIRECTIVE", "REGISTERS_DIRECTIVE", "LOCALS_DIRECTIVE", "ARRAY_DATA_DIRECTIVE", "END_ARRAY_DATA_DIRECTIVE", "PACKED_SWITCH_DIRECTIVE", "END_PACKED_SWITCH_DIRECTIVE", "SPARSE_SWITCH_DIRECTIVE", "END_SPARSE_SWITCH_DIRECTIVE", "CATCH_DIRECTIVE", "CATCHALL_DIRECTIVE", "LINE_DIRECTIVE", "PARAMETER_DIRECTIVE", "END_PARAMETER_DIRECTIVE", "LOCAL_DIRECTIVE", "END_LOCAL_DIRECTIVE", "RESTART_LOCAL_DIRECTIVE", "PROLOGUE_DIRECTIVE", "EPILOGUE_DIRECTIVE", "HEX_PREFIX", "HEX_DIGIT", "BASE_INTEGER", "DECIMAL_EXPONENT", "BINARY_EXPONENT", "HEX_DIGITS", "BASE_FLOAT_OR_ID", "BASE_FLOAT", "ESCAPE_SEQUENCE", "POSITIVE_INTEGER_LITERAL", "NEGATIVE_INTEGER_LITERAL", "LONG_LITERAL", "SHORT_LITERAL", "BYTE_LITERAL", "FLOAT_LITERAL_OR_ID", "DOUBLE_LITERAL_OR_ID", "FLOAT_LITERAL", "DOUBLE_LITERAL", "BOOL_LITERAL", "NULL_LITERAL", "BASE_STRING_LITERAL", "STRING_LITERAL", "BASE_CHAR_LITERAL", "CHAR_LITERAL", "REGISTER", "ANNOTATION_VISIBILITY", "ACCESS_SPEC", "VTABLE_OFFSET", "FIELD_OFFSET", "OFFSET", "LINE_COMMENT", "INSTRUCTION_FORMAT10t", "INSTRUCTION_FORMAT10x", "INSTRUCTION_FORMAT11n", "INSTRUCTION_FORMAT11x", "INSTRUCTION_FORMAT12x_OR_ID", "INSTRUCTION_FORMAT12x", "INSTRUCTION_FORMAT20t", "INSTRUCTION_FORMAT21c_FIELD", "INSTRUCTION_FORMAT21c_STRING", "INSTRUCTION_FORMAT21c_TYPE", "INSTRUCTION_FORMAT21h", "INSTRUCTION_FORMAT21s", "INSTRUCTION_FORMAT21t", "INSTRUCTION_FORMAT22b", "INSTRUCTION_FORMAT22c_FIELD", "INSTRUCTION_FORMAT22c_TYPE", "INSTRUCTION_FORMAT22cs_FIELD", "INSTRUCTION_FORMAT22s_OR_ID", "INSTRUCTION_FORMAT22s", "INSTRUCTION_FORMAT22t", "INSTRUCTION_FORMAT22x", "INSTRUCTION_FORMAT23x", "INSTRUCTION_FORMAT30t", "INSTRUCTION_FORMAT31c", "INSTRUCTION_FORMAT31i_OR_ID", "INSTRUCTION_FORMAT31i", "INSTRUCTION_FORMAT31t", "INSTRUCTION_FORMAT32x", "INSTRUCTION_FORMAT35c_METHOD", "INSTRUCTION_FORMAT35c_TYPE", "INSTRUCTION_FORMAT35s_METHOD", "INSTRUCTION_FORMAT35ms_METHOD", "INSTRUCTION_FORMAT3rc_METHOD", "INSTRUCTION_FORMAT3rc_TYPE", "INSTRUCTION_FORMAT3rms_METHOD", "INSTRUCTION_FORMAT51l", "BASE_SIMPLE_NAME", "BASE_PRIMITIVE_TYPE", "BASE_CLASS_DESCRIPTOR", "BASE_ARRAY_DESCRIPTOR", "BASE_TYPE", "PRIMITIVE_TYPE", "VOID_TYPE", "CLASS_DESCRIPTOR", "ARRAY_DESCRIPTOR", "PARAM_LIST_OR_ID", "PARAM_LIST", "SIMPLE_NAME", "METHOD_NAME", "DOTDOT", "ARROW", "EQUAL", "COLON", "COMMA", "OPEN_BRACE", "CLOSE_BRACE", "OPEN_PAREN", "CLOSE_PAREN", "WHITE_SPACE", "I_CLASS_DEF", "I_SUPER", "I_IMPLEMENTS", "I_SOURCE", "I_ACCESS_LIST", "I_METHODS", "I_FIELDS", "I_FIELD", "I_FIELD_TYPE", "I_FIELD_INITIAL_VALUE", "I_METHOD", "I_METHOD_PROTOTYPE", "I_METHOD_RETURN_TYPE", "I_REGISTERS", "I_LOCALS", "I_LABELS", "I_LABEL", "I_ANNOTATIONS", "I_ANNOTATION", "I_ANNOTATION_ELEMENT", "I_SUBANNOTATION", "I_ENCODED_FIELD", "I_ENCODED_METHOD", "I_ENCODED_ENUM", "I_ENCODED_ARRAY", "I_ARRAY_ELEMENT_SIZE", "I_ARRAY_ELEMENTS", "I_PACKED_SWITCH_START_KEY", "I_PACKED_SWITCH_TARGET_COUNT", "I_PACKED_SWITCH_TARGETS", "I_PACKED_SWITCH_DECLARATION", "I_PACKED_SWITCH_DECLARATIONS", "I_SPARSE_SWITCH_KEYS", "I_SPARSE_SWITCH_TARGET_COUNT", "I_SPARSE_SWITCH_TARGETS", "I_SPARSE_SWITCH_DECLARATION", "I_SPARSE_SWITCH_DECLARATIONS", "I_ADDRESS", "I_CATCH", "I_CATCHALL", "I_CATCHES", "I_PARAMETER", "I_PARAMETERS", "I_PARAMETER_NOT_SPECIFIED", "I_ORDERED_DEBUG_DIRECTIVES", "I_LINE", "I_LOCAL", "I_END_LOCAL", "I_RESTART_LOCAL", "I_PROLOGUE", "I_EPILOGUE", "I_STATEMENTS", "I_STATEMENT_FORMAT10t", "I_STATEMENT_FORMAT10x", "I_STATEMENT_FORMAT11n", "I_STATEMENT_FORMAT11x", "I_STATEMENT_FORMAT12x", "I_STATEMENT_FORMAT20t", "I_STATEMENT_FORMAT21c_TYPE", "I_STATEMENT_FORMAT21c_FIELD", "I_STATEMENT_FORMAT21c_STRING", "I_STATEMENT_FORMAT21h", "I_STATEMENT_FORMAT21s", "I_STATEMENT_FORMAT21t", "I_STATEMENT_FORMAT22b", "I_STATEMENT_FORMAT22c_FIELD", "I_STATEMENT_FORMAT22c_TYPE", "I_STATEMENT_FORMAT22s", "I_STATEMENT_FORMAT22t", "I_STATEMENT_FORMAT22x", "I_STATEMENT_FORMAT23x", "I_STATEMENT_FORMAT30t", "I_STATEMENT_FORMAT31c", "I_STATEMENT_FORMAT31i", "I_STATEMENT_FORMAT31t", "I_STATEMENT_FORMAT32x", "I_STATEMENT_FORMAT35c_METHOD", "I_STATEMENT_FORMAT35c_TYPE", "I_STATEMENT_FORMAT3rc_METHOD", "I_STATEMENT_FORMAT3rc_TYPE", "I_STATEMENT_FORMAT51l", "I_STATEMENT_ARRAY_DATA", "I_STATEMENT_PACKED_SWITCH", "I_STATEMENT_SPARSE_SWITCH", "I_REGISTER_RANGE", "I_REGISTER_LIST", "LABEL", "INTEGER_LITERAL", "INVALID_TOKEN" }; public static final int I_REGISTER_LIST=210; public static final int I_STATEMENT_FORMAT51l=205; public static final int SPARSE_SWITCH_DIRECTIVE=23; public static final int I_ORDERED_DEBUG_DIRECTIVES=169; public static final int END_PARAMETER_DIRECTIVE=29; public static final int BINARY_EXPONENT=39; public static final int INSTRUCTION_FORMAT11x=69; public static final int ANNOTATION_VISIBILITY=60; public static final int INVALID_TOKEN=213; public static final int HEX_PREFIX=35; public static final int END_SUBANNOTATION_DIRECTIVE=11; public static final int I_STATEMENT_FORMAT12x=181; public static final int EOF=-1; public static final int I_METHOD=135; public static final int I_SUBANNOTATION=145; public static final int INSTRUCTION_FORMAT11n=68; public static final int I_SPARSE_SWITCH_TARGETS=159; public static final int I_PACKED_SWITCH_TARGET_COUNT=153; public static final int STRING_LITERAL=56; public static final int SHORT_LITERAL=47; public static final int I_FIELD_INITIAL_VALUE=134; public static final int INSTRUCTION_FORMAT10x=67; public static final int I_PACKED_SWITCH_DECLARATION=155; public static final int I_SUPER=126; public static final int I_STATEMENT_FORMAT11n=179; public static final int INSTRUCTION_FORMAT10t=66; public static final int NEGATIVE_INTEGER_LITERAL=45; public static final int REGISTER=59; public static final int INSTRUCTION_FORMAT21c_TYPE=75; public static final int I_STATEMENT_FORMAT11x=180; public static final int LOCAL_DIRECTIVE=30; public static final int I_LINE=170; public static final int LOCALS_DIRECTIVE=18; public static final int I_CATCHALL=164; public static final int INSTRUCTION_FORMAT35c_TYPE=95; public static final int INSTRUCTION_FORMAT31i_OR_ID=90; public static final int I_PARAMETERS=167; public static final int I_METHOD_RETURN_TYPE=137; public static final int INSTRUCTION_FORMAT51l=101; public static final int ENUM_DIRECTIVE=14; public static final int NULL_LITERAL=54; public static final int REGISTERS_DIRECTIVE=17; public static final int BASE_SIMPLE_NAME=102; public static final int END_ARRAY_DATA_DIRECTIVE=20; public static final int I_STATEMENT_FORMAT21c_FIELD=184; public static final int I_METHOD_PROTOTYPE=136; public static final int EPILOGUE_DIRECTIVE=34; public static final int I_LOCALS=139; public static final int I_ENCODED_ARRAY=149; public static final int RESTART_LOCAL_DIRECTIVE=32; public static final int POSITIVE_INTEGER_LITERAL=44; public static final int BASE_PRIMITIVE_TYPE=103; public static final int I_CATCH=163; public static final int CATCH_DIRECTIVE=25; public static final int I_PARAMETER_NOT_SPECIFIED=168; public static final int INSTRUCTION_FORMAT21h=76; public static final int I_ANNOTATION=143; public static final int INSTRUCTION_FORMAT21s=77; public static final int INSTRUCTION_FORMAT21t=78; public static final int WHITE_SPACE=124; public static final int INSTRUCTION_FORMAT22b=79; public static final int INSTRUCTION_FORMAT20t=72; public static final int OFFSET=64; public static final int FLOAT_LITERAL_OR_ID=49; public static final int I_PACKED_SWITCH_START_KEY=152; public static final int I_ACCESS_LIST=129; public static final int I_REGISTERS=138; public static final int SOURCE_DIRECTIVE=7; public static final int IMPLEMENTS_DIRECTIVE=6; public static final int CLASS_DIRECTIVE=4; public static final int BASE_CHAR_LITERAL=57; public static final int I_STATEMENT_FORMAT35c_METHOD=201; public static final int I_STATEMENT_SPARSE_SWITCH=208; public static final int BASE_STRING_LITERAL=55; public static final int INSTRUCTION_FORMAT23x=87; public static final int HEX_DIGIT=36; public static final int OPEN_PAREN=122; public static final int END_PACKED_SWITCH_DIRECTIVE=22; public static final int CLOSE_BRACE=121; public static final int I_EPILOGUE=175; public static final int I_METHODS=130; public static final int LONG_LITERAL=46; public static final int INSTRUCTION_FORMAT22c_FIELD=80; public static final int ACCESS_SPEC=61; public static final int END_FIELD_DIRECTIVE=9; public static final int I_IMPLEMENTS=127; public static final int COLON=118; public static final int INSTRUCTION_FORMAT35ms_METHOD=97; public static final int I_STATEMENT_FORMAT23x=195; public static final int CHAR_LITERAL=58; public static final int INSTRUCTION_FORMAT22s=84; public static final int VOID_TYPE=108; public static final int INSTRUCTION_FORMAT22t=85; public static final int CLASS_DESCRIPTOR=109; public static final int ARROW=116; public static final int INSTRUCTION_FORMAT22x=86; public static final int VTABLE_OFFSET=62; public static final int INSTRUCTION_FORMAT12x=71; public static final int I_LOCAL=171; public static final int I_REGISTER_RANGE=209; public static final int INSTRUCTION_FORMAT32x=93; public static final int I_STATEMENT_FORMAT22b=189; public static final int ANNOTATION_DIRECTIVE=12; public static final int END_ANNOTATION_DIRECTIVE=13; public static final int I_SPARSE_SWITCH_TARGET_COUNT=158; public static final int DOUBLE_LITERAL=52; public static final int I_STATEMENT_FORMAT22s=192; public static final int I_STATEMENT_FORMAT22t=193; public static final int I_STATEMENT_FORMAT32x=200; public static final int END_LOCAL_DIRECTIVE=31; public static final int BASE_FLOAT_OR_ID=41; public static final int BASE_INTEGER=37; public static final int I_STATEMENT_FORMAT22x=194; public static final int I_STATEMENT_FORMAT21c_STRING=185; public static final int INSTRUCTION_FORMAT12x_OR_ID=70; public static final int I_STATEMENT_FORMAT31c=197; public static final int I_STATEMENT_FORMAT31i=198; public static final int INSTRUCTION_FORMAT35s_METHOD=96; public static final int I_STATEMENT_FORMAT21h=186; public static final int I_ANNOTATIONS=142; public static final int PRIMITIVE_TYPE=107; public static final int CATCHALL_DIRECTIVE=26; public static final int I_STATEMENT_FORMAT21s=187; public static final int DOUBLE_LITERAL_OR_ID=50; public static final int I_STATEMENT_FORMAT31t=199; public static final int I_SOURCE=128; public static final int CLOSE_PAREN=123; public static final int I_SPARSE_SWITCH_DECLARATIONS=161; public static final int ARRAY_DESCRIPTOR=110; public static final int I_ADDRESS=162; public static final int I_STATEMENT_FORMAT21t=188; public static final int I_STATEMENTS=176; public static final int SUBANNOTATION_DIRECTIVE=10; public static final int INSTRUCTION_FORMAT31c=89; public static final int LINE_COMMENT=65; public static final int I_PARAMETER=166; public static final int I_ARRAY_ELEMENTS=151; public static final int I_SPARSE_SWITCH_DECLARATION=160; public static final int INSTRUCTION_FORMAT30t=88; public static final int BOOL_LITERAL=53; public static final int I_STATEMENT_FORMAT21c_TYPE=183; public static final int I_STATEMENT_FORMAT20t=182; public static final int I_STATEMENT_FORMAT3rc_TYPE=204; public static final int BASE_FLOAT=42; public static final int METHOD_NAME=114; public static final int I_ANNOTATION_ELEMENT=144; public static final int PACKED_SWITCH_DIRECTIVE=21; public static final int PARAMETER_DIRECTIVE=28; public static final int ARRAY_DATA_DIRECTIVE=19; public static final int DECIMAL_EXPONENT=38; public static final int INTEGER_LITERAL=212; public static final int PROLOGUE_DIRECTIVE=33; public static final int I_SPARSE_SWITCH_KEYS=157; public static final int INSTRUCTION_FORMAT31t=92; public static final int I_RESTART_LOCAL=173; public static final int INSTRUCTION_FORMAT31i=91; public static final int METHOD_DIRECTIVE=15; public static final int I_ENCODED_FIELD=146; public static final int INSTRUCTION_FORMAT22c_TYPE=81; public static final int INSTRUCTION_FORMAT35c_METHOD=94; public static final int I_END_LOCAL=172; public static final int INSTRUCTION_FORMAT3rc_METHOD=98; public static final int BASE_ARRAY_DESCRIPTOR=105; public static final int INSTRUCTION_FORMAT22s_OR_ID=83; public static final int I_CATCHES=165; public static final int SUPER_DIRECTIVE=5; public static final int DOTDOT=115; public static final int END_SPARSE_SWITCH_DIRECTIVE=24; public static final int I_ENCODED_METHOD=147; public static final int INSTRUCTION_FORMAT21c_FIELD=73; public static final int I_ARRAY_ELEMENT_SIZE=150; public static final int I_FIELDS=131; public static final int I_LABELS=140; public static final int ESCAPE_SEQUENCE=43; public static final int I_STATEMENT_FORMAT35c_TYPE=202; public static final int BYTE_LITERAL=48; public static final int COMMA=119; public static final int I_CLASS_DEF=125; public static final int EQUAL=117; public static final int PARAM_LIST_OR_ID=111; public static final int I_FIELD=132; public static final int I_STATEMENT_PACKED_SWITCH=207; public static final int I_STATEMENT_FORMAT22c_FIELD=190; public static final int FIELD_OFFSET=63; public static final int FIELD_DIRECTIVE=8; public static final int INSTRUCTION_FORMAT3rc_TYPE=99; public static final int I_STATEMENT_FORMAT10x=178; public static final int I_LABEL=141; public static final int I_STATEMENT_ARRAY_DATA=206; public static final int END_METHOD_DIRECTIVE=16; public static final int I_STATEMENT_FORMAT10t=177; public static final int I_PROLOGUE=174; public static final int I_ENCODED_ENUM=148; public static final int I_PACKED_SWITCH_DECLARATIONS=156; public static final int I_FIELD_TYPE=133; public static final int I_STATEMENT_FORMAT30t=196; public static final int FLOAT_LITERAL=51; public static final int INSTRUCTION_FORMAT21c_STRING=74; public static final int I_PACKED_SWITCH_TARGETS=154; public static final int PARAM_LIST=112; public static final int SIMPLE_NAME=113; public static final int BASE_CLASS_DESCRIPTOR=104; public static final int LINE_DIRECTIVE=27; public static final int INSTRUCTION_FORMAT22cs_FIELD=82; public static final int LABEL=211; public static final int BASE_TYPE=106; public static final int I_STATEMENT_FORMAT3rc_METHOD=203; public static final int HEX_DIGITS=40; public static final int INSTRUCTION_FORMAT3rms_METHOD=100; public static final int OPEN_BRACE=120; public static final int I_STATEMENT_FORMAT22c_TYPE=191; // delegates // delegators public smaliTreeWalker(TreeNodeStream input) { this(input, new RecognizerSharedState()); } public smaliTreeWalker(TreeNodeStream input, RecognizerSharedState state) { super(input, state); } public String[] getTokenNames() { return smaliTreeWalker.tokenNames; } public String getGrammarFileName() { return "org/jf/smali/smaliTreeWalker.g"; } public DexFile dexFile; public TypeIdItem classType; private byte parseRegister_nibble(String register, int totalMethodRegisters, int methodParameterRegisters) throws SemanticException { //register should be in the format "v12" int val = Byte.parseByte(register.substring(1)); if (register.charAt(0) == 'p') { val = totalMethodRegisters - methodParameterRegisters + val; } if (val >= 2<<4) { throw new SemanticException(input, "The maximum allowed register in this context is list of registers is v15"); } //the parser wouldn't have accepted a negative register, i.e. v-1, so we don't have to check for val<0; return (byte)val; } //return a short, because java's byte is signed private short parseRegister_byte(String register, int totalMethodRegisters, int methodParameterRegisters) throws SemanticException { //register should be in the format "v123" int val = Short.parseShort(register.substring(1)); if (register.charAt(0) == 'p') { val = totalMethodRegisters - methodParameterRegisters + val; } if (val >= 2<<8) { throw new SemanticException(input, "The maximum allowed register in this context is v255"); } return (short)val; } //return an int because java's short is signed private int parseRegister_short(String register, int totalMethodRegisters, int methodParameterRegisters) throws SemanticException { //register should be in the format "v12345" int val = Integer.parseInt(register.substring(1)); if (register.charAt(0) == 'p') { val = totalMethodRegisters - methodParameterRegisters + val; } if (val >= 2<<16) { throw new SemanticException(input, "The maximum allowed register in this context is v65535"); } //the parser wouldn't accept a negative register, i.e. v-1, so we don't have to check for val<0; return val; } private static Pattern specialFloatRegex = Pattern.compile("((-)?infinityf)|(nanf)", Pattern.CASE_INSENSITIVE); private float parseFloat(String floatString) { Matcher m = specialFloatRegex.matcher(floatString); if (m.matches()) { //got an infinity if (m.start(1) != -1) { if (m.start(2) != -1) { return Float.NEGATIVE_INFINITY; } else { return Float.POSITIVE_INFINITY; } } else { return Float.NaN; } } return Float.parseFloat(floatString); } private static Pattern specialDoubleRegex = Pattern.compile("((-)?infinityd?)|(nand?)", Pattern.CASE_INSENSITIVE); private double parseDouble(String doubleString) { Matcher m = specialDoubleRegex.matcher(doubleString); if (m.matches()) { //got an infinity if (m.start(1) != -1) { if (m.start(2) != -1) { return Double.NEGATIVE_INFINITY; } else { return Double.POSITIVE_INFINITY; } } else { return Double.NaN; } } return Double.parseDouble(doubleString); } public String getErrorMessage(RecognitionException e, String[] tokenNames) { if ( e instanceof SemanticException ) { return e.getMessage(); } else { return super.getErrorMessage(e, tokenNames); } } public String getErrorHeader(RecognitionException e) { return getSourceName()+"["+ e.line+","+e.charPositionInLine+"]"; } // $ANTLR start "smali_file" // org/jf/smali/smaliTreeWalker.g:150:1: smali_file : ^( I_CLASS_DEF header methods fields annotations ) ; public final void smali_file() throws RecognitionException { smaliTreeWalker.methods_return methods1 = null; smaliTreeWalker.fields_return fields2 = null; AnnotationSetItem annotations3 = null; smaliTreeWalker.header_return header4 = null; try { // org/jf/smali/smaliTreeWalker.g:151:2: ( ^( I_CLASS_DEF header methods fields annotations ) ) // org/jf/smali/smaliTreeWalker.g:151:4: ^( I_CLASS_DEF header methods fields annotations ) { match(input,I_CLASS_DEF,FOLLOW_I_CLASS_DEF_in_smali_file48); match(input, Token.DOWN, null); pushFollow(FOLLOW_header_in_smali_file50); header4=header(); state._fsp--; pushFollow(FOLLOW_methods_in_smali_file52); methods1=methods(); state._fsp--; pushFollow(FOLLOW_fields_in_smali_file54); fields2=fields(); state._fsp--; pushFollow(FOLLOW_annotations_in_smali_file56); annotations3=annotations(); state._fsp--; match(input, Token.UP, null); AnnotationDirectoryItem annotationDirectoryItem = null; ClassDefItem classDefItem = null; ClassDataItem classDataItem = null; if ( (methods1!=null?methods1.methodAnnotations:null) != null || (methods1!=null?methods1.parameterAnnotations:null) != null || (fields2!=null?fields2.fieldAnnotations:null) != null || annotations3 != null) { annotationDirectoryItem = AnnotationDirectoryItem.internAnnotationDirectoryItem( dexFile, annotations3, (fields2!=null?fields2.fieldAnnotations:null), (methods1!=null?methods1.methodAnnotations:null), (methods1!=null?methods1.parameterAnnotations:null)); } if ((fields2!=null?fields2.staticFields:null).size() != 0 || (fields2!=null?fields2.instanceFields:null).size() != 0 || (methods1!=null?methods1.directMethods:null).size() != 0 || (methods1!=null?methods1.virtualMethods:null).size()!= 0) { classDataItem = ClassDataItem.internClassDataItem(dexFile, (fields2!=null?fields2.staticFields:null), (fields2!=null?fields2.instanceFields:null), (methods1!=null?methods1.directMethods:null), (methods1!=null?methods1.virtualMethods:null)); } classDefItem = ClassDefItem.internClassDefItem(dexFile, (header4!=null?header4.classType:null), (header4!=null?header4.accessFlags:0), (header4!=null?header4.superType:null), (header4!=null?header4.implementsList:null), (header4!=null?header4.sourceSpec:null), annotationDirectoryItem, classDataItem, (fields2!=null?fields2.staticFieldInitialValues:null)); } } catch (Exception ex) { reportError(new SemanticException(input, ex)); } finally { } return ; } // $ANTLR end "smali_file" public static class header_return extends TreeRuleReturnScope { public TypeIdItem classType; public int accessFlags; public TypeIdItem superType; public TypeListItem implementsList; public StringIdItem sourceSpec; }; // $ANTLR start "header" // org/jf/smali/smaliTreeWalker.g:185:1: header returns [TypeIdItem classType, int accessFlags, TypeIdItem superType, TypeListItem implementsList, StringIdItem sourceSpec] : class_spec ( super_spec )? implements_list source_spec ; public final smaliTreeWalker.header_return header() throws RecognitionException { smaliTreeWalker.header_return retval = new smaliTreeWalker.header_return(); retval.start = input.LT(1); smaliTreeWalker.class_spec_return class_spec5 = null; TypeIdItem super_spec6 = null; TypeListItem implements_list7 = null; StringIdItem source_spec8 = null; try { // org/jf/smali/smaliTreeWalker.g:186:1: ( class_spec ( super_spec )? implements_list source_spec ) // org/jf/smali/smaliTreeWalker.g:186:3: class_spec ( super_spec )? implements_list source_spec { pushFollow(FOLLOW_class_spec_in_header80); class_spec5=class_spec(); state._fsp--; // org/jf/smali/smaliTreeWalker.g:186:14: ( super_spec )? int alt1=2; switch ( input.LA(1) ) { case I_SUPER: { alt1=1; } break; } switch (alt1) { case 1 : // org/jf/smali/smaliTreeWalker.g:186:14: super_spec { pushFollow(FOLLOW_super_spec_in_header82); super_spec6=super_spec(); state._fsp--; } break; } pushFollow(FOLLOW_implements_list_in_header85); implements_list7=implements_list(); state._fsp--; pushFollow(FOLLOW_source_spec_in_header87); source_spec8=source_spec(); state._fsp--; classType = (class_spec5!=null?class_spec5.type:null); retval.classType = classType; retval.accessFlags = (class_spec5!=null?class_spec5.accessFlags:0); retval.superType = super_spec6; retval.implementsList = implements_list7; retval.sourceSpec = source_spec8; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return retval; } // $ANTLR end "header" public static class class_spec_return extends TreeRuleReturnScope { public TypeIdItem type; public int accessFlags; }; // $ANTLR start "class_spec" // org/jf/smali/smaliTreeWalker.g:197:1: class_spec returns [TypeIdItem type, int accessFlags] : class_type_descriptor access_list ; public final smaliTreeWalker.class_spec_return class_spec() throws RecognitionException { smaliTreeWalker.class_spec_return retval = new smaliTreeWalker.class_spec_return(); retval.start = input.LT(1); TypeIdItem class_type_descriptor9 = null; int access_list10 = 0; try { // org/jf/smali/smaliTreeWalker.g:198:2: ( class_type_descriptor access_list ) // org/jf/smali/smaliTreeWalker.g:198:4: class_type_descriptor access_list { pushFollow(FOLLOW_class_type_descriptor_in_class_spec103); class_type_descriptor9=class_type_descriptor(); state._fsp--; pushFollow(FOLLOW_access_list_in_class_spec105); access_list10=access_list(); state._fsp--; retval.type = class_type_descriptor9; retval.accessFlags = access_list10; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return retval; } // $ANTLR end "class_spec" // $ANTLR start "super_spec" // org/jf/smali/smaliTreeWalker.g:204:1: super_spec returns [TypeIdItem type] : ^( I_SUPER class_type_descriptor ) ; public final TypeIdItem super_spec() throws RecognitionException { TypeIdItem type = null; TypeIdItem class_type_descriptor11 = null; try { // org/jf/smali/smaliTreeWalker.g:205:2: ( ^( I_SUPER class_type_descriptor ) ) // org/jf/smali/smaliTreeWalker.g:205:4: ^( I_SUPER class_type_descriptor ) { match(input,I_SUPER,FOLLOW_I_SUPER_in_super_spec121); match(input, Token.DOWN, null); pushFollow(FOLLOW_class_type_descriptor_in_super_spec123); class_type_descriptor11=class_type_descriptor(); state._fsp--; match(input, Token.UP, null); type = class_type_descriptor11; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return type; } // $ANTLR end "super_spec" // $ANTLR start "implements_spec" // org/jf/smali/smaliTreeWalker.g:211:1: implements_spec returns [TypeIdItem type] : ^( I_IMPLEMENTS class_type_descriptor ) ; public final TypeIdItem implements_spec() throws RecognitionException { TypeIdItem type = null; TypeIdItem class_type_descriptor12 = null; try { // org/jf/smali/smaliTreeWalker.g:212:2: ( ^( I_IMPLEMENTS class_type_descriptor ) ) // org/jf/smali/smaliTreeWalker.g:212:4: ^( I_IMPLEMENTS class_type_descriptor ) { match(input,I_IMPLEMENTS,FOLLOW_I_IMPLEMENTS_in_implements_spec141); match(input, Token.DOWN, null); pushFollow(FOLLOW_class_type_descriptor_in_implements_spec143); class_type_descriptor12=class_type_descriptor(); state._fsp--; match(input, Token.UP, null); type = class_type_descriptor12; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return type; } // $ANTLR end "implements_spec" // $ANTLR start "implements_list" // org/jf/smali/smaliTreeWalker.g:217:1: implements_list returns [TypeListItem implementsList] : ( implements_spec )* ; public final TypeListItem implements_list() throws RecognitionException { TypeListItem implementsList = null; TypeIdItem implements_spec13 = null; List<TypeIdItem> typeList; try { // org/jf/smali/smaliTreeWalker.g:219:2: ( ( implements_spec )* ) // org/jf/smali/smaliTreeWalker.g:219:4: ( implements_spec )* { typeList = new LinkedList<TypeIdItem>(); // org/jf/smali/smaliTreeWalker.g:220:3: ( implements_spec )* loop2: do { int alt2=2; switch ( input.LA(1) ) { case I_IMPLEMENTS: { alt2=1; } break; } switch (alt2) { case 1 : // org/jf/smali/smaliTreeWalker.g:220:4: implements_spec { pushFollow(FOLLOW_implements_spec_in_implements_list169); implements_spec13=implements_spec(); state._fsp--; typeList.add(implements_spec13); } break; default : break loop2; } } while (true); if (typeList.size() > 0) { implementsList = TypeListItem.internTypeListItem(dexFile, typeList); } else { implementsList = null; } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return implementsList; } // $ANTLR end "implements_list" // $ANTLR start "source_spec" // org/jf/smali/smaliTreeWalker.g:229:1: source_spec returns [StringIdItem source] : ( ^( I_SOURCE string_literal ) | ); public final StringIdItem source_spec() throws RecognitionException { StringIdItem source = null; String string_literal14 = null; try { // org/jf/smali/smaliTreeWalker.g:230:2: ( ^( I_SOURCE string_literal ) | ) int alt3=2; switch ( input.LA(1) ) { case I_SOURCE: { alt3=1; } break; case I_METHODS: { alt3=2; } break; default: NoViableAltException nvae = new NoViableAltException("", 3, 0, input); throw nvae; } switch (alt3) { case 1 : // org/jf/smali/smaliTreeWalker.g:230:4: ^( I_SOURCE string_literal ) { source = null; match(input,I_SOURCE,FOLLOW_I_SOURCE_in_source_spec194); match(input, Token.DOWN, null); pushFollow(FOLLOW_string_literal_in_source_spec196); string_literal14=string_literal(); state._fsp--; source = StringIdItem.internStringIdItem(dexFile, string_literal14); match(input, Token.UP, null); } break; case 2 : // org/jf/smali/smaliTreeWalker.g:232:4: { } break; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return source; } // $ANTLR end "source_spec" // $ANTLR start "access_list" // org/jf/smali/smaliTreeWalker.g:236:1: access_list returns [int value] : ^( I_ACCESS_LIST ( ACCESS_SPEC )* ) ; public final int access_list() throws RecognitionException { int value = 0; CommonTree ACCESS_SPEC15=null; value = 0; try { // org/jf/smali/smaliTreeWalker.g:241:2: ( ^( I_ACCESS_LIST ( ACCESS_SPEC )* ) ) // org/jf/smali/smaliTreeWalker.g:241:4: ^( I_ACCESS_LIST ( ACCESS_SPEC )* ) { match(input,I_ACCESS_LIST,FOLLOW_I_ACCESS_LIST_in_access_list226); if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); // org/jf/smali/smaliTreeWalker.g:242:4: ( ACCESS_SPEC )* loop4: do { int alt4=2; switch ( input.LA(1) ) { case ACCESS_SPEC: { alt4=1; } break; } switch (alt4) { case 1 : // org/jf/smali/smaliTreeWalker.g:243:5: ACCESS_SPEC { ACCESS_SPEC15=(CommonTree)match(input,ACCESS_SPEC,FOLLOW_ACCESS_SPEC_in_access_list237); value |= AccessFlags.getAccessFlag(ACCESS_SPEC15.getText()).getValue(); } break; default : break loop4; } } while (true); match(input, Token.UP, null); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return value; } // $ANTLR end "access_list" public static class fields_return extends TreeRuleReturnScope { public List<ClassDataItem.EncodedField> staticFields; public List<ClassDataItem.EncodedField> instanceFields; public List<ClassDefItem.StaticFieldInitializer> staticFieldInitialValues; public List<AnnotationDirectoryItem.FieldAnnotation> fieldAnnotations; }; // $ANTLR start "fields" // org/jf/smali/smaliTreeWalker.g:250:1: fields returns [List<ClassDataItem.EncodedField> staticFields, List<ClassDataItem.EncodedField> instanceFields,\n\t List<ClassDefItem.StaticFieldInitializer> staticFieldInitialValues, List<AnnotationDirectoryItem.FieldAnnotation> fieldAnnotations] : ^( I_FIELDS ( field )* ) ; public final smaliTreeWalker.fields_return fields() throws RecognitionException { smaliTreeWalker.fields_return retval = new smaliTreeWalker.fields_return(); retval.start = input.LT(1); smaliTreeWalker.field_return field16 = null; retval.staticFields = new LinkedList<ClassDataItem.EncodedField>(); retval.instanceFields = new LinkedList<ClassDataItem.EncodedField>(); retval.staticFieldInitialValues = new LinkedList<ClassDefItem.StaticFieldInitializer>(); try { // org/jf/smali/smaliTreeWalker.g:258:2: ( ^( I_FIELDS ( field )* ) ) // org/jf/smali/smaliTreeWalker.g:258:4: ^( I_FIELDS ( field )* ) { match(input,I_FIELDS,FOLLOW_I_FIELDS_in_fields271); if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); // org/jf/smali/smaliTreeWalker.g:259:4: ( field )* loop5: do { int alt5=2; switch ( input.LA(1) ) { case I_FIELD: { alt5=1; } break; } switch (alt5) { case 1 : // org/jf/smali/smaliTreeWalker.g:259:5: field { pushFollow(FOLLOW_field_in_fields277); field16=field(); state._fsp--; if ((field16!=null?field16.encodedField:null).isStatic()) { retval.staticFields.add((field16!=null?field16.encodedField:null)); retval.staticFieldInitialValues.add(new ClassDefItem.StaticFieldInitializer( (field16!=null?field16.encodedValue:null), (field16!=null?field16.encodedField:null))); } else { retval.instanceFields.add((field16!=null?field16.encodedField:null)); } if ((field16!=null?field16.fieldAnnotationSet:null) != null) { if (retval.fieldAnnotations == null) { retval.fieldAnnotations = new LinkedList<AnnotationDirectoryItem.FieldAnnotation>(); } AnnotationDirectoryItem.FieldAnnotation fieldAnnotation = new AnnotationDirectoryItem.FieldAnnotation( (field16!=null?field16.encodedField:null).field, (field16!=null?field16.fieldAnnotationSet:null)); retval.fieldAnnotations.add(fieldAnnotation); } } break; default : break loop5; } } while (true); match(input, Token.UP, null); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return retval; } // $ANTLR end "fields" public static class methods_return extends TreeRuleReturnScope { public List<ClassDataItem.EncodedMethod> directMethods; public List<ClassDataItem.EncodedMethod> virtualMethods; public List<AnnotationDirectoryItem.MethodAnnotation> methodAnnotations; public List<AnnotationDirectoryItem.ParameterAnnotation> parameterAnnotations; }; // $ANTLR start "methods" // org/jf/smali/smaliTreeWalker.g:278:1: methods returns [List<ClassDataItem.EncodedMethod> directMethods,\n\t\tList<ClassDataItem.EncodedMethod> virtualMethods,\n\t\tList<AnnotationDirectoryItem.MethodAnnotation> methodAnnotations,\n\t\tList<AnnotationDirectoryItem.ParameterAnnotation> parameterAnnotations] : ^( I_METHODS ( method )* ) ; public final smaliTreeWalker.methods_return methods() throws RecognitionException { smaliTreeWalker.methods_return retval = new smaliTreeWalker.methods_return(); retval.start = input.LT(1); smaliTreeWalker.method_return method17 = null; retval.directMethods = new LinkedList<ClassDataItem.EncodedMethod>(); retval.virtualMethods = new LinkedList<ClassDataItem.EncodedMethod>(); try { // org/jf/smali/smaliTreeWalker.g:287:2: ( ^( I_METHODS ( method )* ) ) // org/jf/smali/smaliTreeWalker.g:287:4: ^( I_METHODS ( method )* ) { match(input,I_METHODS,FOLLOW_I_METHODS_in_methods305); if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); // org/jf/smali/smaliTreeWalker.g:288:4: ( method )* loop6: do { int alt6=2; switch ( input.LA(1) ) { case I_METHOD: { alt6=1; } break; } switch (alt6) { case 1 : // org/jf/smali/smaliTreeWalker.g:288:5: method { pushFollow(FOLLOW_method_in_methods311); method17=method(); state._fsp--; if ((method17!=null?method17.encodedMethod:null).isDirect()) { retval.directMethods.add((method17!=null?method17.encodedMethod:null)); } else { retval.virtualMethods.add((method17!=null?method17.encodedMethod:null)); } if ((method17!=null?method17.methodAnnotationSet:null) != null) { if (retval.methodAnnotations == null) { retval.methodAnnotations = new LinkedList<AnnotationDirectoryItem.MethodAnnotation>(); } AnnotationDirectoryItem.MethodAnnotation methodAnnotation = new AnnotationDirectoryItem.MethodAnnotation((method17!=null?method17.encodedMethod:null).method, (method17!=null?method17.methodAnnotationSet:null)); retval.methodAnnotations.add(methodAnnotation); } if ((method17!=null?method17.parameterAnnotationSets:null) != null) { if (retval.parameterAnnotations == null) { retval.parameterAnnotations = new LinkedList<AnnotationDirectoryItem.ParameterAnnotation>(); } AnnotationDirectoryItem.ParameterAnnotation parameterAnnotation = new AnnotationDirectoryItem.ParameterAnnotation((method17!=null?method17.encodedMethod:null).method, (method17!=null?method17.parameterAnnotationSets:null)); retval.parameterAnnotations.add(parameterAnnotation); } } break; default : break loop6; } } while (true); match(input, Token.UP, null); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return retval; } // $ANTLR end "methods" public static class field_return extends TreeRuleReturnScope { public ClassDataItem.EncodedField encodedField; public EncodedValue encodedValue; public AnnotationSetItem fieldAnnotationSet; }; // $ANTLR start "field" // org/jf/smali/smaliTreeWalker.g:314:1: field returns [ClassDataItem.EncodedField encodedField, EncodedValue encodedValue, AnnotationSetItem fieldAnnotationSet] : ^( I_FIELD SIMPLE_NAME access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) field_initial_value ( annotations )? ) ; public final smaliTreeWalker.field_return field() throws RecognitionException { smaliTreeWalker.field_return retval = new smaliTreeWalker.field_return(); retval.start = input.LT(1); CommonTree SIMPLE_NAME18=null; smaliTreeWalker.nonvoid_type_descriptor_return nonvoid_type_descriptor19 = null; int access_list20 = 0; EncodedValue field_initial_value21 = null; AnnotationSetItem annotations22 = null; try { // org/jf/smali/smaliTreeWalker.g:315:2: ( ^( I_FIELD SIMPLE_NAME access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) field_initial_value ( annotations )? ) ) // org/jf/smali/smaliTreeWalker.g:315:3: ^( I_FIELD SIMPLE_NAME access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) field_initial_value ( annotations )? ) { match(input,I_FIELD,FOLLOW_I_FIELD_in_field332); match(input, Token.DOWN, null); SIMPLE_NAME18=(CommonTree)match(input,SIMPLE_NAME,FOLLOW_SIMPLE_NAME_in_field334); pushFollow(FOLLOW_access_list_in_field336); access_list20=access_list(); state._fsp--; match(input,I_FIELD_TYPE,FOLLOW_I_FIELD_TYPE_in_field339); match(input, Token.DOWN, null); pushFollow(FOLLOW_nonvoid_type_descriptor_in_field341); nonvoid_type_descriptor19=nonvoid_type_descriptor(); state._fsp--; match(input, Token.UP, null); pushFollow(FOLLOW_field_initial_value_in_field344); field_initial_value21=field_initial_value(); state._fsp--; // org/jf/smali/smaliTreeWalker.g:315:97: ( annotations )? int alt7=2; switch ( input.LA(1) ) { case I_ANNOTATIONS: { alt7=1; } break; } switch (alt7) { case 1 : // org/jf/smali/smaliTreeWalker.g:315:97: annotations { pushFollow(FOLLOW_annotations_in_field346); annotations22=annotations(); state._fsp--; } break; } match(input, Token.UP, null); StringIdItem memberName = StringIdItem.internStringIdItem(dexFile, (SIMPLE_NAME18!=null?SIMPLE_NAME18.getText():null)); TypeIdItem fieldType = (nonvoid_type_descriptor19!=null?nonvoid_type_descriptor19.type:null); FieldIdItem fieldIdItem = FieldIdItem.internFieldIdItem(dexFile, classType, fieldType, memberName); retval.encodedField = new ClassDataItem.EncodedField(fieldIdItem, access_list20); if (field_initial_value21 != null) { if (!retval.encodedField.isStatic()) { throw new SemanticException(input, "Initial field values can only be specified for static fields."); } retval.encodedValue = field_initial_value21; } else { retval.encodedValue = null; } if (annotations22 != null) { retval.fieldAnnotationSet = annotations22; } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return retval; } // $ANTLR end "field" // $ANTLR start "field_initial_value" // org/jf/smali/smaliTreeWalker.g:339:1: field_initial_value returns [EncodedValue encodedValue] : ( ^( I_FIELD_INITIAL_VALUE literal ) | ); public final EncodedValue field_initial_value() throws RecognitionException { EncodedValue encodedValue = null; EncodedValue literal23 = null; try { // org/jf/smali/smaliTreeWalker.g:340:2: ( ^( I_FIELD_INITIAL_VALUE literal ) | ) int alt8=2; switch ( input.LA(1) ) { case I_FIELD_INITIAL_VALUE: { alt8=1; } break; case UP: case I_ANNOTATIONS: { alt8=2; } break; default: NoViableAltException nvae = new NoViableAltException("", 8, 0, input); throw nvae; } switch (alt8) { case 1 : // org/jf/smali/smaliTreeWalker.g:340:4: ^( I_FIELD_INITIAL_VALUE literal ) { match(input,I_FIELD_INITIAL_VALUE,FOLLOW_I_FIELD_INITIAL_VALUE_in_field_initial_value365); match(input, Token.DOWN, null); pushFollow(FOLLOW_literal_in_field_initial_value367); literal23=literal(); state._fsp--; match(input, Token.UP, null); encodedValue = literal23; } break; case 2 : // org/jf/smali/smaliTreeWalker.g:341:4: { } break; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return encodedValue; } // $ANTLR end "field_initial_value" // $ANTLR start "literal" // org/jf/smali/smaliTreeWalker.g:343:1: literal returns [EncodedValue encodedValue] : ( integer_literal | long_literal | short_literal | byte_literal | float_literal | double_literal | char_literal | string_literal | bool_literal | NULL_LITERAL | type_descriptor | array_literal | subannotation | field_literal | method_literal | enum_literal ); public final EncodedValue literal() throws RecognitionException { EncodedValue encodedValue = null; int integer_literal24 = 0; long long_literal25 = 0; short short_literal26 = 0; byte byte_literal27 = 0; float float_literal28 = 0.0f; double double_literal29 = 0.0; char char_literal30 = 0; String string_literal31 = null; boolean bool_literal32 = false; TypeIdItem type_descriptor33 = null; EncodedValue[] array_literal34 = null; smaliTreeWalker.subannotation_return subannotation35 = null; FieldIdItem field_literal36 = null; MethodIdItem method_literal37 = null; FieldIdItem enum_literal38 = null; try { // org/jf/smali/smaliTreeWalker.g:344:2: ( integer_literal | long_literal | short_literal | byte_literal | float_literal | double_literal | char_literal | string_literal | bool_literal | NULL_LITERAL | type_descriptor | array_literal | subannotation | field_literal | method_literal | enum_literal ) int alt9=16; switch ( input.LA(1) ) { case INTEGER_LITERAL: { alt9=1; } break; case LONG_LITERAL: { alt9=2; } break; case SHORT_LITERAL: { alt9=3; } break; case BYTE_LITERAL: { alt9=4; } break; case FLOAT_LITERAL: { alt9=5; } break; case DOUBLE_LITERAL: { alt9=6; } break; case CHAR_LITERAL: { alt9=7; } break; case STRING_LITERAL: { alt9=8; } break; case BOOL_LITERAL: { alt9=9; } break; case NULL_LITERAL: { alt9=10; } break; case PRIMITIVE_TYPE: case VOID_TYPE: case CLASS_DESCRIPTOR: case ARRAY_DESCRIPTOR: { alt9=11; } break; case I_ENCODED_ARRAY: { alt9=12; } break; case I_SUBANNOTATION: { alt9=13; } break; case I_ENCODED_FIELD: { alt9=14; } break; case I_ENCODED_METHOD: { alt9=15; } break; case I_ENCODED_ENUM: { alt9=16; } break; default: NoViableAltException nvae = new NoViableAltException("", 9, 0, input); throw nvae; } switch (alt9) { case 1 : // org/jf/smali/smaliTreeWalker.g:344:4: integer_literal { pushFollow(FOLLOW_integer_literal_in_literal386); integer_literal24=integer_literal(); state._fsp--; encodedValue = new IntEncodedValue(integer_literal24); } break; case 2 : // org/jf/smali/smaliTreeWalker.g:345:4: long_literal { pushFollow(FOLLOW_long_literal_in_literal393); long_literal25=long_literal(); state._fsp--; encodedValue = new LongEncodedValue(long_literal25); } break; case 3 : // org/jf/smali/smaliTreeWalker.g:346:4: short_literal { pushFollow(FOLLOW_short_literal_in_literal400); short_literal26=short_literal(); state._fsp--; encodedValue = new ShortEncodedValue(short_literal26); } break; case 4 : // org/jf/smali/smaliTreeWalker.g:347:4: byte_literal { pushFollow(FOLLOW_byte_literal_in_literal407); byte_literal27=byte_literal(); state._fsp--; encodedValue = new ByteEncodedValue(byte_literal27); } break; case 5 : // org/jf/smali/smaliTreeWalker.g:348:4: float_literal { pushFollow(FOLLOW_float_literal_in_literal414); float_literal28=float_literal(); state._fsp--; encodedValue = new FloatEncodedValue(float_literal28); } break; case 6 : // org/jf/smali/smaliTreeWalker.g:349:4: double_literal { pushFollow(FOLLOW_double_literal_in_literal421); double_literal29=double_literal(); state._fsp--; encodedValue = new DoubleEncodedValue(double_literal29); } break; case 7 : // org/jf/smali/smaliTreeWalker.g:350:4: char_literal { pushFollow(FOLLOW_char_literal_in_literal428); char_literal30=char_literal(); state._fsp--; encodedValue = new CharEncodedValue(char_literal30); } break; case 8 : // org/jf/smali/smaliTreeWalker.g:351:4: string_literal { pushFollow(FOLLOW_string_literal_in_literal435); string_literal31=string_literal(); state._fsp--; encodedValue = new StringEncodedValue(StringIdItem.internStringIdItem(dexFile, string_literal31)); } break; case 9 : // org/jf/smali/smaliTreeWalker.g:352:4: bool_literal { pushFollow(FOLLOW_bool_literal_in_literal442); bool_literal32=bool_literal(); state._fsp--; encodedValue = bool_literal32?BooleanEncodedValue.TrueValue:BooleanEncodedValue.FalseValue; } break; case 10 : // org/jf/smali/smaliTreeWalker.g:353:4: NULL_LITERAL { match(input,NULL_LITERAL,FOLLOW_NULL_LITERAL_in_literal449); encodedValue = NullEncodedValue.NullValue; } break; case 11 : // org/jf/smali/smaliTreeWalker.g:354:4: type_descriptor { pushFollow(FOLLOW_type_descriptor_in_literal456); type_descriptor33=type_descriptor(); state._fsp--; encodedValue = new TypeEncodedValue(type_descriptor33); } break; case 12 : // org/jf/smali/smaliTreeWalker.g:355:4: array_literal { pushFollow(FOLLOW_array_literal_in_literal463); array_literal34=array_literal(); state._fsp--; encodedValue = new ArrayEncodedValue(array_literal34); } break; case 13 : // org/jf/smali/smaliTreeWalker.g:356:4: subannotation { pushFollow(FOLLOW_subannotation_in_literal470); subannotation35=subannotation(); state._fsp--; encodedValue = new AnnotationEncodedValue((subannotation35!=null?subannotation35.annotationType:null), (subannotation35!=null?subannotation35.elementNames:null), (subannotation35!=null?subannotation35.elementValues:null)); } break; case 14 : // org/jf/smali/smaliTreeWalker.g:357:4: field_literal { pushFollow(FOLLOW_field_literal_in_literal477); field_literal36=field_literal(); state._fsp--; encodedValue = new FieldEncodedValue(field_literal36); } break; case 15 : // org/jf/smali/smaliTreeWalker.g:358:4: method_literal { pushFollow(FOLLOW_method_literal_in_literal484); method_literal37=method_literal(); state._fsp--; encodedValue = new MethodEncodedValue(method_literal37); } break; case 16 : // org/jf/smali/smaliTreeWalker.g:359:4: enum_literal { pushFollow(FOLLOW_enum_literal_in_literal491); enum_literal38=enum_literal(); state._fsp--; encodedValue = new EnumEncodedValue(enum_literal38); } break; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return encodedValue; } // $ANTLR end "literal" // $ANTLR start "fixed_size_literal" // org/jf/smali/smaliTreeWalker.g:363:1: fixed_size_literal returns [byte[] value] : ( integer_literal | long_literal | short_literal | byte_literal | float_literal | double_literal | char_literal | bool_literal ); public final byte[] fixed_size_literal() throws RecognitionException { byte[] value = null; int integer_literal39 = 0; long long_literal40 = 0; short short_literal41 = 0; byte byte_literal42 = 0; float float_literal43 = 0.0f; double double_literal44 = 0.0; char char_literal45 = 0; boolean bool_literal46 = false; try { // org/jf/smali/smaliTreeWalker.g:364:2: ( integer_literal | long_literal | short_literal | byte_literal | float_literal | double_literal | char_literal | bool_literal ) int alt10=8; switch ( input.LA(1) ) { case INTEGER_LITERAL: { alt10=1; } break; case LONG_LITERAL: { alt10=2; } break; case SHORT_LITERAL: { alt10=3; } break; case BYTE_LITERAL: { alt10=4; } break; case FLOAT_LITERAL: { alt10=5; } break; case DOUBLE_LITERAL: { alt10=6; } break; case CHAR_LITERAL: { alt10=7; } break; case BOOL_LITERAL: { alt10=8; } break; default: NoViableAltException nvae = new NoViableAltException("", 10, 0, input); throw nvae; } switch (alt10) { case 1 : // org/jf/smali/smaliTreeWalker.g:364:4: integer_literal { pushFollow(FOLLOW_integer_literal_in_fixed_size_literal507); integer_literal39=integer_literal(); state._fsp--; value = literalTools.intToBytes(integer_literal39); } break; case 2 : // org/jf/smali/smaliTreeWalker.g:365:4: long_literal { pushFollow(FOLLOW_long_literal_in_fixed_size_literal514); long_literal40=long_literal(); state._fsp--; value = literalTools.longToBytes(long_literal40); } break; case 3 : // org/jf/smali/smaliTreeWalker.g:366:4: short_literal { pushFollow(FOLLOW_short_literal_in_fixed_size_literal521); short_literal41=short_literal(); state._fsp--; value = literalTools.shortToBytes(short_literal41); } break; case 4 : // org/jf/smali/smaliTreeWalker.g:367:4: byte_literal { pushFollow(FOLLOW_byte_literal_in_fixed_size_literal528); byte_literal42=byte_literal(); state._fsp--; value = new byte[] { byte_literal42 }; } break; case 5 : // org/jf/smali/smaliTreeWalker.g:368:4: float_literal { pushFollow(FOLLOW_float_literal_in_fixed_size_literal535); float_literal43=float_literal(); state._fsp--; value = literalTools.floatToBytes(float_literal43); } break; case 6 : // org/jf/smali/smaliTreeWalker.g:369:4: double_literal { pushFollow(FOLLOW_double_literal_in_fixed_size_literal542); double_literal44=double_literal(); state._fsp--; value = literalTools.doubleToBytes(double_literal44); } break; case 7 : // org/jf/smali/smaliTreeWalker.g:370:4: char_literal { pushFollow(FOLLOW_char_literal_in_fixed_size_literal549); char_literal45=char_literal(); state._fsp--; value = literalTools.charToBytes(char_literal45); } break; case 8 : // org/jf/smali/smaliTreeWalker.g:371:4: bool_literal { pushFollow(FOLLOW_bool_literal_in_fixed_size_literal556); bool_literal46=bool_literal(); state._fsp--; value = literalTools.boolToBytes(bool_literal46); } break; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return value; } // $ANTLR end "fixed_size_literal" // $ANTLR start "fixed_64bit_literal" // org/jf/smali/smaliTreeWalker.g:374:1: fixed_64bit_literal returns [long value] : ( integer_literal | long_literal | short_literal | byte_literal | float_literal | double_literal | char_literal | bool_literal ); public final long fixed_64bit_literal() throws RecognitionException { long value = 0; int integer_literal47 = 0; long long_literal48 = 0; short short_literal49 = 0; byte byte_literal50 = 0; float float_literal51 = 0.0f; double double_literal52 = 0.0; char char_literal53 = 0; boolean bool_literal54 = false; try { // org/jf/smali/smaliTreeWalker.g:375:2: ( integer_literal | long_literal | short_literal | byte_literal | float_literal | double_literal | char_literal | bool_literal ) int alt11=8; switch ( input.LA(1) ) { case INTEGER_LITERAL: { alt11=1; } break; case LONG_LITERAL: { alt11=2; } break; case SHORT_LITERAL: { alt11=3; } break; case BYTE_LITERAL: { alt11=4; } break; case FLOAT_LITERAL: { alt11=5; } break; case DOUBLE_LITERAL: { alt11=6; } break; case CHAR_LITERAL: { alt11=7; } break; case BOOL_LITERAL: { alt11=8; } break; default: NoViableAltException nvae = new NoViableAltException("", 11, 0, input); throw nvae; } switch (alt11) { case 1 : // org/jf/smali/smaliTreeWalker.g:375:4: integer_literal { pushFollow(FOLLOW_integer_literal_in_fixed_64bit_literal571); integer_literal47=integer_literal(); state._fsp--; value = integer_literal47; } break; case 2 : // org/jf/smali/smaliTreeWalker.g:376:4: long_literal { pushFollow(FOLLOW_long_literal_in_fixed_64bit_literal578); long_literal48=long_literal(); state._fsp--; value = long_literal48; } break; case 3 : // org/jf/smali/smaliTreeWalker.g:377:4: short_literal { pushFollow(FOLLOW_short_literal_in_fixed_64bit_literal585); short_literal49=short_literal(); state._fsp--; value = short_literal49; } break; case 4 : // org/jf/smali/smaliTreeWalker.g:378:4: byte_literal { pushFollow(FOLLOW_byte_literal_in_fixed_64bit_literal592); byte_literal50=byte_literal(); state._fsp--; value = byte_literal50; } break; case 5 : // org/jf/smali/smaliTreeWalker.g:379:4: float_literal { pushFollow(FOLLOW_float_literal_in_fixed_64bit_literal599); float_literal51=float_literal(); state._fsp--; value = Float.floatToRawIntBits(float_literal51); } break; case 6 : // org/jf/smali/smaliTreeWalker.g:380:4: double_literal { pushFollow(FOLLOW_double_literal_in_fixed_64bit_literal606); double_literal52=double_literal(); state._fsp--; value = Double.doubleToRawLongBits(double_literal52); } break; case 7 : // org/jf/smali/smaliTreeWalker.g:381:4: char_literal { pushFollow(FOLLOW_char_literal_in_fixed_64bit_literal613); char_literal53=char_literal(); state._fsp--; value = char_literal53; } break; case 8 : // org/jf/smali/smaliTreeWalker.g:382:4: bool_literal { pushFollow(FOLLOW_bool_literal_in_fixed_64bit_literal620); bool_literal54=bool_literal(); state._fsp--; value = bool_literal54?1:0; } break; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return value; } // $ANTLR end "fixed_64bit_literal" // $ANTLR start "fixed_32bit_literal" // org/jf/smali/smaliTreeWalker.g:386:1: fixed_32bit_literal returns [int value] : ( integer_literal | long_literal | short_literal | byte_literal | float_literal | char_literal | bool_literal ); public final int fixed_32bit_literal() throws RecognitionException { int value = 0; int integer_literal55 = 0; long long_literal56 = 0; short short_literal57 = 0; byte byte_literal58 = 0; float float_literal59 = 0.0f; char char_literal60 = 0; boolean bool_literal61 = false; try { // org/jf/smali/smaliTreeWalker.g:387:2: ( integer_literal | long_literal | short_literal | byte_literal | float_literal | char_literal | bool_literal ) int alt12=7; switch ( input.LA(1) ) { case INTEGER_LITERAL: { alt12=1; } break; case LONG_LITERAL: { alt12=2; } break; case SHORT_LITERAL: { alt12=3; } break; case BYTE_LITERAL: { alt12=4; } break; case FLOAT_LITERAL: { alt12=5; } break; case CHAR_LITERAL: { alt12=6; } break; case BOOL_LITERAL: { alt12=7; } break; default: NoViableAltException nvae = new NoViableAltException("", 12, 0, input); throw nvae; } switch (alt12) { case 1 : // org/jf/smali/smaliTreeWalker.g:387:4: integer_literal { pushFollow(FOLLOW_integer_literal_in_fixed_32bit_literal636); integer_literal55=integer_literal(); state._fsp--; value = integer_literal55; } break; case 2 : // org/jf/smali/smaliTreeWalker.g:388:4: long_literal { pushFollow(FOLLOW_long_literal_in_fixed_32bit_literal643); long_literal56=long_literal(); state._fsp--; literalTools.checkInt(long_literal56); value = (int)long_literal56; } break; case 3 : // org/jf/smali/smaliTreeWalker.g:389:4: short_literal { pushFollow(FOLLOW_short_literal_in_fixed_32bit_literal650); short_literal57=short_literal(); state._fsp--; value = short_literal57; } break; case 4 : // org/jf/smali/smaliTreeWalker.g:390:4: byte_literal { pushFollow(FOLLOW_byte_literal_in_fixed_32bit_literal657); byte_literal58=byte_literal(); state._fsp--; value = byte_literal58; } break; case 5 : // org/jf/smali/smaliTreeWalker.g:391:4: float_literal { pushFollow(FOLLOW_float_literal_in_fixed_32bit_literal664); float_literal59=float_literal(); state._fsp--; value = Float.floatToRawIntBits(float_literal59); } break; case 6 : // org/jf/smali/smaliTreeWalker.g:392:4: char_literal { pushFollow(FOLLOW_char_literal_in_fixed_32bit_literal671); char_literal60=char_literal(); state._fsp--; value = char_literal60; } break; case 7 : // org/jf/smali/smaliTreeWalker.g:393:4: bool_literal { pushFollow(FOLLOW_bool_literal_in_fixed_32bit_literal678); bool_literal61=bool_literal(); state._fsp--; value = bool_literal61?1:0; } break; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return value; } // $ANTLR end "fixed_32bit_literal" // $ANTLR start "array_elements" // org/jf/smali/smaliTreeWalker.g:395:1: array_elements returns [List<byte[]> values] : ^( I_ARRAY_ELEMENTS ( fixed_size_literal )* ) ; public final List<byte[]> array_elements() throws RecognitionException { List<byte[]> values = null; byte[] fixed_size_literal62 = null; try { // org/jf/smali/smaliTreeWalker.g:396:2: ( ^( I_ARRAY_ELEMENTS ( fixed_size_literal )* ) ) // org/jf/smali/smaliTreeWalker.g:396:4: ^( I_ARRAY_ELEMENTS ( fixed_size_literal )* ) { values = new ArrayList<byte[]>(); match(input,I_ARRAY_ELEMENTS,FOLLOW_I_ARRAY_ELEMENTS_in_array_elements697); if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); // org/jf/smali/smaliTreeWalker.g:398:4: ( fixed_size_literal )* loop13: do { int alt13=2; switch ( input.LA(1) ) { case LONG_LITERAL: case SHORT_LITERAL: case BYTE_LITERAL: case FLOAT_LITERAL: case DOUBLE_LITERAL: case BOOL_LITERAL: case CHAR_LITERAL: case INTEGER_LITERAL: { alt13=1; } break; } switch (alt13) { case 1 : // org/jf/smali/smaliTreeWalker.g:398:5: fixed_size_literal { pushFollow(FOLLOW_fixed_size_literal_in_array_elements703); fixed_size_literal62=fixed_size_literal(); state._fsp--; values.add(fixed_size_literal62); } break; default : break loop13; } } while (true); match(input, Token.UP, null); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return values; } // $ANTLR end "array_elements" // $ANTLR start "packed_switch_target_count" // org/jf/smali/smaliTreeWalker.g:403:1: packed_switch_target_count returns [int targetCount] : I_PACKED_SWITCH_TARGET_COUNT ; public final int packed_switch_target_count() throws RecognitionException { int targetCount = 0; CommonTree I_PACKED_SWITCH_TARGET_COUNT63=null; try { // org/jf/smali/smaliTreeWalker.g:404:2: ( I_PACKED_SWITCH_TARGET_COUNT ) // org/jf/smali/smaliTreeWalker.g:404:4: I_PACKED_SWITCH_TARGET_COUNT { I_PACKED_SWITCH_TARGET_COUNT63=(CommonTree)match(input,I_PACKED_SWITCH_TARGET_COUNT,FOLLOW_I_PACKED_SWITCH_TARGET_COUNT_in_packed_switch_target_count723); targetCount = Integer.parseInt((I_PACKED_SWITCH_TARGET_COUNT63!=null?I_PACKED_SWITCH_TARGET_COUNT63.getText():null)); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return targetCount; } // $ANTLR end "packed_switch_target_count" // $ANTLR start "packed_switch_targets" // org/jf/smali/smaliTreeWalker.g:406:1: packed_switch_targets[int baseAddress] returns [int[] targets] : ^( I_PACKED_SWITCH_TARGETS packed_switch_target_count ( offset_or_label )* ) ; public final int[] packed_switch_targets(int baseAddress) throws RecognitionException { int[] targets = null; int packed_switch_target_count64 = 0; smaliTreeWalker.offset_or_label_return offset_or_label65 = null; try { // org/jf/smali/smaliTreeWalker.g:407:2: ( ^( I_PACKED_SWITCH_TARGETS packed_switch_target_count ( offset_or_label )* ) ) // org/jf/smali/smaliTreeWalker.g:408:3: ^( I_PACKED_SWITCH_TARGETS packed_switch_target_count ( offset_or_label )* ) { match(input,I_PACKED_SWITCH_TARGETS,FOLLOW_I_PACKED_SWITCH_TARGETS_in_packed_switch_targets741); match(input, Token.DOWN, null); pushFollow(FOLLOW_packed_switch_target_count_in_packed_switch_targets746); packed_switch_target_count64=packed_switch_target_count(); state._fsp--; int targetCount = packed_switch_target_count64; targets = new int[targetCount]; int targetsPosition = 0; // org/jf/smali/smaliTreeWalker.g:416:4: ( offset_or_label )* loop14: do { int alt14=2; switch ( input.LA(1) ) { case OFFSET: case SIMPLE_NAME: { alt14=1; } break; } switch (alt14) { case 1 : // org/jf/smali/smaliTreeWalker.g:416:5: offset_or_label { pushFollow(FOLLOW_offset_or_label_in_packed_switch_targets758); offset_or_label65=offset_or_label(); state._fsp--; targets[targetsPosition++] = (((method_scope)method_stack.peek()).currentAddress + (offset_or_label65!=null?offset_or_label65.offsetValue:0)) - baseAddress; } break; default : break loop14; } } while (true); match(input, Token.UP, null); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return targets; } // $ANTLR end "packed_switch_targets" // $ANTLR start "sparse_switch_target_count" // org/jf/smali/smaliTreeWalker.g:422:1: sparse_switch_target_count returns [int targetCount] : I_SPARSE_SWITCH_TARGET_COUNT ; public final int sparse_switch_target_count() throws RecognitionException { int targetCount = 0; CommonTree I_SPARSE_SWITCH_TARGET_COUNT66=null; try { // org/jf/smali/smaliTreeWalker.g:423:2: ( I_SPARSE_SWITCH_TARGET_COUNT ) // org/jf/smali/smaliTreeWalker.g:423:4: I_SPARSE_SWITCH_TARGET_COUNT { I_SPARSE_SWITCH_TARGET_COUNT66=(CommonTree)match(input,I_SPARSE_SWITCH_TARGET_COUNT,FOLLOW_I_SPARSE_SWITCH_TARGET_COUNT_in_sparse_switch_target_count781); targetCount = Integer.parseInt((I_SPARSE_SWITCH_TARGET_COUNT66!=null?I_SPARSE_SWITCH_TARGET_COUNT66.getText():null)); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return targetCount; } // $ANTLR end "sparse_switch_target_count" // $ANTLR start "sparse_switch_keys" // org/jf/smali/smaliTreeWalker.g:425:1: sparse_switch_keys[int targetCount] returns [int[] keys] : ^( I_SPARSE_SWITCH_KEYS ( fixed_32bit_literal )* ) ; public final int[] sparse_switch_keys(int targetCount) throws RecognitionException { int[] keys = null; int fixed_32bit_literal67 = 0; try { // org/jf/smali/smaliTreeWalker.g:426:2: ( ^( I_SPARSE_SWITCH_KEYS ( fixed_32bit_literal )* ) ) // org/jf/smali/smaliTreeWalker.g:426:4: ^( I_SPARSE_SWITCH_KEYS ( fixed_32bit_literal )* ) { keys = new int[targetCount]; int keysPosition = 0; match(input,I_SPARSE_SWITCH_KEYS,FOLLOW_I_SPARSE_SWITCH_KEYS_in_sparse_switch_keys801); if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); // org/jf/smali/smaliTreeWalker.g:431:4: ( fixed_32bit_literal )* loop15: do { int alt15=2; switch ( input.LA(1) ) { case LONG_LITERAL: case SHORT_LITERAL: case BYTE_LITERAL: case FLOAT_LITERAL: case BOOL_LITERAL: case CHAR_LITERAL: case INTEGER_LITERAL: { alt15=1; } break; } switch (alt15) { case 1 : // org/jf/smali/smaliTreeWalker.g:431:5: fixed_32bit_literal { pushFollow(FOLLOW_fixed_32bit_literal_in_sparse_switch_keys807); fixed_32bit_literal67=fixed_32bit_literal(); state._fsp--; keys[keysPosition++] = fixed_32bit_literal67; } break; default : break loop15; } } while (true); match(input, Token.UP, null); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return keys; } // $ANTLR end "sparse_switch_keys" // $ANTLR start "sparse_switch_targets" // org/jf/smali/smaliTreeWalker.g:438:1: sparse_switch_targets[int baseAddress, int targetCount] returns [int[] targets] : ^( I_SPARSE_SWITCH_TARGETS ( offset_or_label )* ) ; public final int[] sparse_switch_targets(int baseAddress, int targetCount) throws RecognitionException { int[] targets = null; smaliTreeWalker.offset_or_label_return offset_or_label68 = null; try { // org/jf/smali/smaliTreeWalker.g:439:2: ( ^( I_SPARSE_SWITCH_TARGETS ( offset_or_label )* ) ) // org/jf/smali/smaliTreeWalker.g:439:4: ^( I_SPARSE_SWITCH_TARGETS ( offset_or_label )* ) { targets = new int[targetCount]; int targetsPosition = 0; match(input,I_SPARSE_SWITCH_TARGETS,FOLLOW_I_SPARSE_SWITCH_TARGETS_in_sparse_switch_targets837); if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); // org/jf/smali/smaliTreeWalker.g:444:4: ( offset_or_label )* loop16: do { int alt16=2; switch ( input.LA(1) ) { case OFFSET: case SIMPLE_NAME: { alt16=1; } break; } switch (alt16) { case 1 : // org/jf/smali/smaliTreeWalker.g:444:5: offset_or_label { pushFollow(FOLLOW_offset_or_label_in_sparse_switch_targets843); offset_or_label68=offset_or_label(); state._fsp--; targets[targetsPosition++] = (((method_scope)method_stack.peek()).currentAddress + (offset_or_label68!=null?offset_or_label68.offsetValue:0)) - baseAddress; } break; default : break loop16; } } while (true); match(input, Token.UP, null); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return targets; } // $ANTLR end "sparse_switch_targets" protected static class method_scope { HashMap<String, Integer> labels; TryListBuilder tryList; int currentAddress; DebugInfoBuilder debugInfo; HashMap<Integer, Integer> packedSwitchDeclarations; HashMap<Integer, Integer> sparseSwitchDeclarations; } protected Stack method_stack = new Stack(); public static class method_return extends TreeRuleReturnScope { public ClassDataItem.EncodedMethod encodedMethod; public AnnotationSetItem methodAnnotationSet; public AnnotationSetRefList parameterAnnotationSets; }; // $ANTLR start "method" // org/jf/smali/smaliTreeWalker.g:450:1: method returns [\tClassDataItem.EncodedMethod encodedMethod,\n\t\tAnnotationSetItem methodAnnotationSet,\n\t\tAnnotationSetRefList parameterAnnotationSets] : ^( I_METHOD method_name_and_prototype access_list ( registers_directive )? labels packed_switch_declarations sparse_switch_declarations statements[totalMethodRegisters, methodParameterRegisters] catches parameters ordered_debug_directives[totalMethodRegisters, methodParameterRegisters] annotations ) ; public final smaliTreeWalker.method_return method() throws RecognitionException { method_stack.push(new method_scope()); smaliTreeWalker.method_return retval = new smaliTreeWalker.method_return(); retval.start = input.LT(1); CommonTree I_METHOD73=null; MethodIdItem method_name_and_prototype69 = null; int access_list70 = 0; smaliTreeWalker.registers_directive_return registers_directive71 = null; smaliTreeWalker.statements_return statements72 = null; AnnotationSetItem annotations74 = null; AnnotationSetRefList parameters75 = null; MethodIdItem methodIdItem = null; int totalMethodRegisters = 0; int methodParameterRegisters = 0; int accessFlags = 0; boolean isStatic = false; try { // org/jf/smali/smaliTreeWalker.g:470:2: ( ^( I_METHOD method_name_and_prototype access_list ( registers_directive )? labels packed_switch_declarations sparse_switch_declarations statements[totalMethodRegisters, methodParameterRegisters] catches parameters ordered_debug_directives[totalMethodRegisters, methodParameterRegisters] annotations ) ) // org/jf/smali/smaliTreeWalker.g:470:4: ^( I_METHOD method_name_and_prototype access_list ( registers_directive )? labels packed_switch_declarations sparse_switch_declarations statements[totalMethodRegisters, methodParameterRegisters] catches parameters ordered_debug_directives[totalMethodRegisters, methodParameterRegisters] annotations ) { ((method_scope)method_stack.peek()).labels = new HashMap<String, Integer>(); ((method_scope)method_stack.peek()).tryList = new TryListBuilder(); ((method_scope)method_stack.peek()).currentAddress = 0; ((method_scope)method_stack.peek()).debugInfo = new DebugInfoBuilder(); ((method_scope)method_stack.peek()).packedSwitchDeclarations = new HashMap<Integer, Integer>(); ((method_scope)method_stack.peek()).sparseSwitchDeclarations = new HashMap<Integer, Integer>(); I_METHOD73=(CommonTree)match(input,I_METHOD,FOLLOW_I_METHOD_in_method885); match(input, Token.DOWN, null); pushFollow(FOLLOW_method_name_and_prototype_in_method890); method_name_and_prototype69=method_name_and_prototype(); state._fsp--; pushFollow(FOLLOW_access_list_in_method895); access_list70=access_list(); state._fsp--; methodIdItem = method_name_and_prototype69; accessFlags = access_list70; isStatic = (accessFlags & AccessFlags.STATIC.getValue()) != 0; methodParameterRegisters = methodIdItem.getPrototype().getParameterRegisterCount(); if (!isStatic) { methodParameterRegisters++; } // org/jf/smali/smaliTreeWalker.g:490:4: ( registers_directive )? int alt17=2; switch ( input.LA(1) ) { case I_REGISTERS: case I_LOCALS: { alt17=1; } break; } switch (alt17) { case 1 : // org/jf/smali/smaliTreeWalker.g:490:6: registers_directive { pushFollow(FOLLOW_registers_directive_in_method907); registers_directive71=registers_directive(); state._fsp--; if ((registers_directive71!=null?registers_directive71.isLocalsDirective:false)) { totalMethodRegisters = (registers_directive71!=null?registers_directive71.registers:0) + methodParameterRegisters; } else { totalMethodRegisters = (registers_directive71!=null?registers_directive71.registers:0); } } break; } pushFollow(FOLLOW_labels_in_method924); labels(); state._fsp--; pushFollow(FOLLOW_packed_switch_declarations_in_method929); packed_switch_declarations(); state._fsp--; pushFollow(FOLLOW_sparse_switch_declarations_in_method934); sparse_switch_declarations(); state._fsp--; pushFollow(FOLLOW_statements_in_method939); statements72=statements(totalMethodRegisters, methodParameterRegisters); state._fsp--; pushFollow(FOLLOW_catches_in_method945); catches(); state._fsp--; pushFollow(FOLLOW_parameters_in_method950); parameters75=parameters(); state._fsp--; pushFollow(FOLLOW_ordered_debug_directives_in_method955); ordered_debug_directives(totalMethodRegisters, methodParameterRegisters); state._fsp--; pushFollow(FOLLOW_annotations_in_method961); annotations74=annotations(); state._fsp--; match(input, Token.UP, null); Pair<List<CodeItem.TryItem>, List<CodeItem.EncodedCatchHandler>> temp = ((method_scope)method_stack.peek()).tryList.encodeTries(); List<CodeItem.TryItem> tries = temp.first; List<CodeItem.EncodedCatchHandler> handlers = temp.second; DebugInfoItem debugInfoItem = ((method_scope)method_stack.peek()).debugInfo.encodeDebugInfo(dexFile); CodeItem codeItem; boolean isAbstract = false; boolean isNative = false; if ((accessFlags & AccessFlags.ABSTRACT.getValue()) != 0) { isAbstract = true; } else if ((accessFlags & AccessFlags.NATIVE.getValue()) != 0) { isNative = true; } if ((statements72!=null?statements72.instructions:null).size() == 0) { if (!isAbstract && !isNative) { throw new SemanticException(input, I_METHOD73, "A non-abstract/non-native method must have at least 1 instruction"); } String methodType; if (isAbstract) { methodType = "an abstract"; } else { methodType = "a native"; } if ((registers_directive71!=null?((CommonTree)registers_directive71.start):null) != null) { if ((registers_directive71!=null?registers_directive71.isLocalsDirective:false)) { throw new SemanticException(input, (registers_directive71!=null?((CommonTree)registers_directive71.start):null), "A .locals directive is not valid in %s method", methodType); } else { throw new SemanticException(input, (registers_directive71!=null?((CommonTree)registers_directive71.start):null), "A .registers directive is not valid in %s method", methodType); } } if (((method_scope)method_stack.peek()).labels.size() > 0) { throw new SemanticException(input, I_METHOD73, "Labels cannot be present in %s method", methodType); } if ((tries != null && tries.size() > 0) || (handlers != null && handlers.size() > 0)) { throw new SemanticException(input, I_METHOD73, "try/catch blocks cannot be present in %s method", methodType); } if (debugInfoItem != null) { throw new SemanticException(input, I_METHOD73, "debug directives cannot be present in %s method", methodType); } codeItem = null; } else { if (isAbstract) { throw new SemanticException(input, I_METHOD73, "An abstract method cannot have any instructions"); } if (isNative) { throw new SemanticException(input, I_METHOD73, "A native method cannot have any instructions"); } if ((registers_directive71!=null?((CommonTree)registers_directive71.start):null) == null) { throw new SemanticException(input, I_METHOD73, "A .registers or .locals directive must be present for a non-abstract/non-final method"); } if (totalMethodRegisters < methodParameterRegisters) { throw new SemanticException(input, (registers_directive71!=null?((CommonTree)registers_directive71.start):null), "This method requires at least " + Integer.toString(methodParameterRegisters) + " registers, for the method parameters"); } int methodParameterCount = methodIdItem.getPrototype().getParameterRegisterCount(); if (((method_scope)method_stack.peek()).debugInfo.getParameterNameCount() > methodParameterCount) { throw new SemanticException(input, I_METHOD73, "Too many parameter names specified. This method only has " + Integer.toString(methodParameterCount) + " parameters."); } codeItem = CodeItem.internCodeItem(dexFile, totalMethodRegisters, methodParameterRegisters, (statements72!=null?statements72.maxOutRegisters:0), debugInfoItem, (statements72!=null?statements72.instructions:null), tries, handlers); } retval.encodedMethod = new ClassDataItem.EncodedMethod(methodIdItem, accessFlags, codeItem); if (annotations74 != null) { retval.methodAnnotationSet = annotations74; } if (parameters75 != null) { retval.parameterAnnotationSets = parameters75; } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { method_stack.pop(); } return retval; } // $ANTLR end "method" // $ANTLR start "method_prototype" // org/jf/smali/smaliTreeWalker.g:605:1: method_prototype returns [ProtoIdItem protoIdItem] : ^( I_METHOD_PROTOTYPE ^( I_METHOD_RETURN_TYPE type_descriptor ) field_type_list ) ; public final ProtoIdItem method_prototype() throws RecognitionException { ProtoIdItem protoIdItem = null; TypeIdItem type_descriptor76 = null; List<TypeIdItem> field_type_list77 = null; try { // org/jf/smali/smaliTreeWalker.g:606:2: ( ^( I_METHOD_PROTOTYPE ^( I_METHOD_RETURN_TYPE type_descriptor ) field_type_list ) ) // org/jf/smali/smaliTreeWalker.g:606:4: ^( I_METHOD_PROTOTYPE ^( I_METHOD_RETURN_TYPE type_descriptor ) field_type_list ) { match(input,I_METHOD_PROTOTYPE,FOLLOW_I_METHOD_PROTOTYPE_in_method_prototype981); match(input, Token.DOWN, null); match(input,I_METHOD_RETURN_TYPE,FOLLOW_I_METHOD_RETURN_TYPE_in_method_prototype984); match(input, Token.DOWN, null); pushFollow(FOLLOW_type_descriptor_in_method_prototype986); type_descriptor76=type_descriptor(); state._fsp--; match(input, Token.UP, null); pushFollow(FOLLOW_field_type_list_in_method_prototype989); field_type_list77=field_type_list(); state._fsp--; match(input, Token.UP, null); TypeIdItem returnType = type_descriptor76; List<TypeIdItem> parameterTypes = field_type_list77; TypeListItem parameterTypeListItem = null; if (parameterTypes != null && parameterTypes.size() > 0) { parameterTypeListItem = TypeListItem.internTypeListItem(dexFile, parameterTypes); } protoIdItem = ProtoIdItem.internProtoIdItem(dexFile, returnType, parameterTypeListItem); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return protoIdItem; } // $ANTLR end "method_prototype" // $ANTLR start "method_name_and_prototype" // org/jf/smali/smaliTreeWalker.g:618:1: method_name_and_prototype returns [MethodIdItem methodIdItem] : SIMPLE_NAME method_prototype ; public final MethodIdItem method_name_and_prototype() throws RecognitionException { MethodIdItem methodIdItem = null; CommonTree SIMPLE_NAME78=null; ProtoIdItem method_prototype79 = null; try { // org/jf/smali/smaliTreeWalker.g:619:2: ( SIMPLE_NAME method_prototype ) // org/jf/smali/smaliTreeWalker.g:619:4: SIMPLE_NAME method_prototype { SIMPLE_NAME78=(CommonTree)match(input,SIMPLE_NAME,FOLLOW_SIMPLE_NAME_in_method_name_and_prototype1005); pushFollow(FOLLOW_method_prototype_in_method_name_and_prototype1007); method_prototype79=method_prototype(); state._fsp--; String methodNameString = (SIMPLE_NAME78!=null?SIMPLE_NAME78.getText():null); StringIdItem methodName = StringIdItem.internStringIdItem(dexFile, methodNameString); ProtoIdItem protoIdItem = method_prototype79; methodIdItem = MethodIdItem.internMethodIdItem(dexFile, classType, protoIdItem, methodName); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return methodIdItem; } // $ANTLR end "method_name_and_prototype" // $ANTLR start "field_type_list" // org/jf/smali/smaliTreeWalker.g:628:1: field_type_list returns [List<TypeIdItem> types] : ( nonvoid_type_descriptor )* ; public final List<TypeIdItem> field_type_list() throws RecognitionException { List<TypeIdItem> types = null; smaliTreeWalker.nonvoid_type_descriptor_return nonvoid_type_descriptor80 = null; types = new LinkedList<TypeIdItem>(); try { // org/jf/smali/smaliTreeWalker.g:633:2: ( ( nonvoid_type_descriptor )* ) // org/jf/smali/smaliTreeWalker.g:633:4: ( nonvoid_type_descriptor )* { // org/jf/smali/smaliTreeWalker.g:633:4: ( nonvoid_type_descriptor )* loop18: do { int alt18=2; switch ( input.LA(1) ) { case PRIMITIVE_TYPE: case CLASS_DESCRIPTOR: case ARRAY_DESCRIPTOR: { alt18=1; } break; } switch (alt18) { case 1 : // org/jf/smali/smaliTreeWalker.g:634:4: nonvoid_type_descriptor { pushFollow(FOLLOW_nonvoid_type_descriptor_in_field_type_list1034); nonvoid_type_descriptor80=nonvoid_type_descriptor(); state._fsp--; types.add((nonvoid_type_descriptor80!=null?nonvoid_type_descriptor80.type:null)); } break; default : break loop18; } } while (true); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return types; } // $ANTLR end "field_type_list" // $ANTLR start "fully_qualified_method" // org/jf/smali/smaliTreeWalker.g:641:1: fully_qualified_method returns [MethodIdItem methodIdItem] : reference_type_descriptor SIMPLE_NAME method_prototype ; public final MethodIdItem fully_qualified_method() throws RecognitionException { MethodIdItem methodIdItem = null; CommonTree SIMPLE_NAME82=null; smaliTreeWalker.reference_type_descriptor_return reference_type_descriptor81 = null; ProtoIdItem method_prototype83 = null; try { // org/jf/smali/smaliTreeWalker.g:642:2: ( reference_type_descriptor SIMPLE_NAME method_prototype ) // org/jf/smali/smaliTreeWalker.g:642:4: reference_type_descriptor SIMPLE_NAME method_prototype { pushFollow(FOLLOW_reference_type_descriptor_in_fully_qualified_method1057); reference_type_descriptor81=reference_type_descriptor(); state._fsp--; SIMPLE_NAME82=(CommonTree)match(input,SIMPLE_NAME,FOLLOW_SIMPLE_NAME_in_fully_qualified_method1059); pushFollow(FOLLOW_method_prototype_in_fully_qualified_method1061); method_prototype83=method_prototype(); state._fsp--; TypeIdItem classType = (reference_type_descriptor81!=null?reference_type_descriptor81.type:null); StringIdItem methodName = StringIdItem.internStringIdItem(dexFile, (SIMPLE_NAME82!=null?SIMPLE_NAME82.getText():null)); ProtoIdItem prototype = method_prototype83; methodIdItem = MethodIdItem.internMethodIdItem(dexFile, classType, prototype, methodName); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return methodIdItem; } // $ANTLR end "fully_qualified_method" // $ANTLR start "fully_qualified_field" // org/jf/smali/smaliTreeWalker.g:650:1: fully_qualified_field returns [FieldIdItem fieldIdItem] : reference_type_descriptor SIMPLE_NAME nonvoid_type_descriptor ; public final FieldIdItem fully_qualified_field() throws RecognitionException { FieldIdItem fieldIdItem = null; CommonTree SIMPLE_NAME85=null; smaliTreeWalker.reference_type_descriptor_return reference_type_descriptor84 = null; smaliTreeWalker.nonvoid_type_descriptor_return nonvoid_type_descriptor86 = null; try { // org/jf/smali/smaliTreeWalker.g:651:2: ( reference_type_descriptor SIMPLE_NAME nonvoid_type_descriptor ) // org/jf/smali/smaliTreeWalker.g:651:4: reference_type_descriptor SIMPLE_NAME nonvoid_type_descriptor { pushFollow(FOLLOW_reference_type_descriptor_in_fully_qualified_field1076); reference_type_descriptor84=reference_type_descriptor(); state._fsp--; SIMPLE_NAME85=(CommonTree)match(input,SIMPLE_NAME,FOLLOW_SIMPLE_NAME_in_fully_qualified_field1078); pushFollow(FOLLOW_nonvoid_type_descriptor_in_fully_qualified_field1080); nonvoid_type_descriptor86=nonvoid_type_descriptor(); state._fsp--; TypeIdItem classType = (reference_type_descriptor84!=null?reference_type_descriptor84.type:null); StringIdItem fieldName = StringIdItem.internStringIdItem(dexFile, (SIMPLE_NAME85!=null?SIMPLE_NAME85.getText():null)); TypeIdItem fieldType = (nonvoid_type_descriptor86!=null?nonvoid_type_descriptor86.type:null); fieldIdItem = FieldIdItem.internFieldIdItem(dexFile, classType, fieldType, fieldName); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return fieldIdItem; } // $ANTLR end "fully_qualified_field" public static class registers_directive_return extends TreeRuleReturnScope { public boolean isLocalsDirective; public int registers; }; // $ANTLR start "registers_directive" // org/jf/smali/smaliTreeWalker.g:659:1: registers_directive returns [boolean isLocalsDirective, int registers] : ^( ( I_REGISTERS | I_LOCALS ) short_integral_literal ) ; public final smaliTreeWalker.registers_directive_return registers_directive() throws RecognitionException { smaliTreeWalker.registers_directive_return retval = new smaliTreeWalker.registers_directive_return(); retval.start = input.LT(1); short short_integral_literal87 = 0; try { // org/jf/smali/smaliTreeWalker.g:660:2: ( ^( ( I_REGISTERS | I_LOCALS ) short_integral_literal ) ) // org/jf/smali/smaliTreeWalker.g:660:4: ^( ( I_REGISTERS | I_LOCALS ) short_integral_literal ) { retval.registers = 0; // org/jf/smali/smaliTreeWalker.g:661:6: ( I_REGISTERS | I_LOCALS ) int alt19=2; switch ( input.LA(1) ) { case I_REGISTERS: { alt19=1; } break; case I_LOCALS: { alt19=2; } break; default: NoViableAltException nvae = new NoViableAltException("", 19, 0, input); throw nvae; } switch (alt19) { case 1 : // org/jf/smali/smaliTreeWalker.g:661:8: I_REGISTERS { match(input,I_REGISTERS,FOLLOW_I_REGISTERS_in_registers_directive1103); retval.isLocalsDirective = false; } break; case 2 : // org/jf/smali/smaliTreeWalker.g:662:6: I_LOCALS { match(input,I_LOCALS,FOLLOW_I_LOCALS_in_registers_directive1112); retval.isLocalsDirective = true; } break; } match(input, Token.DOWN, null); pushFollow(FOLLOW_short_integral_literal_in_registers_directive1124); short_integral_literal87=short_integral_literal(); state._fsp--; retval.registers = short_integral_literal87; match(input, Token.UP, null); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return retval; } // $ANTLR end "registers_directive" // $ANTLR start "labels" // org/jf/smali/smaliTreeWalker.g:667:1: labels : ^( I_LABELS ( label_def )* ) ; public final void labels() throws RecognitionException { try { // org/jf/smali/smaliTreeWalker.g:668:2: ( ^( I_LABELS ( label_def )* ) ) // org/jf/smali/smaliTreeWalker.g:668:4: ^( I_LABELS ( label_def )* ) { match(input,I_LABELS,FOLLOW_I_LABELS_in_labels1140); if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); // org/jf/smali/smaliTreeWalker.g:668:15: ( label_def )* loop20: do { int alt20=2; switch ( input.LA(1) ) { case I_LABEL: { alt20=1; } break; } switch (alt20) { case 1 : // org/jf/smali/smaliTreeWalker.g:668:15: label_def { pushFollow(FOLLOW_label_def_in_labels1142); label_def(); state._fsp--; } break; default : break loop20; } } while (true); match(input, Token.UP, null); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return ; } // $ANTLR end "labels" // $ANTLR start "label_def" // org/jf/smali/smaliTreeWalker.g:670:1: label_def : ^( I_LABEL SIMPLE_NAME address ) ; public final void label_def() throws RecognitionException { CommonTree SIMPLE_NAME88=null; CommonTree I_LABEL89=null; int address90 = 0; try { // org/jf/smali/smaliTreeWalker.g:671:2: ( ^( I_LABEL SIMPLE_NAME address ) ) // org/jf/smali/smaliTreeWalker.g:671:4: ^( I_LABEL SIMPLE_NAME address ) { I_LABEL89=(CommonTree)match(input,I_LABEL,FOLLOW_I_LABEL_in_label_def1154); match(input, Token.DOWN, null); SIMPLE_NAME88=(CommonTree)match(input,SIMPLE_NAME,FOLLOW_SIMPLE_NAME_in_label_def1156); pushFollow(FOLLOW_address_in_label_def1158); address90=address(); state._fsp--; match(input, Token.UP, null); if (((method_scope)method_stack.peek()).labels.containsKey((SIMPLE_NAME88!=null?SIMPLE_NAME88.getText():null))) { throw new SemanticException(input, I_LABEL89, "Label " + (SIMPLE_NAME88!=null?SIMPLE_NAME88.getText():null) + " has multiple defintions."); } ((method_scope)method_stack.peek()).labels.put((SIMPLE_NAME88!=null?SIMPLE_NAME88.getText():null), address90); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return ; } // $ANTLR end "label_def" // $ANTLR start "packed_switch_declarations" // org/jf/smali/smaliTreeWalker.g:681:1: packed_switch_declarations : ^( I_PACKED_SWITCH_DECLARATIONS ( packed_switch_declaration )* ) ; public final void packed_switch_declarations() throws RecognitionException { try { // org/jf/smali/smaliTreeWalker.g:682:2: ( ^( I_PACKED_SWITCH_DECLARATIONS ( packed_switch_declaration )* ) ) // org/jf/smali/smaliTreeWalker.g:682:4: ^( I_PACKED_SWITCH_DECLARATIONS ( packed_switch_declaration )* ) { match(input,I_PACKED_SWITCH_DECLARATIONS,FOLLOW_I_PACKED_SWITCH_DECLARATIONS_in_packed_switch_declarations1173); if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); // org/jf/smali/smaliTreeWalker.g:682:35: ( packed_switch_declaration )* loop21: do { int alt21=2; switch ( input.LA(1) ) { case I_PACKED_SWITCH_DECLARATION: { alt21=1; } break; } switch (alt21) { case 1 : // org/jf/smali/smaliTreeWalker.g:682:35: packed_switch_declaration { pushFollow(FOLLOW_packed_switch_declaration_in_packed_switch_declarations1175); packed_switch_declaration(); state._fsp--; } break; default : break loop21; } } while (true); match(input, Token.UP, null); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return ; } // $ANTLR end "packed_switch_declarations" // $ANTLR start "packed_switch_declaration" // org/jf/smali/smaliTreeWalker.g:683:1: packed_switch_declaration : ^( I_PACKED_SWITCH_DECLARATION address offset_or_label_absolute[$address.address] ) ; public final void packed_switch_declaration() throws RecognitionException { int address91 = 0; int offset_or_label_absolute92 = 0; try { // org/jf/smali/smaliTreeWalker.g:684:2: ( ^( I_PACKED_SWITCH_DECLARATION address offset_or_label_absolute[$address.address] ) ) // org/jf/smali/smaliTreeWalker.g:684:4: ^( I_PACKED_SWITCH_DECLARATION address offset_or_label_absolute[$address.address] ) { match(input,I_PACKED_SWITCH_DECLARATION,FOLLOW_I_PACKED_SWITCH_DECLARATION_in_packed_switch_declaration1186); match(input, Token.DOWN, null); pushFollow(FOLLOW_address_in_packed_switch_declaration1188); address91=address(); state._fsp--; pushFollow(FOLLOW_offset_or_label_absolute_in_packed_switch_declaration1190); offset_or_label_absolute92=offset_or_label_absolute(address91); state._fsp--; match(input, Token.UP, null); int switchDataAddress = offset_or_label_absolute92; if ((switchDataAddress % 2) != 0) { switchDataAddress++; } if (!((method_scope)method_stack.peek()).packedSwitchDeclarations.containsKey(switchDataAddress)) { ((method_scope)method_stack.peek()).packedSwitchDeclarations.put(switchDataAddress, address91); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return ; } // $ANTLR end "packed_switch_declaration" // $ANTLR start "sparse_switch_declarations" // org/jf/smali/smaliTreeWalker.g:695:1: sparse_switch_declarations : ^( I_SPARSE_SWITCH_DECLARATIONS ( sparse_switch_declaration )* ) ; public final void sparse_switch_declarations() throws RecognitionException { try { // org/jf/smali/smaliTreeWalker.g:696:2: ( ^( I_SPARSE_SWITCH_DECLARATIONS ( sparse_switch_declaration )* ) ) // org/jf/smali/smaliTreeWalker.g:696:4: ^( I_SPARSE_SWITCH_DECLARATIONS ( sparse_switch_declaration )* ) { match(input,I_SPARSE_SWITCH_DECLARATIONS,FOLLOW_I_SPARSE_SWITCH_DECLARATIONS_in_sparse_switch_declarations1206); if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); // org/jf/smali/smaliTreeWalker.g:696:35: ( sparse_switch_declaration )* loop22: do { int alt22=2; switch ( input.LA(1) ) { case I_SPARSE_SWITCH_DECLARATION: { alt22=1; } break; } switch (alt22) { case 1 : // org/jf/smali/smaliTreeWalker.g:696:35: sparse_switch_declaration { pushFollow(FOLLOW_sparse_switch_declaration_in_sparse_switch_declarations1208); sparse_switch_declaration(); state._fsp--; } break; default : break loop22; } } while (true); match(input, Token.UP, null); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return ; } // $ANTLR end "sparse_switch_declarations" // $ANTLR start "sparse_switch_declaration" // org/jf/smali/smaliTreeWalker.g:697:1: sparse_switch_declaration : ^( I_SPARSE_SWITCH_DECLARATION address offset_or_label_absolute[$address.address] ) ; public final void sparse_switch_declaration() throws RecognitionException { int address93 = 0; int offset_or_label_absolute94 = 0; try { // org/jf/smali/smaliTreeWalker.g:698:2: ( ^( I_SPARSE_SWITCH_DECLARATION address offset_or_label_absolute[$address.address] ) ) // org/jf/smali/smaliTreeWalker.g:698:4: ^( I_SPARSE_SWITCH_DECLARATION address offset_or_label_absolute[$address.address] ) { match(input,I_SPARSE_SWITCH_DECLARATION,FOLLOW_I_SPARSE_SWITCH_DECLARATION_in_sparse_switch_declaration1219); match(input, Token.DOWN, null); pushFollow(FOLLOW_address_in_sparse_switch_declaration1221); address93=address(); state._fsp--; pushFollow(FOLLOW_offset_or_label_absolute_in_sparse_switch_declaration1223); offset_or_label_absolute94=offset_or_label_absolute(address93); state._fsp--; match(input, Token.UP, null); int switchDataAddress = offset_or_label_absolute94; if ((switchDataAddress % 2) != 0) { switchDataAddress++; } if (!((method_scope)method_stack.peek()).sparseSwitchDeclarations.containsKey(switchDataAddress)) { ((method_scope)method_stack.peek()).sparseSwitchDeclarations.put(switchDataAddress, address93); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return ; } // $ANTLR end "sparse_switch_declaration" // $ANTLR start "catches" // org/jf/smali/smaliTreeWalker.g:710:1: catches : ^( I_CATCHES ( catch_directive )* ( catchall_directive )* ) ; public final void catches() throws RecognitionException { try { // org/jf/smali/smaliTreeWalker.g:710:9: ( ^( I_CATCHES ( catch_directive )* ( catchall_directive )* ) ) // org/jf/smali/smaliTreeWalker.g:710:11: ^( I_CATCHES ( catch_directive )* ( catchall_directive )* ) { match(input,I_CATCHES,FOLLOW_I_CATCHES_in_catches1238); if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); // org/jf/smali/smaliTreeWalker.g:710:23: ( catch_directive )* loop23: do { int alt23=2; switch ( input.LA(1) ) { case I_CATCH: { alt23=1; } break; } switch (alt23) { case 1 : // org/jf/smali/smaliTreeWalker.g:710:23: catch_directive { pushFollow(FOLLOW_catch_directive_in_catches1240); catch_directive(); state._fsp--; } break; default : break loop23; } } while (true); // org/jf/smali/smaliTreeWalker.g:710:40: ( catchall_directive )* loop24: do { int alt24=2; switch ( input.LA(1) ) { case I_CATCHALL: { alt24=1; } break; } switch (alt24) { case 1 : // org/jf/smali/smaliTreeWalker.g:710:40: catchall_directive { pushFollow(FOLLOW_catchall_directive_in_catches1243); catchall_directive(); state._fsp--; } break; default : break loop24; } } while (true); match(input, Token.UP, null); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return ; } // $ANTLR end "catches" // $ANTLR start "catch_directive" // org/jf/smali/smaliTreeWalker.g:712:1: catch_directive : ^( I_CATCH address nonvoid_type_descriptor from= offset_or_label_absolute[$address.address] to= offset_or_label_absolute[$address.address] using= offset_or_label_absolute[$address.address] ) ; public final void catch_directive() throws RecognitionException { int from = 0; int to = 0; int using = 0; int address95 = 0; smaliTreeWalker.nonvoid_type_descriptor_return nonvoid_type_descriptor96 = null; try { // org/jf/smali/smaliTreeWalker.g:713:2: ( ^( I_CATCH address nonvoid_type_descriptor from= offset_or_label_absolute[$address.address] to= offset_or_label_absolute[$address.address] using= offset_or_label_absolute[$address.address] ) ) // org/jf/smali/smaliTreeWalker.g:713:4: ^( I_CATCH address nonvoid_type_descriptor from= offset_or_label_absolute[$address.address] to= offset_or_label_absolute[$address.address] using= offset_or_label_absolute[$address.address] ) { match(input,I_CATCH,FOLLOW_I_CATCH_in_catch_directive1255); match(input, Token.DOWN, null); pushFollow(FOLLOW_address_in_catch_directive1257); address95=address(); state._fsp--; pushFollow(FOLLOW_nonvoid_type_descriptor_in_catch_directive1259); nonvoid_type_descriptor96=nonvoid_type_descriptor(); state._fsp--; pushFollow(FOLLOW_offset_or_label_absolute_in_catch_directive1263); from=offset_or_label_absolute(address95); state._fsp--; pushFollow(FOLLOW_offset_or_label_absolute_in_catch_directive1268); to=offset_or_label_absolute(address95); state._fsp--; pushFollow(FOLLOW_offset_or_label_absolute_in_catch_directive1277); using=offset_or_label_absolute(address95); state._fsp--; match(input, Token.UP, null); TypeIdItem type = (nonvoid_type_descriptor96!=null?nonvoid_type_descriptor96.type:null); int startAddress = from; int endAddress = to; int handlerAddress = using; ((method_scope)method_stack.peek()).tryList.addHandler(type, startAddress, endAddress, handlerAddress); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return ; } // $ANTLR end "catch_directive" // $ANTLR start "catchall_directive" // org/jf/smali/smaliTreeWalker.g:724:1: catchall_directive : ^( I_CATCHALL address from= offset_or_label_absolute[$address.address] to= offset_or_label_absolute[$address.address] using= offset_or_label_absolute[$address.address] ) ; public final void catchall_directive() throws RecognitionException { int from = 0; int to = 0; int using = 0; int address97 = 0; try { // org/jf/smali/smaliTreeWalker.g:725:2: ( ^( I_CATCHALL address from= offset_or_label_absolute[$address.address] to= offset_or_label_absolute[$address.address] using= offset_or_label_absolute[$address.address] ) ) // org/jf/smali/smaliTreeWalker.g:725:4: ^( I_CATCHALL address from= offset_or_label_absolute[$address.address] to= offset_or_label_absolute[$address.address] using= offset_or_label_absolute[$address.address] ) { match(input,I_CATCHALL,FOLLOW_I_CATCHALL_in_catchall_directive1293); match(input, Token.DOWN, null); pushFollow(FOLLOW_address_in_catchall_directive1295); address97=address(); state._fsp--; pushFollow(FOLLOW_offset_or_label_absolute_in_catchall_directive1299); from=offset_or_label_absolute(address97); state._fsp--; pushFollow(FOLLOW_offset_or_label_absolute_in_catchall_directive1304); to=offset_or_label_absolute(address97); state._fsp--; pushFollow(FOLLOW_offset_or_label_absolute_in_catchall_directive1313); using=offset_or_label_absolute(address97); state._fsp--; match(input, Token.UP, null); int startAddress = from; int endAddress = to; int handlerAddress = using; ((method_scope)method_stack.peek()).tryList.addCatchAllHandler(startAddress, endAddress, handlerAddress); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return ; } // $ANTLR end "catchall_directive" // $ANTLR start "address" // org/jf/smali/smaliTreeWalker.g:735:1: address returns [int address] : I_ADDRESS ; public final int address() throws RecognitionException { int address = 0; CommonTree I_ADDRESS98=null; try { // org/jf/smali/smaliTreeWalker.g:736:2: ( I_ADDRESS ) // org/jf/smali/smaliTreeWalker.g:736:4: I_ADDRESS { I_ADDRESS98=(CommonTree)match(input,I_ADDRESS,FOLLOW_I_ADDRESS_in_address1331); address = Integer.parseInt((I_ADDRESS98!=null?I_ADDRESS98.getText():null)); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return address; } // $ANTLR end "address" // $ANTLR start "parameters" // org/jf/smali/smaliTreeWalker.g:741:1: parameters returns [AnnotationSetRefList parameterAnnotations] : ^( I_PARAMETERS ( parameter )* ) ; public final AnnotationSetRefList parameters() throws RecognitionException { AnnotationSetRefList parameterAnnotations = null; AnnotationSetItem parameter99 = null; int parameterCount = 0; List<AnnotationSetItem> annotationSetItems = new ArrayList<AnnotationSetItem>(); try { // org/jf/smali/smaliTreeWalker.g:747:2: ( ^( I_PARAMETERS ( parameter )* ) ) // org/jf/smali/smaliTreeWalker.g:747:4: ^( I_PARAMETERS ( parameter )* ) { match(input,I_PARAMETERS,FOLLOW_I_PARAMETERS_in_parameters1355); if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); // org/jf/smali/smaliTreeWalker.g:747:19: ( parameter )* loop25: do { int alt25=2; switch ( input.LA(1) ) { case I_PARAMETER: { alt25=1; } break; } switch (alt25) { case 1 : // org/jf/smali/smaliTreeWalker.g:747:20: parameter { pushFollow(FOLLOW_parameter_in_parameters1358); parameter99=parameter(); state._fsp--; if (parameter99 != null) { while (annotationSetItems.size() < parameterCount) { annotationSetItems.add(AnnotationSetItem.internAnnotationSetItem(dexFile, null)); } annotationSetItems.add(parameter99); } parameterCount++; } break; default : break loop25; } } while (true); match(input, Token.UP, null); } if (annotationSetItems.size() > 0) { while (annotationSetItems.size() < parameterCount) { annotationSetItems.add(AnnotationSetItem.internAnnotationSetItem(dexFile, null)); } parameterAnnotations = AnnotationSetRefList.internAnnotationSetRefList(dexFile, annotationSetItems); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return parameterAnnotations; } // $ANTLR end "parameters" // $ANTLR start "parameter" // org/jf/smali/smaliTreeWalker.g:768:1: parameter returns [AnnotationSetItem parameterAnnotationSet] : ^( I_PARAMETER ( string_literal | ) annotations ) ; public final AnnotationSetItem parameter() throws RecognitionException { AnnotationSetItem parameterAnnotationSet = null; String string_literal100 = null; AnnotationSetItem annotations101 = null; try { // org/jf/smali/smaliTreeWalker.g:769:2: ( ^( I_PARAMETER ( string_literal | ) annotations ) ) // org/jf/smali/smaliTreeWalker.g:769:4: ^( I_PARAMETER ( string_literal | ) annotations ) { match(input,I_PARAMETER,FOLLOW_I_PARAMETER_in_parameter1387); match(input, Token.DOWN, null); // org/jf/smali/smaliTreeWalker.g:769:19: ( string_literal | ) int alt26=2; switch ( input.LA(1) ) { case STRING_LITERAL: { alt26=1; } break; case I_ANNOTATIONS: { alt26=2; } break; default: NoViableAltException nvae = new NoViableAltException("", 26, 0, input); throw nvae; } switch (alt26) { case 1 : // org/jf/smali/smaliTreeWalker.g:769:21: string_literal { pushFollow(FOLLOW_string_literal_in_parameter1392); string_literal100=string_literal(); state._fsp--; ((method_scope)method_stack.peek()).debugInfo.addParameterName(string_literal100); } break; case 2 : // org/jf/smali/smaliTreeWalker.g:770:7: { ((method_scope)method_stack.peek()).debugInfo.addParameterName(null); } break; } pushFollow(FOLLOW_annotations_in_parameter1414); annotations101=annotations(); state._fsp--; parameterAnnotationSet = annotations101; match(input, Token.UP, null); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return parameterAnnotationSet; } // $ANTLR end "parameter" // $ANTLR start "ordered_debug_directives" // org/jf/smali/smaliTreeWalker.g:775:1: ordered_debug_directives[int totalMethodRegisters, int methodParameterRegisters] : ^( I_ORDERED_DEBUG_DIRECTIVES ( line | local[$totalMethodRegisters, $methodParameterRegisters] | end_local[$totalMethodRegisters, $methodParameterRegisters] | restart_local[$totalMethodRegisters, $methodParameterRegisters] | prologue | epilogue | source )* ) ; public final void ordered_debug_directives(int totalMethodRegisters, int methodParameterRegisters) throws RecognitionException { try { // org/jf/smali/smaliTreeWalker.g:776:2: ( ^( I_ORDERED_DEBUG_DIRECTIVES ( line | local[$totalMethodRegisters, $methodParameterRegisters] | end_local[$totalMethodRegisters, $methodParameterRegisters] | restart_local[$totalMethodRegisters, $methodParameterRegisters] | prologue | epilogue | source )* ) ) // org/jf/smali/smaliTreeWalker.g:776:4: ^( I_ORDERED_DEBUG_DIRECTIVES ( line | local[$totalMethodRegisters, $methodParameterRegisters] | end_local[$totalMethodRegisters, $methodParameterRegisters] | restart_local[$totalMethodRegisters, $methodParameterRegisters] | prologue | epilogue | source )* ) { match(input,I_ORDERED_DEBUG_DIRECTIVES,FOLLOW_I_ORDERED_DEBUG_DIRECTIVES_in_ordered_debug_directives1431); if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); // org/jf/smali/smaliTreeWalker.g:776:34: ( line | local[$totalMethodRegisters, $methodParameterRegisters] | end_local[$totalMethodRegisters, $methodParameterRegisters] | restart_local[$totalMethodRegisters, $methodParameterRegisters] | prologue | epilogue | source )* loop27: do { int alt27=8; switch ( input.LA(1) ) { case I_LINE: { alt27=1; } break; case I_LOCAL: { alt27=2; } break; case I_END_LOCAL: { alt27=3; } break; case I_RESTART_LOCAL: { alt27=4; } break; case I_PROLOGUE: { alt27=5; } break; case I_EPILOGUE: { alt27=6; } break; case I_SOURCE: { alt27=7; } break; } switch (alt27) { case 1 : // org/jf/smali/smaliTreeWalker.g:776:36: line { pushFollow(FOLLOW_line_in_ordered_debug_directives1436); line(); state._fsp--; } break; case 2 : // org/jf/smali/smaliTreeWalker.g:777:10: local[$totalMethodRegisters, $methodParameterRegisters] { pushFollow(FOLLOW_local_in_ordered_debug_directives1447); local(totalMethodRegisters, methodParameterRegisters); state._fsp--; } break; case 3 : // org/jf/smali/smaliTreeWalker.g:778:9: end_local[$totalMethodRegisters, $methodParameterRegisters] { pushFollow(FOLLOW_end_local_in_ordered_debug_directives1458); end_local(totalMethodRegisters, methodParameterRegisters); state._fsp--; } break; case 4 : // org/jf/smali/smaliTreeWalker.g:779:9: restart_local[$totalMethodRegisters, $methodParameterRegisters] { pushFollow(FOLLOW_restart_local_in_ordered_debug_directives1469); restart_local(totalMethodRegisters, methodParameterRegisters); state._fsp--; } break; case 5 : // org/jf/smali/smaliTreeWalker.g:780:9: prologue { pushFollow(FOLLOW_prologue_in_ordered_debug_directives1480); prologue(); state._fsp--; } break; case 6 : // org/jf/smali/smaliTreeWalker.g:781:9: epilogue { pushFollow(FOLLOW_epilogue_in_ordered_debug_directives1490); epilogue(); state._fsp--; } break; case 7 : // org/jf/smali/smaliTreeWalker.g:782:9: source { pushFollow(FOLLOW_source_in_ordered_debug_directives1500); source(); state._fsp--; } break; default : break loop27; } } while (true); match(input, Token.UP, null); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return ; } // $ANTLR end "ordered_debug_directives" // $ANTLR start "line" // org/jf/smali/smaliTreeWalker.g:785:1: line : ^( I_LINE integral_literal address ) ; public final void line() throws RecognitionException { int address102 = 0; int integral_literal103 = 0; try { // org/jf/smali/smaliTreeWalker.g:786:2: ( ^( I_LINE integral_literal address ) ) // org/jf/smali/smaliTreeWalker.g:786:4: ^( I_LINE integral_literal address ) { match(input,I_LINE,FOLLOW_I_LINE_in_line1520); match(input, Token.DOWN, null); pushFollow(FOLLOW_integral_literal_in_line1522); integral_literal103=integral_literal(); state._fsp--; pushFollow(FOLLOW_address_in_line1524); address102=address(); state._fsp--; match(input, Token.UP, null); ((method_scope)method_stack.peek()).debugInfo.addLine(address102, integral_literal103); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return ; } // $ANTLR end "line" // $ANTLR start "local" // org/jf/smali/smaliTreeWalker.g:791:1: local[int totalMethodRegisters, int methodParameterRegisters] : ^( I_LOCAL REGISTER SIMPLE_NAME nonvoid_type_descriptor ( string_literal )? address ) ; public final void local(int totalMethodRegisters, int methodParameterRegisters) throws RecognitionException { CommonTree REGISTER104=null; CommonTree SIMPLE_NAME107=null; String string_literal105 = null; int address106 = 0; smaliTreeWalker.nonvoid_type_descriptor_return nonvoid_type_descriptor108 = null; try { // org/jf/smali/smaliTreeWalker.g:792:2: ( ^( I_LOCAL REGISTER SIMPLE_NAME nonvoid_type_descriptor ( string_literal )? address ) ) // org/jf/smali/smaliTreeWalker.g:792:4: ^( I_LOCAL REGISTER SIMPLE_NAME nonvoid_type_descriptor ( string_literal )? address ) { match(input,I_LOCAL,FOLLOW_I_LOCAL_in_local1540); match(input, Token.DOWN, null); REGISTER104=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_local1542); SIMPLE_NAME107=(CommonTree)match(input,SIMPLE_NAME,FOLLOW_SIMPLE_NAME_in_local1544); pushFollow(FOLLOW_nonvoid_type_descriptor_in_local1546); nonvoid_type_descriptor108=nonvoid_type_descriptor(); state._fsp--; // org/jf/smali/smaliTreeWalker.g:792:59: ( string_literal )? int alt28=2; switch ( input.LA(1) ) { case STRING_LITERAL: { alt28=1; } break; } switch (alt28) { case 1 : // org/jf/smali/smaliTreeWalker.g:792:59: string_literal { pushFollow(FOLLOW_string_literal_in_local1548); string_literal105=string_literal(); state._fsp--; } break; } pushFollow(FOLLOW_address_in_local1551); address106=address(); state._fsp--; match(input, Token.UP, null); int registerNumber = parseRegister_short((REGISTER104!=null?REGISTER104.getText():null), totalMethodRegisters, methodParameterRegisters); if (string_literal105 != null) { ((method_scope)method_stack.peek()).debugInfo.addLocalExtended(address106, registerNumber, (SIMPLE_NAME107!=null?SIMPLE_NAME107.getText():null), (nonvoid_type_descriptor108!=null?nonvoid_type_descriptor108.type:null).getTypeDescriptor(), string_literal105); } else { ((method_scope)method_stack.peek()).debugInfo.addLocal(address106, registerNumber, (SIMPLE_NAME107!=null?SIMPLE_NAME107.getText():null), (nonvoid_type_descriptor108!=null?nonvoid_type_descriptor108.type:null).getTypeDescriptor()); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return ; } // $ANTLR end "local" // $ANTLR start "end_local" // org/jf/smali/smaliTreeWalker.g:803:1: end_local[int totalMethodRegisters, int methodParameterRegisters] : ^( I_END_LOCAL REGISTER address ) ; public final void end_local(int totalMethodRegisters, int methodParameterRegisters) throws RecognitionException { CommonTree REGISTER109=null; int address110 = 0; try { // org/jf/smali/smaliTreeWalker.g:804:2: ( ^( I_END_LOCAL REGISTER address ) ) // org/jf/smali/smaliTreeWalker.g:804:4: ^( I_END_LOCAL REGISTER address ) { match(input,I_END_LOCAL,FOLLOW_I_END_LOCAL_in_end_local1567); match(input, Token.DOWN, null); REGISTER109=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_end_local1569); pushFollow(FOLLOW_address_in_end_local1571); address110=address(); state._fsp--; match(input, Token.UP, null); int registerNumber = parseRegister_short((REGISTER109!=null?REGISTER109.getText():null), totalMethodRegisters, methodParameterRegisters); ((method_scope)method_stack.peek()).debugInfo.addEndLocal(address110, registerNumber); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return ; } // $ANTLR end "end_local" // $ANTLR start "restart_local" // org/jf/smali/smaliTreeWalker.g:811:1: restart_local[int totalMethodRegisters, int methodParameterRegisters] : ^( I_RESTART_LOCAL REGISTER address ) ; public final void restart_local(int totalMethodRegisters, int methodParameterRegisters) throws RecognitionException { CommonTree REGISTER111=null; int address112 = 0; try { // org/jf/smali/smaliTreeWalker.g:812:2: ( ^( I_RESTART_LOCAL REGISTER address ) ) // org/jf/smali/smaliTreeWalker.g:812:4: ^( I_RESTART_LOCAL REGISTER address ) { match(input,I_RESTART_LOCAL,FOLLOW_I_RESTART_LOCAL_in_restart_local1587); match(input, Token.DOWN, null); REGISTER111=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_restart_local1589); pushFollow(FOLLOW_address_in_restart_local1591); address112=address(); state._fsp--; match(input, Token.UP, null); int registerNumber = parseRegister_short((REGISTER111!=null?REGISTER111.getText():null), totalMethodRegisters, methodParameterRegisters); ((method_scope)method_stack.peek()).debugInfo.addRestartLocal(address112, registerNumber); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return ; } // $ANTLR end "restart_local" // $ANTLR start "prologue" // org/jf/smali/smaliTreeWalker.g:819:1: prologue : ^( I_PROLOGUE address ) ; public final void prologue() throws RecognitionException { int address113 = 0; try { // org/jf/smali/smaliTreeWalker.g:820:2: ( ^( I_PROLOGUE address ) ) // org/jf/smali/smaliTreeWalker.g:820:4: ^( I_PROLOGUE address ) { match(input,I_PROLOGUE,FOLLOW_I_PROLOGUE_in_prologue1606); match(input, Token.DOWN, null); pushFollow(FOLLOW_address_in_prologue1608); address113=address(); state._fsp--; match(input, Token.UP, null); ((method_scope)method_stack.peek()).debugInfo.addPrologue(address113); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return ; } // $ANTLR end "prologue" // $ANTLR start "epilogue" // org/jf/smali/smaliTreeWalker.g:825:1: epilogue : ^( I_EPILOGUE address ) ; public final void epilogue() throws RecognitionException { int address114 = 0; try { // org/jf/smali/smaliTreeWalker.g:826:2: ( ^( I_EPILOGUE address ) ) // org/jf/smali/smaliTreeWalker.g:826:4: ^( I_EPILOGUE address ) { match(input,I_EPILOGUE,FOLLOW_I_EPILOGUE_in_epilogue1623); match(input, Token.DOWN, null); pushFollow(FOLLOW_address_in_epilogue1625); address114=address(); state._fsp--; match(input, Token.UP, null); ((method_scope)method_stack.peek()).debugInfo.addEpilogue(address114); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return ; } // $ANTLR end "epilogue" // $ANTLR start "source" // org/jf/smali/smaliTreeWalker.g:831:1: source : ^( I_SOURCE string_literal address ) ; public final void source() throws RecognitionException { int address115 = 0; String string_literal116 = null; try { // org/jf/smali/smaliTreeWalker.g:832:2: ( ^( I_SOURCE string_literal address ) ) // org/jf/smali/smaliTreeWalker.g:832:4: ^( I_SOURCE string_literal address ) { match(input,I_SOURCE,FOLLOW_I_SOURCE_in_source1640); match(input, Token.DOWN, null); pushFollow(FOLLOW_string_literal_in_source1642); string_literal116=string_literal(); state._fsp--; pushFollow(FOLLOW_address_in_source1644); address115=address(); state._fsp--; match(input, Token.UP, null); ((method_scope)method_stack.peek()).debugInfo.addSetFile(address115, string_literal116); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return ; } // $ANTLR end "source" public static class statements_return extends TreeRuleReturnScope { public List<Instruction> instructions; public int maxOutRegisters; }; // $ANTLR start "statements" // org/jf/smali/smaliTreeWalker.g:837:1: statements[int totalMethodRegisters, int methodParameterRegisters] returns [List<Instruction> instructions, int maxOutRegisters] : ^( I_STATEMENTS ( instruction[$totalMethodRegisters, $methodParameterRegisters, $instructions] )* ) ; public final smaliTreeWalker.statements_return statements(int totalMethodRegisters, int methodParameterRegisters) throws RecognitionException { smaliTreeWalker.statements_return retval = new smaliTreeWalker.statements_return(); retval.start = input.LT(1); int instruction117 = 0; retval.instructions = new LinkedList<Instruction>(); retval.maxOutRegisters = 0; try { // org/jf/smali/smaliTreeWalker.g:843:2: ( ^( I_STATEMENTS ( instruction[$totalMethodRegisters, $methodParameterRegisters, $instructions] )* ) ) // org/jf/smali/smaliTreeWalker.g:843:4: ^( I_STATEMENTS ( instruction[$totalMethodRegisters, $methodParameterRegisters, $instructions] )* ) { match(input,I_STATEMENTS,FOLLOW_I_STATEMENTS_in_statements1670); if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); // org/jf/smali/smaliTreeWalker.g:843:19: ( instruction[$totalMethodRegisters, $methodParameterRegisters, $instructions] )* loop29: do { int alt29=2; switch ( input.LA(1) ) { case I_STATEMENT_FORMAT10t: case I_STATEMENT_FORMAT10x: case I_STATEMENT_FORMAT11n: case I_STATEMENT_FORMAT11x: case I_STATEMENT_FORMAT12x: case I_STATEMENT_FORMAT20t: case I_STATEMENT_FORMAT21c_TYPE: case I_STATEMENT_FORMAT21c_FIELD: case I_STATEMENT_FORMAT21c_STRING: case I_STATEMENT_FORMAT21h: case I_STATEMENT_FORMAT21s: case I_STATEMENT_FORMAT21t: case I_STATEMENT_FORMAT22b: case I_STATEMENT_FORMAT22c_FIELD: case I_STATEMENT_FORMAT22c_TYPE: case I_STATEMENT_FORMAT22s: case I_STATEMENT_FORMAT22t: case I_STATEMENT_FORMAT22x: case I_STATEMENT_FORMAT23x: case I_STATEMENT_FORMAT30t: case I_STATEMENT_FORMAT31c: case I_STATEMENT_FORMAT31i: case I_STATEMENT_FORMAT31t: case I_STATEMENT_FORMAT32x: case I_STATEMENT_FORMAT35c_METHOD: case I_STATEMENT_FORMAT35c_TYPE: case I_STATEMENT_FORMAT3rc_METHOD: case I_STATEMENT_FORMAT3rc_TYPE: case I_STATEMENT_FORMAT51l: case I_STATEMENT_ARRAY_DATA: case I_STATEMENT_PACKED_SWITCH: case I_STATEMENT_SPARSE_SWITCH: { alt29=1; } break; } switch (alt29) { case 1 : // org/jf/smali/smaliTreeWalker.g:843:20: instruction[$totalMethodRegisters, $methodParameterRegisters, $instructions] { pushFollow(FOLLOW_instruction_in_statements1673); instruction117=instruction(totalMethodRegisters, methodParameterRegisters, retval.instructions); state._fsp--; ((method_scope)method_stack.peek()).currentAddress += retval.instructions.get(retval.instructions.size() - 1).getSize(((method_scope)method_stack.peek()).currentAddress); if (retval.maxOutRegisters < instruction117) { retval.maxOutRegisters = instruction117; } } break; default : break loop29; } } while (true); match(input, Token.UP, null); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return retval; } // $ANTLR end "statements" // $ANTLR start "label_ref" // org/jf/smali/smaliTreeWalker.g:851:1: label_ref returns [int labelAddress] : SIMPLE_NAME ; public final int label_ref() throws RecognitionException { int labelAddress = 0; CommonTree SIMPLE_NAME118=null; try { // org/jf/smali/smaliTreeWalker.g:852:2: ( SIMPLE_NAME ) // org/jf/smali/smaliTreeWalker.g:852:4: SIMPLE_NAME { SIMPLE_NAME118=(CommonTree)match(input,SIMPLE_NAME,FOLLOW_SIMPLE_NAME_in_label_ref1695); Integer labelAdd = ((method_scope)method_stack.peek()).labels.get((SIMPLE_NAME118!=null?SIMPLE_NAME118.getText():null)); if (labelAdd == null) { throw new SemanticException(input, SIMPLE_NAME118, "Label \"" + (SIMPLE_NAME118!=null?SIMPLE_NAME118.getText():null) + "\" is not defined."); } labelAddress = labelAdd; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return labelAddress; } // $ANTLR end "label_ref" // $ANTLR start "offset" // org/jf/smali/smaliTreeWalker.g:863:1: offset returns [int offsetValue] : OFFSET ; public final int offset() throws RecognitionException { int offsetValue = 0; CommonTree OFFSET119=null; try { // org/jf/smali/smaliTreeWalker.g:864:2: ( OFFSET ) // org/jf/smali/smaliTreeWalker.g:864:4: OFFSET { OFFSET119=(CommonTree)match(input,OFFSET,FOLLOW_OFFSET_in_offset1711); String offsetText = (OFFSET119!=null?OFFSET119.getText():null); if (offsetText.charAt(0) == '+') { offsetText = offsetText.substring(1); } offsetValue = literalTools.parseInt(offsetText); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return offsetValue; } // $ANTLR end "offset" // $ANTLR start "offset_or_label_absolute" // org/jf/smali/smaliTreeWalker.g:873:1: offset_or_label_absolute[int baseAddress] returns [int address] : ( offset | label_ref ); public final int offset_or_label_absolute(int baseAddress) throws RecognitionException { int address = 0; int offset120 = 0; int label_ref121 = 0; try { // org/jf/smali/smaliTreeWalker.g:874:2: ( offset | label_ref ) int alt30=2; switch ( input.LA(1) ) { case OFFSET: { alt30=1; } break; case SIMPLE_NAME: { alt30=2; } break; default: NoViableAltException nvae = new NoViableAltException("", 30, 0, input); throw nvae; } switch (alt30) { case 1 : // org/jf/smali/smaliTreeWalker.g:874:4: offset { pushFollow(FOLLOW_offset_in_offset_or_label_absolute1728); offset120=offset(); state._fsp--; address = offset120 + baseAddress; } break; case 2 : // org/jf/smali/smaliTreeWalker.g:875:4: label_ref { pushFollow(FOLLOW_label_ref_in_offset_or_label_absolute1735); label_ref121=label_ref(); state._fsp--; address = label_ref121; } break; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return address; } // $ANTLR end "offset_or_label_absolute" public static class offset_or_label_return extends TreeRuleReturnScope { public int offsetValue; }; // $ANTLR start "offset_or_label" // org/jf/smali/smaliTreeWalker.g:877:1: offset_or_label returns [int offsetValue] : ( offset | label_ref ); public final smaliTreeWalker.offset_or_label_return offset_or_label() throws RecognitionException { smaliTreeWalker.offset_or_label_return retval = new smaliTreeWalker.offset_or_label_return(); retval.start = input.LT(1); int offset122 = 0; int label_ref123 = 0; try { // org/jf/smali/smaliTreeWalker.g:878:2: ( offset | label_ref ) int alt31=2; switch ( input.LA(1) ) { case OFFSET: { alt31=1; } break; case SIMPLE_NAME: { alt31=2; } break; default: NoViableAltException nvae = new NoViableAltException("", 31, 0, input); throw nvae; } switch (alt31) { case 1 : // org/jf/smali/smaliTreeWalker.g:878:4: offset { pushFollow(FOLLOW_offset_in_offset_or_label1749); offset122=offset(); state._fsp--; retval.offsetValue = offset122; } break; case 2 : // org/jf/smali/smaliTreeWalker.g:879:4: label_ref { pushFollow(FOLLOW_label_ref_in_offset_or_label1756); label_ref123=label_ref(); state._fsp--; retval.offsetValue = label_ref123-((method_scope)method_stack.peek()).currentAddress; } break; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return retval; } // $ANTLR end "offset_or_label" public static class register_list_return extends TreeRuleReturnScope { public byte[] registers; public byte registerCount; }; // $ANTLR start "register_list" // org/jf/smali/smaliTreeWalker.g:882:1: register_list[int totalMethodRegisters, int methodParameterRegisters] returns [byte[] registers, byte registerCount] : ^( I_REGISTER_LIST ( REGISTER )* ) ; public final smaliTreeWalker.register_list_return register_list(int totalMethodRegisters, int methodParameterRegisters) throws RecognitionException { smaliTreeWalker.register_list_return retval = new smaliTreeWalker.register_list_return(); retval.start = input.LT(1); CommonTree I_REGISTER_LIST124=null; CommonTree REGISTER125=null; retval.registers = new byte[5]; retval.registerCount = 0; try { // org/jf/smali/smaliTreeWalker.g:888:2: ( ^( I_REGISTER_LIST ( REGISTER )* ) ) // org/jf/smali/smaliTreeWalker.g:888:4: ^( I_REGISTER_LIST ( REGISTER )* ) { I_REGISTER_LIST124=(CommonTree)match(input,I_REGISTER_LIST,FOLLOW_I_REGISTER_LIST_in_register_list1780); if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); // org/jf/smali/smaliTreeWalker.g:889:4: ( REGISTER )* loop32: do { int alt32=2; switch ( input.LA(1) ) { case REGISTER: { alt32=1; } break; } switch (alt32) { case 1 : // org/jf/smali/smaliTreeWalker.g:889:5: REGISTER { REGISTER125=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_register_list1786); if (retval.registerCount == 5) { throw new SemanticException(input, I_REGISTER_LIST124, "A list of registers can only have a maximum of 5 registers. Use the <op>/range alternate opcode instead."); } retval.registers[retval.registerCount++] = parseRegister_nibble((REGISTER125!=null?REGISTER125.getText():null), totalMethodRegisters, methodParameterRegisters); } break; default : break loop32; } } while (true); match(input, Token.UP, null); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return retval; } // $ANTLR end "register_list" public static class register_range_return extends TreeRuleReturnScope { public int startRegister; public int endRegister; }; // $ANTLR start "register_range" // org/jf/smali/smaliTreeWalker.g:897:1: register_range[int totalMethodRegisters, int methodParameterRegisters] returns [int startRegister, int endRegister] : ^( I_REGISTER_RANGE startReg= REGISTER (endReg= REGISTER )? ) ; public final smaliTreeWalker.register_range_return register_range(int totalMethodRegisters, int methodParameterRegisters) throws RecognitionException { smaliTreeWalker.register_range_return retval = new smaliTreeWalker.register_range_return(); retval.start = input.LT(1); CommonTree startReg=null; CommonTree endReg=null; CommonTree I_REGISTER_RANGE126=null; try { // org/jf/smali/smaliTreeWalker.g:898:2: ( ^( I_REGISTER_RANGE startReg= REGISTER (endReg= REGISTER )? ) ) // org/jf/smali/smaliTreeWalker.g:898:4: ^( I_REGISTER_RANGE startReg= REGISTER (endReg= REGISTER )? ) { I_REGISTER_RANGE126=(CommonTree)match(input,I_REGISTER_RANGE,FOLLOW_I_REGISTER_RANGE_in_register_range1808); match(input, Token.DOWN, null); startReg=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_register_range1812); // org/jf/smali/smaliTreeWalker.g:898:47: (endReg= REGISTER )? int alt33=2; switch ( input.LA(1) ) { case REGISTER: { alt33=1; } break; } switch (alt33) { case 1 : // org/jf/smali/smaliTreeWalker.g:898:47: endReg= REGISTER { endReg=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_register_range1816); } break; } match(input, Token.UP, null); retval.startRegister = parseRegister_short((startReg!=null?startReg.getText():null), totalMethodRegisters, methodParameterRegisters); if (endReg == null) { retval.endRegister = retval.startRegister; } else { retval.endRegister = parseRegister_short((endReg!=null?endReg.getText():null), totalMethodRegisters, methodParameterRegisters); } int registerCount = retval.endRegister-retval.startRegister+1; if (registerCount > 256) { throw new SemanticException(input, I_REGISTER_RANGE126, "A register range can span a maximum of 256 registers"); } if (registerCount < 1) { throw new SemanticException(input, I_REGISTER_RANGE126, "A register range must have the lower register listed first"); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return retval; } // $ANTLR end "register_range" // $ANTLR start "instruction" // org/jf/smali/smaliTreeWalker.g:917:1: instruction[int totalMethodRegisters, int methodParameterRegisters, List<Instruction> instructions] returns [int outRegisters] : ( ^( I_STATEMENT_FORMAT10t INSTRUCTION_FORMAT10t offset_or_label ) | ^( I_STATEMENT_FORMAT10x INSTRUCTION_FORMAT10x ) | ^( I_STATEMENT_FORMAT11n INSTRUCTION_FORMAT11n REGISTER short_integral_literal ) | ^( I_STATEMENT_FORMAT11x INSTRUCTION_FORMAT11x REGISTER ) | ^( I_STATEMENT_FORMAT12x INSTRUCTION_FORMAT12x registerA= REGISTER registerB= REGISTER ) | ^( I_STATEMENT_FORMAT20t INSTRUCTION_FORMAT20t offset_or_label ) | ^( I_STATEMENT_FORMAT21c_FIELD INSTRUCTION_FORMAT21c_FIELD REGISTER fully_qualified_field ) | ^( I_STATEMENT_FORMAT21c_STRING INSTRUCTION_FORMAT21c_STRING REGISTER string_literal ) | ^( I_STATEMENT_FORMAT21c_TYPE INSTRUCTION_FORMAT21c_TYPE REGISTER reference_type_descriptor ) | ^( I_STATEMENT_FORMAT21h INSTRUCTION_FORMAT21h REGISTER short_integral_literal ) | ^( I_STATEMENT_FORMAT21s INSTRUCTION_FORMAT21s REGISTER short_integral_literal ) | ^( I_STATEMENT_FORMAT21t INSTRUCTION_FORMAT21t REGISTER offset_or_label ) | ^( I_STATEMENT_FORMAT22b INSTRUCTION_FORMAT22b registerA= REGISTER registerB= REGISTER short_integral_literal ) | ^( I_STATEMENT_FORMAT22c_FIELD INSTRUCTION_FORMAT22c_FIELD registerA= REGISTER registerB= REGISTER fully_qualified_field ) | ^( I_STATEMENT_FORMAT22c_TYPE INSTRUCTION_FORMAT22c_TYPE registerA= REGISTER registerB= REGISTER nonvoid_type_descriptor ) | ^( I_STATEMENT_FORMAT22s INSTRUCTION_FORMAT22s registerA= REGISTER registerB= REGISTER short_integral_literal ) | ^( I_STATEMENT_FORMAT22t INSTRUCTION_FORMAT22t registerA= REGISTER registerB= REGISTER offset_or_label ) | ^( I_STATEMENT_FORMAT22x INSTRUCTION_FORMAT22x registerA= REGISTER registerB= REGISTER ) | ^( I_STATEMENT_FORMAT23x INSTRUCTION_FORMAT23x registerA= REGISTER registerB= REGISTER registerC= REGISTER ) | ^( I_STATEMENT_FORMAT30t INSTRUCTION_FORMAT30t offset_or_label ) | ^( I_STATEMENT_FORMAT31c INSTRUCTION_FORMAT31c REGISTER string_literal ) | ^( I_STATEMENT_FORMAT31i INSTRUCTION_FORMAT31i REGISTER fixed_32bit_literal ) | ^( I_STATEMENT_FORMAT31t INSTRUCTION_FORMAT31t REGISTER offset_or_label ) | ^( I_STATEMENT_FORMAT32x INSTRUCTION_FORMAT32x registerA= REGISTER registerB= REGISTER ) | ^( I_STATEMENT_FORMAT35c_METHOD INSTRUCTION_FORMAT35c_METHOD register_list[$totalMethodRegisters, $methodParameterRegisters] fully_qualified_method ) | ^( I_STATEMENT_FORMAT35c_TYPE INSTRUCTION_FORMAT35c_TYPE register_list[$totalMethodRegisters, $methodParameterRegisters] nonvoid_type_descriptor ) | ^( I_STATEMENT_FORMAT3rc_METHOD INSTRUCTION_FORMAT3rc_METHOD register_range[$totalMethodRegisters, $methodParameterRegisters] fully_qualified_method ) | ^( I_STATEMENT_FORMAT3rc_TYPE INSTRUCTION_FORMAT3rc_TYPE register_range[$totalMethodRegisters, $methodParameterRegisters] nonvoid_type_descriptor ) | ^( I_STATEMENT_FORMAT51l INSTRUCTION_FORMAT51l REGISTER fixed_64bit_literal ) | ^( I_STATEMENT_ARRAY_DATA ^( I_ARRAY_ELEMENT_SIZE short_integral_literal ) array_elements ) | ^( I_STATEMENT_PACKED_SWITCH ^( I_PACKED_SWITCH_START_KEY fixed_32bit_literal ) packed_switch_targets[baseAddress] ) | ^( I_STATEMENT_SPARSE_SWITCH sparse_switch_target_count sparse_switch_keys[$sparse_switch_target_count.targetCount] sparse_switch_targets[baseAddress, $sparse_switch_target_count.targetCount] ) ); public final int instruction(int totalMethodRegisters, int methodParameterRegisters, List<Instruction> instructions) throws RecognitionException { int outRegisters = 0; CommonTree registerA=null; CommonTree registerB=null; CommonTree registerC=null; CommonTree INSTRUCTION_FORMAT10t127=null; CommonTree INSTRUCTION_FORMAT10x129=null; CommonTree INSTRUCTION_FORMAT11n130=null; CommonTree REGISTER131=null; CommonTree INSTRUCTION_FORMAT11x133=null; CommonTree REGISTER134=null; CommonTree INSTRUCTION_FORMAT12x135=null; CommonTree INSTRUCTION_FORMAT20t136=null; CommonTree INSTRUCTION_FORMAT21c_FIELD138=null; CommonTree REGISTER139=null; CommonTree INSTRUCTION_FORMAT21c_STRING141=null; CommonTree REGISTER142=null; CommonTree INSTRUCTION_FORMAT21c_TYPE144=null; CommonTree REGISTER145=null; CommonTree INSTRUCTION_FORMAT21h147=null; CommonTree REGISTER148=null; CommonTree INSTRUCTION_FORMAT21s150=null; CommonTree REGISTER151=null; CommonTree INSTRUCTION_FORMAT21t153=null; CommonTree REGISTER154=null; CommonTree INSTRUCTION_FORMAT22b156=null; CommonTree INSTRUCTION_FORMAT22c_FIELD158=null; CommonTree INSTRUCTION_FORMAT22c_TYPE160=null; CommonTree INSTRUCTION_FORMAT22s162=null; CommonTree INSTRUCTION_FORMAT22t164=null; CommonTree INSTRUCTION_FORMAT22x166=null; CommonTree INSTRUCTION_FORMAT23x167=null; CommonTree INSTRUCTION_FORMAT30t168=null; CommonTree INSTRUCTION_FORMAT31c170=null; CommonTree REGISTER171=null; CommonTree INSTRUCTION_FORMAT31i173=null; CommonTree REGISTER174=null; CommonTree INSTRUCTION_FORMAT31t176=null; CommonTree REGISTER177=null; CommonTree INSTRUCTION_FORMAT32x179=null; CommonTree INSTRUCTION_FORMAT35c_METHOD180=null; CommonTree INSTRUCTION_FORMAT35c_TYPE183=null; CommonTree INSTRUCTION_FORMAT3rc_METHOD186=null; CommonTree INSTRUCTION_FORMAT3rc_TYPE189=null; CommonTree INSTRUCTION_FORMAT51l192=null; CommonTree REGISTER193=null; smaliTreeWalker.offset_or_label_return offset_or_label128 = null; short short_integral_literal132 = 0; smaliTreeWalker.offset_or_label_return offset_or_label137 = null; FieldIdItem fully_qualified_field140 = null; String string_literal143 = null; smaliTreeWalker.reference_type_descriptor_return reference_type_descriptor146 = null; short short_integral_literal149 = 0; short short_integral_literal152 = 0; smaliTreeWalker.offset_or_label_return offset_or_label155 = null; short short_integral_literal157 = 0; FieldIdItem fully_qualified_field159 = null; smaliTreeWalker.nonvoid_type_descriptor_return nonvoid_type_descriptor161 = null; short short_integral_literal163 = 0; smaliTreeWalker.offset_or_label_return offset_or_label165 = null; smaliTreeWalker.offset_or_label_return offset_or_label169 = null; String string_literal172 = null; int fixed_32bit_literal175 = 0; smaliTreeWalker.offset_or_label_return offset_or_label178 = null; smaliTreeWalker.register_list_return register_list181 = null; MethodIdItem fully_qualified_method182 = null; smaliTreeWalker.register_list_return register_list184 = null; smaliTreeWalker.nonvoid_type_descriptor_return nonvoid_type_descriptor185 = null; smaliTreeWalker.register_range_return register_range187 = null; MethodIdItem fully_qualified_method188 = null; smaliTreeWalker.register_range_return register_range190 = null; smaliTreeWalker.nonvoid_type_descriptor_return nonvoid_type_descriptor191 = null; long fixed_64bit_literal194 = 0; short short_integral_literal195 = 0; List<byte[]> array_elements196 = null; int fixed_32bit_literal197 = 0; int[] packed_switch_targets198 = null; int sparse_switch_target_count199 = 0; int[] sparse_switch_keys200 = null; int[] sparse_switch_targets201 = null; try { // org/jf/smali/smaliTreeWalker.g:918:2: ( ^( I_STATEMENT_FORMAT10t INSTRUCTION_FORMAT10t offset_or_label ) | ^( I_STATEMENT_FORMAT10x INSTRUCTION_FORMAT10x ) | ^( I_STATEMENT_FORMAT11n INSTRUCTION_FORMAT11n REGISTER short_integral_literal ) | ^( I_STATEMENT_FORMAT11x INSTRUCTION_FORMAT11x REGISTER ) | ^( I_STATEMENT_FORMAT12x INSTRUCTION_FORMAT12x registerA= REGISTER registerB= REGISTER ) | ^( I_STATEMENT_FORMAT20t INSTRUCTION_FORMAT20t offset_or_label ) | ^( I_STATEMENT_FORMAT21c_FIELD INSTRUCTION_FORMAT21c_FIELD REGISTER fully_qualified_field ) | ^( I_STATEMENT_FORMAT21c_STRING INSTRUCTION_FORMAT21c_STRING REGISTER string_literal ) | ^( I_STATEMENT_FORMAT21c_TYPE INSTRUCTION_FORMAT21c_TYPE REGISTER reference_type_descriptor ) | ^( I_STATEMENT_FORMAT21h INSTRUCTION_FORMAT21h REGISTER short_integral_literal ) | ^( I_STATEMENT_FORMAT21s INSTRUCTION_FORMAT21s REGISTER short_integral_literal ) | ^( I_STATEMENT_FORMAT21t INSTRUCTION_FORMAT21t REGISTER offset_or_label ) | ^( I_STATEMENT_FORMAT22b INSTRUCTION_FORMAT22b registerA= REGISTER registerB= REGISTER short_integral_literal ) | ^( I_STATEMENT_FORMAT22c_FIELD INSTRUCTION_FORMAT22c_FIELD registerA= REGISTER registerB= REGISTER fully_qualified_field ) | ^( I_STATEMENT_FORMAT22c_TYPE INSTRUCTION_FORMAT22c_TYPE registerA= REGISTER registerB= REGISTER nonvoid_type_descriptor ) | ^( I_STATEMENT_FORMAT22s INSTRUCTION_FORMAT22s registerA= REGISTER registerB= REGISTER short_integral_literal ) | ^( I_STATEMENT_FORMAT22t INSTRUCTION_FORMAT22t registerA= REGISTER registerB= REGISTER offset_or_label ) | ^( I_STATEMENT_FORMAT22x INSTRUCTION_FORMAT22x registerA= REGISTER registerB= REGISTER ) | ^( I_STATEMENT_FORMAT23x INSTRUCTION_FORMAT23x registerA= REGISTER registerB= REGISTER registerC= REGISTER ) | ^( I_STATEMENT_FORMAT30t INSTRUCTION_FORMAT30t offset_or_label ) | ^( I_STATEMENT_FORMAT31c INSTRUCTION_FORMAT31c REGISTER string_literal ) | ^( I_STATEMENT_FORMAT31i INSTRUCTION_FORMAT31i REGISTER fixed_32bit_literal ) | ^( I_STATEMENT_FORMAT31t INSTRUCTION_FORMAT31t REGISTER offset_or_label ) | ^( I_STATEMENT_FORMAT32x INSTRUCTION_FORMAT32x registerA= REGISTER registerB= REGISTER ) | ^( I_STATEMENT_FORMAT35c_METHOD INSTRUCTION_FORMAT35c_METHOD register_list[$totalMethodRegisters, $methodParameterRegisters] fully_qualified_method ) | ^( I_STATEMENT_FORMAT35c_TYPE INSTRUCTION_FORMAT35c_TYPE register_list[$totalMethodRegisters, $methodParameterRegisters] nonvoid_type_descriptor ) | ^( I_STATEMENT_FORMAT3rc_METHOD INSTRUCTION_FORMAT3rc_METHOD register_range[$totalMethodRegisters, $methodParameterRegisters] fully_qualified_method ) | ^( I_STATEMENT_FORMAT3rc_TYPE INSTRUCTION_FORMAT3rc_TYPE register_range[$totalMethodRegisters, $methodParameterRegisters] nonvoid_type_descriptor ) | ^( I_STATEMENT_FORMAT51l INSTRUCTION_FORMAT51l REGISTER fixed_64bit_literal ) | ^( I_STATEMENT_ARRAY_DATA ^( I_ARRAY_ELEMENT_SIZE short_integral_literal ) array_elements ) | ^( I_STATEMENT_PACKED_SWITCH ^( I_PACKED_SWITCH_START_KEY fixed_32bit_literal ) packed_switch_targets[baseAddress] ) | ^( I_STATEMENT_SPARSE_SWITCH sparse_switch_target_count sparse_switch_keys[$sparse_switch_target_count.targetCount] sparse_switch_targets[baseAddress, $sparse_switch_target_count.targetCount] ) ) int alt34=32; switch ( input.LA(1) ) { case I_STATEMENT_FORMAT10t: { alt34=1; } break; case I_STATEMENT_FORMAT10x: { alt34=2; } break; case I_STATEMENT_FORMAT11n: { alt34=3; } break; case I_STATEMENT_FORMAT11x: { alt34=4; } break; case I_STATEMENT_FORMAT12x: { alt34=5; } break; case I_STATEMENT_FORMAT20t: { alt34=6; } break; case I_STATEMENT_FORMAT21c_FIELD: { alt34=7; } break; case I_STATEMENT_FORMAT21c_STRING: { alt34=8; } break; case I_STATEMENT_FORMAT21c_TYPE: { alt34=9; } break; case I_STATEMENT_FORMAT21h: { alt34=10; } break; case I_STATEMENT_FORMAT21s: { alt34=11; } break; case I_STATEMENT_FORMAT21t: { alt34=12; } break; case I_STATEMENT_FORMAT22b: { alt34=13; } break; case I_STATEMENT_FORMAT22c_FIELD: { alt34=14; } break; case I_STATEMENT_FORMAT22c_TYPE: { alt34=15; } break; case I_STATEMENT_FORMAT22s: { alt34=16; } break; case I_STATEMENT_FORMAT22t: { alt34=17; } break; case I_STATEMENT_FORMAT22x: { alt34=18; } break; case I_STATEMENT_FORMAT23x: { alt34=19; } break; case I_STATEMENT_FORMAT30t: { alt34=20; } break; case I_STATEMENT_FORMAT31c: { alt34=21; } break; case I_STATEMENT_FORMAT31i: { alt34=22; } break; case I_STATEMENT_FORMAT31t: { alt34=23; } break; case I_STATEMENT_FORMAT32x: { alt34=24; } break; case I_STATEMENT_FORMAT35c_METHOD: { alt34=25; } break; case I_STATEMENT_FORMAT35c_TYPE: { alt34=26; } break; case I_STATEMENT_FORMAT3rc_METHOD: { alt34=27; } break; case I_STATEMENT_FORMAT3rc_TYPE: { alt34=28; } break; case I_STATEMENT_FORMAT51l: { alt34=29; } break; case I_STATEMENT_ARRAY_DATA: { alt34=30; } break; case I_STATEMENT_PACKED_SWITCH: { alt34=31; } break; case I_STATEMENT_SPARSE_SWITCH: { alt34=32; } break; default: NoViableAltException nvae = new NoViableAltException("", 34, 0, input); throw nvae; } switch (alt34) { case 1 : // org/jf/smali/smaliTreeWalker.g:919:3: ^( I_STATEMENT_FORMAT10t INSTRUCTION_FORMAT10t offset_or_label ) { outRegisters = 0; match(input,I_STATEMENT_FORMAT10t,FOLLOW_I_STATEMENT_FORMAT10t_in_instruction1845); match(input, Token.DOWN, null); INSTRUCTION_FORMAT10t127=(CommonTree)match(input,INSTRUCTION_FORMAT10t,FOLLOW_INSTRUCTION_FORMAT10t_in_instruction1847); pushFollow(FOLLOW_offset_or_label_in_instruction1849); offset_or_label128=offset_or_label(); state._fsp--; match(input, Token.UP, null); Opcode opcode = Opcode.getOpcodeByName((INSTRUCTION_FORMAT10t127!=null?INSTRUCTION_FORMAT10t127.getText():null)); int addressOffset = (offset_or_label128!=null?offset_or_label128.offsetValue:0); instructions.add(new Instruction10t(opcode, addressOffset)); } break; case 2 : // org/jf/smali/smaliTreeWalker.g:929:3: ^( I_STATEMENT_FORMAT10x INSTRUCTION_FORMAT10x ) { match(input,I_STATEMENT_FORMAT10x,FOLLOW_I_STATEMENT_FORMAT10x_in_instruction1863); match(input, Token.DOWN, null); INSTRUCTION_FORMAT10x129=(CommonTree)match(input,INSTRUCTION_FORMAT10x,FOLLOW_INSTRUCTION_FORMAT10x_in_instruction1865); match(input, Token.UP, null); Opcode opcode = Opcode.getOpcodeByName((INSTRUCTION_FORMAT10x129!=null?INSTRUCTION_FORMAT10x129.getText():null)); instructions.add(new Instruction10x(opcode)); } break; case 3 : // org/jf/smali/smaliTreeWalker.g:935:3: ^( I_STATEMENT_FORMAT11n INSTRUCTION_FORMAT11n REGISTER short_integral_literal ) { match(input,I_STATEMENT_FORMAT11n,FOLLOW_I_STATEMENT_FORMAT11n_in_instruction1879); match(input, Token.DOWN, null); INSTRUCTION_FORMAT11n130=(CommonTree)match(input,INSTRUCTION_FORMAT11n,FOLLOW_INSTRUCTION_FORMAT11n_in_instruction1881); REGISTER131=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_instruction1883); pushFollow(FOLLOW_short_integral_literal_in_instruction1885); short_integral_literal132=short_integral_literal(); state._fsp--; match(input, Token.UP, null); Opcode opcode = Opcode.getOpcodeByName((INSTRUCTION_FORMAT11n130!=null?INSTRUCTION_FORMAT11n130.getText():null)); byte regA = parseRegister_nibble((REGISTER131!=null?REGISTER131.getText():null), totalMethodRegisters, methodParameterRegisters); short litB = short_integral_literal132; literalTools.checkNibble(litB); instructions.add(new Instruction11n(opcode, regA, (byte)litB)); } break; case 4 : // org/jf/smali/smaliTreeWalker.g:946:3: ^( I_STATEMENT_FORMAT11x INSTRUCTION_FORMAT11x REGISTER ) { match(input,I_STATEMENT_FORMAT11x,FOLLOW_I_STATEMENT_FORMAT11x_in_instruction1899); match(input, Token.DOWN, null); INSTRUCTION_FORMAT11x133=(CommonTree)match(input,INSTRUCTION_FORMAT11x,FOLLOW_INSTRUCTION_FORMAT11x_in_instruction1901); REGISTER134=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_instruction1903); match(input, Token.UP, null); Opcode opcode = Opcode.getOpcodeByName((INSTRUCTION_FORMAT11x133!=null?INSTRUCTION_FORMAT11x133.getText():null)); short regA = parseRegister_byte((REGISTER134!=null?REGISTER134.getText():null), totalMethodRegisters, methodParameterRegisters); instructions.add(new Instruction11x(opcode, regA)); } break; case 5 : // org/jf/smali/smaliTreeWalker.g:954:3: ^( I_STATEMENT_FORMAT12x INSTRUCTION_FORMAT12x registerA= REGISTER registerB= REGISTER ) { match(input,I_STATEMENT_FORMAT12x,FOLLOW_I_STATEMENT_FORMAT12x_in_instruction1917); match(input, Token.DOWN, null); INSTRUCTION_FORMAT12x135=(CommonTree)match(input,INSTRUCTION_FORMAT12x,FOLLOW_INSTRUCTION_FORMAT12x_in_instruction1919); registerA=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_instruction1923); registerB=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_instruction1927); match(input, Token.UP, null); Opcode opcode = Opcode.getOpcodeByName((INSTRUCTION_FORMAT12x135!=null?INSTRUCTION_FORMAT12x135.getText():null)); byte regA = parseRegister_nibble((registerA!=null?registerA.getText():null), totalMethodRegisters, methodParameterRegisters); byte regB = parseRegister_nibble((registerB!=null?registerB.getText():null), totalMethodRegisters, methodParameterRegisters); instructions.add(new Instruction12x(opcode, regA, regB)); } break; case 6 : // org/jf/smali/smaliTreeWalker.g:963:3: ^( I_STATEMENT_FORMAT20t INSTRUCTION_FORMAT20t offset_or_label ) { match(input,I_STATEMENT_FORMAT20t,FOLLOW_I_STATEMENT_FORMAT20t_in_instruction1941); match(input, Token.DOWN, null); INSTRUCTION_FORMAT20t136=(CommonTree)match(input,INSTRUCTION_FORMAT20t,FOLLOW_INSTRUCTION_FORMAT20t_in_instruction1943); pushFollow(FOLLOW_offset_or_label_in_instruction1945); offset_or_label137=offset_or_label(); state._fsp--; match(input, Token.UP, null); Opcode opcode = Opcode.getOpcodeByName((INSTRUCTION_FORMAT20t136!=null?INSTRUCTION_FORMAT20t136.getText():null)); int addressOffset = (offset_or_label137!=null?offset_or_label137.offsetValue:0); instructions.add(new Instruction20t(opcode, addressOffset)); } break; case 7 : // org/jf/smali/smaliTreeWalker.g:972:3: ^( I_STATEMENT_FORMAT21c_FIELD INSTRUCTION_FORMAT21c_FIELD REGISTER fully_qualified_field ) { match(input,I_STATEMENT_FORMAT21c_FIELD,FOLLOW_I_STATEMENT_FORMAT21c_FIELD_in_instruction1959); match(input, Token.DOWN, null); INSTRUCTION_FORMAT21c_FIELD138=(CommonTree)match(input,INSTRUCTION_FORMAT21c_FIELD,FOLLOW_INSTRUCTION_FORMAT21c_FIELD_in_instruction1961); REGISTER139=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_instruction1963); pushFollow(FOLLOW_fully_qualified_field_in_instruction1965); fully_qualified_field140=fully_qualified_field(); state._fsp--; match(input, Token.UP, null); Opcode opcode = Opcode.getOpcodeByName((INSTRUCTION_FORMAT21c_FIELD138!=null?INSTRUCTION_FORMAT21c_FIELD138.getText():null)); short regA = parseRegister_byte((REGISTER139!=null?REGISTER139.getText():null), totalMethodRegisters, methodParameterRegisters); FieldIdItem fieldIdItem = fully_qualified_field140; instructions.add(new Instruction21c(opcode, regA, fieldIdItem)); } break; case 8 : // org/jf/smali/smaliTreeWalker.g:982:3: ^( I_STATEMENT_FORMAT21c_STRING INSTRUCTION_FORMAT21c_STRING REGISTER string_literal ) { match(input,I_STATEMENT_FORMAT21c_STRING,FOLLOW_I_STATEMENT_FORMAT21c_STRING_in_instruction1979); match(input, Token.DOWN, null); INSTRUCTION_FORMAT21c_STRING141=(CommonTree)match(input,INSTRUCTION_FORMAT21c_STRING,FOLLOW_INSTRUCTION_FORMAT21c_STRING_in_instruction1981); REGISTER142=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_instruction1983); pushFollow(FOLLOW_string_literal_in_instruction1985); string_literal143=string_literal(); state._fsp--; match(input, Token.UP, null); Opcode opcode = Opcode.getOpcodeByName((INSTRUCTION_FORMAT21c_STRING141!=null?INSTRUCTION_FORMAT21c_STRING141.getText():null)); short regA = parseRegister_byte((REGISTER142!=null?REGISTER142.getText():null), totalMethodRegisters, methodParameterRegisters); StringIdItem stringIdItem = StringIdItem.internStringIdItem(dexFile, string_literal143); instructions.add(new Instruction21c(opcode, regA, stringIdItem)); } break; case 9 : // org/jf/smali/smaliTreeWalker.g:992:3: ^( I_STATEMENT_FORMAT21c_TYPE INSTRUCTION_FORMAT21c_TYPE REGISTER reference_type_descriptor ) { match(input,I_STATEMENT_FORMAT21c_TYPE,FOLLOW_I_STATEMENT_FORMAT21c_TYPE_in_instruction1999); match(input, Token.DOWN, null); INSTRUCTION_FORMAT21c_TYPE144=(CommonTree)match(input,INSTRUCTION_FORMAT21c_TYPE,FOLLOW_INSTRUCTION_FORMAT21c_TYPE_in_instruction2001); REGISTER145=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_instruction2003); pushFollow(FOLLOW_reference_type_descriptor_in_instruction2005); reference_type_descriptor146=reference_type_descriptor(); state._fsp--; match(input, Token.UP, null); Opcode opcode = Opcode.getOpcodeByName((INSTRUCTION_FORMAT21c_TYPE144!=null?INSTRUCTION_FORMAT21c_TYPE144.getText():null)); short regA = parseRegister_byte((REGISTER145!=null?REGISTER145.getText():null), totalMethodRegisters, methodParameterRegisters); TypeIdItem typeIdItem = (reference_type_descriptor146!=null?reference_type_descriptor146.type:null); instructions.add(new Instruction21c(opcode, regA, typeIdItem)); } break; case 10 : // org/jf/smali/smaliTreeWalker.g:1002:3: ^( I_STATEMENT_FORMAT21h INSTRUCTION_FORMAT21h REGISTER short_integral_literal ) { match(input,I_STATEMENT_FORMAT21h,FOLLOW_I_STATEMENT_FORMAT21h_in_instruction2019); match(input, Token.DOWN, null); INSTRUCTION_FORMAT21h147=(CommonTree)match(input,INSTRUCTION_FORMAT21h,FOLLOW_INSTRUCTION_FORMAT21h_in_instruction2021); REGISTER148=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_instruction2023); pushFollow(FOLLOW_short_integral_literal_in_instruction2025); short_integral_literal149=short_integral_literal(); state._fsp--; match(input, Token.UP, null); Opcode opcode = Opcode.getOpcodeByName((INSTRUCTION_FORMAT21h147!=null?INSTRUCTION_FORMAT21h147.getText():null)); short regA = parseRegister_byte((REGISTER148!=null?REGISTER148.getText():null), totalMethodRegisters, methodParameterRegisters); short litB = short_integral_literal149; instructions.add(new Instruction21h(opcode, regA, litB)); } break; case 11 : // org/jf/smali/smaliTreeWalker.g:1012:3: ^( I_STATEMENT_FORMAT21s INSTRUCTION_FORMAT21s REGISTER short_integral_literal ) { match(input,I_STATEMENT_FORMAT21s,FOLLOW_I_STATEMENT_FORMAT21s_in_instruction2039); match(input, Token.DOWN, null); INSTRUCTION_FORMAT21s150=(CommonTree)match(input,INSTRUCTION_FORMAT21s,FOLLOW_INSTRUCTION_FORMAT21s_in_instruction2041); REGISTER151=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_instruction2043); pushFollow(FOLLOW_short_integral_literal_in_instruction2045); short_integral_literal152=short_integral_literal(); state._fsp--; match(input, Token.UP, null); Opcode opcode = Opcode.getOpcodeByName((INSTRUCTION_FORMAT21s150!=null?INSTRUCTION_FORMAT21s150.getText():null)); short regA = parseRegister_byte((REGISTER151!=null?REGISTER151.getText():null), totalMethodRegisters, methodParameterRegisters); short litB = short_integral_literal152; instructions.add(new Instruction21s(opcode, regA, litB)); } break; case 12 : // org/jf/smali/smaliTreeWalker.g:1022:3: ^( I_STATEMENT_FORMAT21t INSTRUCTION_FORMAT21t REGISTER offset_or_label ) { match(input,I_STATEMENT_FORMAT21t,FOLLOW_I_STATEMENT_FORMAT21t_in_instruction2059); match(input, Token.DOWN, null); INSTRUCTION_FORMAT21t153=(CommonTree)match(input,INSTRUCTION_FORMAT21t,FOLLOW_INSTRUCTION_FORMAT21t_in_instruction2061); REGISTER154=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_instruction2063); pushFollow(FOLLOW_offset_or_label_in_instruction2065); offset_or_label155=offset_or_label(); state._fsp--; match(input, Token.UP, null); Opcode opcode = Opcode.getOpcodeByName((INSTRUCTION_FORMAT21t153!=null?INSTRUCTION_FORMAT21t153.getText():null)); short regA = parseRegister_byte((REGISTER154!=null?REGISTER154.getText():null), totalMethodRegisters, methodParameterRegisters); int addressOffset = (offset_or_label155!=null?offset_or_label155.offsetValue:0); if (addressOffset < Short.MIN_VALUE || addressOffset > Short.MAX_VALUE) { throw new SemanticException(input, (offset_or_label155!=null?((CommonTree)offset_or_label155.start):null), "The offset/label is out of range. The offset is " + Integer.toString(addressOffset) + " and the range for this opcode is [-32768, 32767]."); } instructions.add(new Instruction21t(opcode, regA, (short)addressOffset)); } break; case 13 : // org/jf/smali/smaliTreeWalker.g:1036:3: ^( I_STATEMENT_FORMAT22b INSTRUCTION_FORMAT22b registerA= REGISTER registerB= REGISTER short_integral_literal ) { match(input,I_STATEMENT_FORMAT22b,FOLLOW_I_STATEMENT_FORMAT22b_in_instruction2079); match(input, Token.DOWN, null); INSTRUCTION_FORMAT22b156=(CommonTree)match(input,INSTRUCTION_FORMAT22b,FOLLOW_INSTRUCTION_FORMAT22b_in_instruction2081); registerA=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_instruction2085); registerB=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_instruction2089); pushFollow(FOLLOW_short_integral_literal_in_instruction2091); short_integral_literal157=short_integral_literal(); state._fsp--; match(input, Token.UP, null); Opcode opcode = Opcode.getOpcodeByName((INSTRUCTION_FORMAT22b156!=null?INSTRUCTION_FORMAT22b156.getText():null)); short regA = parseRegister_byte((registerA!=null?registerA.getText():null), totalMethodRegisters, methodParameterRegisters); short regB = parseRegister_byte((registerB!=null?registerB.getText():null), totalMethodRegisters, methodParameterRegisters); short litC = short_integral_literal157; literalTools.checkByte(litC); instructions.add(new Instruction22b(opcode, regA, regB, (byte)litC)); } break; case 14 : // org/jf/smali/smaliTreeWalker.g:1048:3: ^( I_STATEMENT_FORMAT22c_FIELD INSTRUCTION_FORMAT22c_FIELD registerA= REGISTER registerB= REGISTER fully_qualified_field ) { match(input,I_STATEMENT_FORMAT22c_FIELD,FOLLOW_I_STATEMENT_FORMAT22c_FIELD_in_instruction2105); match(input, Token.DOWN, null); INSTRUCTION_FORMAT22c_FIELD158=(CommonTree)match(input,INSTRUCTION_FORMAT22c_FIELD,FOLLOW_INSTRUCTION_FORMAT22c_FIELD_in_instruction2107); registerA=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_instruction2111); registerB=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_instruction2115); pushFollow(FOLLOW_fully_qualified_field_in_instruction2117); fully_qualified_field159=fully_qualified_field(); state._fsp--; match(input, Token.UP, null); Opcode opcode = Opcode.getOpcodeByName((INSTRUCTION_FORMAT22c_FIELD158!=null?INSTRUCTION_FORMAT22c_FIELD158.getText():null)); byte regA = parseRegister_nibble((registerA!=null?registerA.getText():null), totalMethodRegisters, methodParameterRegisters); byte regB = parseRegister_nibble((registerB!=null?registerB.getText():null), totalMethodRegisters, methodParameterRegisters); FieldIdItem fieldIdItem = fully_qualified_field159; instructions.add(new Instruction22c(opcode, regA, regB, fieldIdItem)); } break; case 15 : // org/jf/smali/smaliTreeWalker.g:1059:3: ^( I_STATEMENT_FORMAT22c_TYPE INSTRUCTION_FORMAT22c_TYPE registerA= REGISTER registerB= REGISTER nonvoid_type_descriptor ) { match(input,I_STATEMENT_FORMAT22c_TYPE,FOLLOW_I_STATEMENT_FORMAT22c_TYPE_in_instruction2131); match(input, Token.DOWN, null); INSTRUCTION_FORMAT22c_TYPE160=(CommonTree)match(input,INSTRUCTION_FORMAT22c_TYPE,FOLLOW_INSTRUCTION_FORMAT22c_TYPE_in_instruction2133); registerA=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_instruction2137); registerB=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_instruction2141); pushFollow(FOLLOW_nonvoid_type_descriptor_in_instruction2143); nonvoid_type_descriptor161=nonvoid_type_descriptor(); state._fsp--; match(input, Token.UP, null); Opcode opcode = Opcode.getOpcodeByName((INSTRUCTION_FORMAT22c_TYPE160!=null?INSTRUCTION_FORMAT22c_TYPE160.getText():null)); byte regA = parseRegister_nibble((registerA!=null?registerA.getText():null), totalMethodRegisters, methodParameterRegisters); byte regB = parseRegister_nibble((registerB!=null?registerB.getText():null), totalMethodRegisters, methodParameterRegisters); TypeIdItem typeIdItem = (nonvoid_type_descriptor161!=null?nonvoid_type_descriptor161.type:null); instructions.add(new Instruction22c(opcode, regA, regB, typeIdItem)); } break; case 16 : // org/jf/smali/smaliTreeWalker.g:1070:3: ^( I_STATEMENT_FORMAT22s INSTRUCTION_FORMAT22s registerA= REGISTER registerB= REGISTER short_integral_literal ) { match(input,I_STATEMENT_FORMAT22s,FOLLOW_I_STATEMENT_FORMAT22s_in_instruction2157); match(input, Token.DOWN, null); INSTRUCTION_FORMAT22s162=(CommonTree)match(input,INSTRUCTION_FORMAT22s,FOLLOW_INSTRUCTION_FORMAT22s_in_instruction2159); registerA=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_instruction2163); registerB=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_instruction2167); pushFollow(FOLLOW_short_integral_literal_in_instruction2169); short_integral_literal163=short_integral_literal(); state._fsp--; match(input, Token.UP, null); Opcode opcode = Opcode.getOpcodeByName((INSTRUCTION_FORMAT22s162!=null?INSTRUCTION_FORMAT22s162.getText():null)); byte regA = parseRegister_nibble((registerA!=null?registerA.getText():null), totalMethodRegisters, methodParameterRegisters); byte regB = parseRegister_nibble((registerB!=null?registerB.getText():null), totalMethodRegisters, methodParameterRegisters); short litC = short_integral_literal163; instructions.add(new Instruction22s(opcode, regA, regB, litC)); } break; case 17 : // org/jf/smali/smaliTreeWalker.g:1081:3: ^( I_STATEMENT_FORMAT22t INSTRUCTION_FORMAT22t registerA= REGISTER registerB= REGISTER offset_or_label ) { match(input,I_STATEMENT_FORMAT22t,FOLLOW_I_STATEMENT_FORMAT22t_in_instruction2183); match(input, Token.DOWN, null); INSTRUCTION_FORMAT22t164=(CommonTree)match(input,INSTRUCTION_FORMAT22t,FOLLOW_INSTRUCTION_FORMAT22t_in_instruction2185); registerA=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_instruction2189); registerB=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_instruction2193); pushFollow(FOLLOW_offset_or_label_in_instruction2195); offset_or_label165=offset_or_label(); state._fsp--; match(input, Token.UP, null); Opcode opcode = Opcode.getOpcodeByName((INSTRUCTION_FORMAT22t164!=null?INSTRUCTION_FORMAT22t164.getText():null)); byte regA = parseRegister_nibble((registerA!=null?registerA.getText():null), totalMethodRegisters, methodParameterRegisters); byte regB = parseRegister_nibble((registerB!=null?registerB.getText():null), totalMethodRegisters, methodParameterRegisters); int addressOffset = (offset_or_label165!=null?offset_or_label165.offsetValue:0); if (addressOffset < Short.MIN_VALUE || addressOffset > Short.MAX_VALUE) { throw new SemanticException(input, (offset_or_label165!=null?((CommonTree)offset_or_label165.start):null), "The offset/label is out of range. The offset is " + Integer.toString(addressOffset) + " and the range for this opcode is [-32768, 32767]."); } instructions.add(new Instruction22t(opcode, regA, regB, (short)addressOffset)); } break; case 18 : // org/jf/smali/smaliTreeWalker.g:1096:3: ^( I_STATEMENT_FORMAT22x INSTRUCTION_FORMAT22x registerA= REGISTER registerB= REGISTER ) { match(input,I_STATEMENT_FORMAT22x,FOLLOW_I_STATEMENT_FORMAT22x_in_instruction2209); match(input, Token.DOWN, null); INSTRUCTION_FORMAT22x166=(CommonTree)match(input,INSTRUCTION_FORMAT22x,FOLLOW_INSTRUCTION_FORMAT22x_in_instruction2211); registerA=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_instruction2215); registerB=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_instruction2219); match(input, Token.UP, null); Opcode opcode = Opcode.getOpcodeByName((INSTRUCTION_FORMAT22x166!=null?INSTRUCTION_FORMAT22x166.getText():null)); short regA = parseRegister_byte((registerA!=null?registerA.getText():null), totalMethodRegisters, methodParameterRegisters); int regB = parseRegister_short((registerB!=null?registerB.getText():null), totalMethodRegisters, methodParameterRegisters); instructions.add(new Instruction22x(opcode, regA, regB)); } break; case 19 : // org/jf/smali/smaliTreeWalker.g:1105:3: ^( I_STATEMENT_FORMAT23x INSTRUCTION_FORMAT23x registerA= REGISTER registerB= REGISTER registerC= REGISTER ) { match(input,I_STATEMENT_FORMAT23x,FOLLOW_I_STATEMENT_FORMAT23x_in_instruction2233); match(input, Token.DOWN, null); INSTRUCTION_FORMAT23x167=(CommonTree)match(input,INSTRUCTION_FORMAT23x,FOLLOW_INSTRUCTION_FORMAT23x_in_instruction2235); registerA=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_instruction2239); registerB=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_instruction2243); registerC=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_instruction2247); match(input, Token.UP, null); Opcode opcode = Opcode.getOpcodeByName((INSTRUCTION_FORMAT23x167!=null?INSTRUCTION_FORMAT23x167.getText():null)); short regA = parseRegister_byte((registerA!=null?registerA.getText():null), totalMethodRegisters, methodParameterRegisters); short regB = parseRegister_byte((registerB!=null?registerB.getText():null), totalMethodRegisters, methodParameterRegisters); short regC = parseRegister_byte((registerC!=null?registerC.getText():null), totalMethodRegisters, methodParameterRegisters); instructions.add(new Instruction23x(opcode, regA, regB, regC)); } break; case 20 : // org/jf/smali/smaliTreeWalker.g:1115:3: ^( I_STATEMENT_FORMAT30t INSTRUCTION_FORMAT30t offset_or_label ) { match(input,I_STATEMENT_FORMAT30t,FOLLOW_I_STATEMENT_FORMAT30t_in_instruction2261); match(input, Token.DOWN, null); INSTRUCTION_FORMAT30t168=(CommonTree)match(input,INSTRUCTION_FORMAT30t,FOLLOW_INSTRUCTION_FORMAT30t_in_instruction2263); pushFollow(FOLLOW_offset_or_label_in_instruction2265); offset_or_label169=offset_or_label(); state._fsp--; match(input, Token.UP, null); Opcode opcode = Opcode.getOpcodeByName((INSTRUCTION_FORMAT30t168!=null?INSTRUCTION_FORMAT30t168.getText():null)); int addressOffset = (offset_or_label169!=null?offset_or_label169.offsetValue:0); instructions.add(new Instruction30t(opcode, addressOffset)); } break; case 21 : // org/jf/smali/smaliTreeWalker.g:1124:3: ^( I_STATEMENT_FORMAT31c INSTRUCTION_FORMAT31c REGISTER string_literal ) { match(input,I_STATEMENT_FORMAT31c,FOLLOW_I_STATEMENT_FORMAT31c_in_instruction2279); match(input, Token.DOWN, null); INSTRUCTION_FORMAT31c170=(CommonTree)match(input,INSTRUCTION_FORMAT31c,FOLLOW_INSTRUCTION_FORMAT31c_in_instruction2281); REGISTER171=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_instruction2283); pushFollow(FOLLOW_string_literal_in_instruction2285); string_literal172=string_literal(); state._fsp--; match(input, Token.UP, null); Opcode opcode = Opcode.getOpcodeByName((INSTRUCTION_FORMAT31c170!=null?INSTRUCTION_FORMAT31c170.getText():null)); short regA = parseRegister_byte((REGISTER171!=null?REGISTER171.getText():null), totalMethodRegisters, methodParameterRegisters); StringIdItem stringIdItem = StringIdItem.internStringIdItem(dexFile, string_literal172); instructions.add(new Instruction31c(opcode, regA, stringIdItem)); } break; case 22 : // org/jf/smali/smaliTreeWalker.g:1134:3: ^( I_STATEMENT_FORMAT31i INSTRUCTION_FORMAT31i REGISTER fixed_32bit_literal ) { match(input,I_STATEMENT_FORMAT31i,FOLLOW_I_STATEMENT_FORMAT31i_in_instruction2299); match(input, Token.DOWN, null); INSTRUCTION_FORMAT31i173=(CommonTree)match(input,INSTRUCTION_FORMAT31i,FOLLOW_INSTRUCTION_FORMAT31i_in_instruction2301); REGISTER174=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_instruction2303); pushFollow(FOLLOW_fixed_32bit_literal_in_instruction2305); fixed_32bit_literal175=fixed_32bit_literal(); state._fsp--; match(input, Token.UP, null); Opcode opcode = Opcode.getOpcodeByName((INSTRUCTION_FORMAT31i173!=null?INSTRUCTION_FORMAT31i173.getText():null)); short regA = parseRegister_byte((REGISTER174!=null?REGISTER174.getText():null), totalMethodRegisters, methodParameterRegisters); int litB = fixed_32bit_literal175; instructions.add(new Instruction31i(opcode, regA, litB)); } break; case 23 : // org/jf/smali/smaliTreeWalker.g:1144:3: ^( I_STATEMENT_FORMAT31t INSTRUCTION_FORMAT31t REGISTER offset_or_label ) { match(input,I_STATEMENT_FORMAT31t,FOLLOW_I_STATEMENT_FORMAT31t_in_instruction2319); match(input, Token.DOWN, null); INSTRUCTION_FORMAT31t176=(CommonTree)match(input,INSTRUCTION_FORMAT31t,FOLLOW_INSTRUCTION_FORMAT31t_in_instruction2321); REGISTER177=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_instruction2323); pushFollow(FOLLOW_offset_or_label_in_instruction2325); offset_or_label178=offset_or_label(); state._fsp--; match(input, Token.UP, null); Opcode opcode = Opcode.getOpcodeByName((INSTRUCTION_FORMAT31t176!=null?INSTRUCTION_FORMAT31t176.getText():null)); short regA = parseRegister_byte((REGISTER177!=null?REGISTER177.getText():null), totalMethodRegisters, methodParameterRegisters); int addressOffset = (offset_or_label178!=null?offset_or_label178.offsetValue:0); if ((((method_scope)method_stack.peek()).currentAddress + addressOffset) % 2 != 0) { addressOffset++; } instructions.add(new Instruction31t(opcode, regA, addressOffset)); } break; case 24 : // org/jf/smali/smaliTreeWalker.g:1158:3: ^( I_STATEMENT_FORMAT32x INSTRUCTION_FORMAT32x registerA= REGISTER registerB= REGISTER ) { match(input,I_STATEMENT_FORMAT32x,FOLLOW_I_STATEMENT_FORMAT32x_in_instruction2339); match(input, Token.DOWN, null); INSTRUCTION_FORMAT32x179=(CommonTree)match(input,INSTRUCTION_FORMAT32x,FOLLOW_INSTRUCTION_FORMAT32x_in_instruction2341); registerA=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_instruction2345); registerB=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_instruction2349); match(input, Token.UP, null); Opcode opcode = Opcode.getOpcodeByName((INSTRUCTION_FORMAT32x179!=null?INSTRUCTION_FORMAT32x179.getText():null)); int regA = parseRegister_short((registerA!=null?registerA.getText():null), totalMethodRegisters, methodParameterRegisters); int regB = parseRegister_short((registerB!=null?registerB.getText():null), totalMethodRegisters, methodParameterRegisters); instructions.add(new Instruction32x(opcode, regA, regB)); } break; case 25 : // org/jf/smali/smaliTreeWalker.g:1167:3: ^( I_STATEMENT_FORMAT35c_METHOD INSTRUCTION_FORMAT35c_METHOD register_list[$totalMethodRegisters, $methodParameterRegisters] fully_qualified_method ) { match(input,I_STATEMENT_FORMAT35c_METHOD,FOLLOW_I_STATEMENT_FORMAT35c_METHOD_in_instruction2363); match(input, Token.DOWN, null); INSTRUCTION_FORMAT35c_METHOD180=(CommonTree)match(input,INSTRUCTION_FORMAT35c_METHOD,FOLLOW_INSTRUCTION_FORMAT35c_METHOD_in_instruction2365); pushFollow(FOLLOW_register_list_in_instruction2367); register_list181=register_list(totalMethodRegisters, methodParameterRegisters); state._fsp--; pushFollow(FOLLOW_fully_qualified_method_in_instruction2370); fully_qualified_method182=fully_qualified_method(); state._fsp--; match(input, Token.UP, null); Opcode opcode = Opcode.getOpcodeByName((INSTRUCTION_FORMAT35c_METHOD180!=null?INSTRUCTION_FORMAT35c_METHOD180.getText():null)); //this depends on the fact that register_list returns a byte[5] byte[] registers = (register_list181!=null?register_list181.registers:null); byte registerCount = (register_list181!=null?register_list181.registerCount:0); outRegisters = registerCount; MethodIdItem methodIdItem = fully_qualified_method182; instructions.add(new Instruction35c(opcode, registerCount, registers[0], registers[1], registers[2], registers[3], registers[4], methodIdItem)); } break; case 26 : // org/jf/smali/smaliTreeWalker.g:1181:3: ^( I_STATEMENT_FORMAT35c_TYPE INSTRUCTION_FORMAT35c_TYPE register_list[$totalMethodRegisters, $methodParameterRegisters] nonvoid_type_descriptor ) { match(input,I_STATEMENT_FORMAT35c_TYPE,FOLLOW_I_STATEMENT_FORMAT35c_TYPE_in_instruction2384); match(input, Token.DOWN, null); INSTRUCTION_FORMAT35c_TYPE183=(CommonTree)match(input,INSTRUCTION_FORMAT35c_TYPE,FOLLOW_INSTRUCTION_FORMAT35c_TYPE_in_instruction2386); pushFollow(FOLLOW_register_list_in_instruction2388); register_list184=register_list(totalMethodRegisters, methodParameterRegisters); state._fsp--; pushFollow(FOLLOW_nonvoid_type_descriptor_in_instruction2391); nonvoid_type_descriptor185=nonvoid_type_descriptor(); state._fsp--; match(input, Token.UP, null); Opcode opcode = Opcode.getOpcodeByName((INSTRUCTION_FORMAT35c_TYPE183!=null?INSTRUCTION_FORMAT35c_TYPE183.getText():null)); //this depends on the fact that register_list returns a byte[5] byte[] registers = (register_list184!=null?register_list184.registers:null); byte registerCount = (register_list184!=null?register_list184.registerCount:0); outRegisters = registerCount; TypeIdItem typeIdItem = (nonvoid_type_descriptor185!=null?nonvoid_type_descriptor185.type:null); instructions.add(new Instruction35c(opcode, registerCount, registers[0], registers[1], registers[2], registers[3], registers[4], typeIdItem)); } break; case 27 : // org/jf/smali/smaliTreeWalker.g:1195:3: ^( I_STATEMENT_FORMAT3rc_METHOD INSTRUCTION_FORMAT3rc_METHOD register_range[$totalMethodRegisters, $methodParameterRegisters] fully_qualified_method ) { match(input,I_STATEMENT_FORMAT3rc_METHOD,FOLLOW_I_STATEMENT_FORMAT3rc_METHOD_in_instruction2405); match(input, Token.DOWN, null); INSTRUCTION_FORMAT3rc_METHOD186=(CommonTree)match(input,INSTRUCTION_FORMAT3rc_METHOD,FOLLOW_INSTRUCTION_FORMAT3rc_METHOD_in_instruction2407); pushFollow(FOLLOW_register_range_in_instruction2409); register_range187=register_range(totalMethodRegisters, methodParameterRegisters); state._fsp--; pushFollow(FOLLOW_fully_qualified_method_in_instruction2412); fully_qualified_method188=fully_qualified_method(); state._fsp--; match(input, Token.UP, null); Opcode opcode = Opcode.getOpcodeByName((INSTRUCTION_FORMAT3rc_METHOD186!=null?INSTRUCTION_FORMAT3rc_METHOD186.getText():null)); int startRegister = (register_range187!=null?register_range187.startRegister:0); int endRegister = (register_range187!=null?register_range187.endRegister:0); int registerCount = endRegister-startRegister+1; outRegisters = registerCount; MethodIdItem methodIdItem = fully_qualified_method188; instructions.add(new Instruction3rc(opcode, (short)registerCount, startRegister, methodIdItem)); } break; case 28 : // org/jf/smali/smaliTreeWalker.g:1209:3: ^( I_STATEMENT_FORMAT3rc_TYPE INSTRUCTION_FORMAT3rc_TYPE register_range[$totalMethodRegisters, $methodParameterRegisters] nonvoid_type_descriptor ) { match(input,I_STATEMENT_FORMAT3rc_TYPE,FOLLOW_I_STATEMENT_FORMAT3rc_TYPE_in_instruction2426); match(input, Token.DOWN, null); INSTRUCTION_FORMAT3rc_TYPE189=(CommonTree)match(input,INSTRUCTION_FORMAT3rc_TYPE,FOLLOW_INSTRUCTION_FORMAT3rc_TYPE_in_instruction2428); pushFollow(FOLLOW_register_range_in_instruction2430); register_range190=register_range(totalMethodRegisters, methodParameterRegisters); state._fsp--; pushFollow(FOLLOW_nonvoid_type_descriptor_in_instruction2433); nonvoid_type_descriptor191=nonvoid_type_descriptor(); state._fsp--; match(input, Token.UP, null); Opcode opcode = Opcode.getOpcodeByName((INSTRUCTION_FORMAT3rc_TYPE189!=null?INSTRUCTION_FORMAT3rc_TYPE189.getText():null)); int startRegister = (register_range190!=null?register_range190.startRegister:0); int endRegister = (register_range190!=null?register_range190.endRegister:0); int registerCount = endRegister-startRegister+1; outRegisters = registerCount; TypeIdItem typeIdItem = (nonvoid_type_descriptor191!=null?nonvoid_type_descriptor191.type:null); instructions.add(new Instruction3rc(opcode, (short)registerCount, startRegister, typeIdItem)); } break; case 29 : // org/jf/smali/smaliTreeWalker.g:1223:3: ^( I_STATEMENT_FORMAT51l INSTRUCTION_FORMAT51l REGISTER fixed_64bit_literal ) { match(input,I_STATEMENT_FORMAT51l,FOLLOW_I_STATEMENT_FORMAT51l_in_instruction2447); match(input, Token.DOWN, null); INSTRUCTION_FORMAT51l192=(CommonTree)match(input,INSTRUCTION_FORMAT51l,FOLLOW_INSTRUCTION_FORMAT51l_in_instruction2449); REGISTER193=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_instruction2451); pushFollow(FOLLOW_fixed_64bit_literal_in_instruction2453); fixed_64bit_literal194=fixed_64bit_literal(); state._fsp--; match(input, Token.UP, null); Opcode opcode = Opcode.getOpcodeByName((INSTRUCTION_FORMAT51l192!=null?INSTRUCTION_FORMAT51l192.getText():null)); short regA = parseRegister_byte((REGISTER193!=null?REGISTER193.getText():null), totalMethodRegisters, methodParameterRegisters); long litB = fixed_64bit_literal194; instructions.add(new Instruction51l(opcode, regA, litB)); } break; case 30 : // org/jf/smali/smaliTreeWalker.g:1233:3: ^( I_STATEMENT_ARRAY_DATA ^( I_ARRAY_ELEMENT_SIZE short_integral_literal ) array_elements ) { match(input,I_STATEMENT_ARRAY_DATA,FOLLOW_I_STATEMENT_ARRAY_DATA_in_instruction2467); match(input, Token.DOWN, null); match(input,I_ARRAY_ELEMENT_SIZE,FOLLOW_I_ARRAY_ELEMENT_SIZE_in_instruction2470); match(input, Token.DOWN, null); pushFollow(FOLLOW_short_integral_literal_in_instruction2472); short_integral_literal195=short_integral_literal(); state._fsp--; match(input, Token.UP, null); pushFollow(FOLLOW_array_elements_in_instruction2475); array_elements196=array_elements(); state._fsp--; match(input, Token.UP, null); if ((((method_scope)method_stack.peek()).currentAddress % 2) != 0) { instructions.add(new Instruction10x(Opcode.NOP)); ((method_scope)method_stack.peek()).currentAddress++; } int elementWidth = short_integral_literal195; List<byte[]> byteValues = array_elements196; int length = 0; for (byte[] byteValue: byteValues) { length+=byteValue.length; } byte[] encodedValues = new byte[length]; int index = 0; for (byte[] byteValue: byteValues) { System.arraycopy(byteValue, 0, encodedValues, index, byteValue.length); index+=byteValue.length; } instructions.add(new ArrayDataPseudoInstruction(elementWidth, encodedValues)); } break; case 31 : // org/jf/smali/smaliTreeWalker.g:1259:3: ^( I_STATEMENT_PACKED_SWITCH ^( I_PACKED_SWITCH_START_KEY fixed_32bit_literal ) packed_switch_targets[baseAddress] ) { match(input,I_STATEMENT_PACKED_SWITCH,FOLLOW_I_STATEMENT_PACKED_SWITCH_in_instruction2489); match(input, Token.DOWN, null); match(input,I_PACKED_SWITCH_START_KEY,FOLLOW_I_PACKED_SWITCH_START_KEY_in_instruction2492); match(input, Token.DOWN, null); pushFollow(FOLLOW_fixed_32bit_literal_in_instruction2494); fixed_32bit_literal197=fixed_32bit_literal(); state._fsp--; match(input, Token.UP, null); if ((((method_scope)method_stack.peek()).currentAddress % 2) != 0) { instructions.add(new Instruction10x(Opcode.NOP)); ((method_scope)method_stack.peek()).currentAddress++; } Integer baseAddress = ((method_scope)method_stack.peek()).packedSwitchDeclarations.get(((method_scope)method_stack.peek()).currentAddress); if (baseAddress == null) { baseAddress = 0; } pushFollow(FOLLOW_packed_switch_targets_in_instruction2505); packed_switch_targets198=packed_switch_targets(baseAddress); state._fsp--; match(input, Token.UP, null); int startKey = fixed_32bit_literal197; int[] targets = packed_switch_targets198; instructions.add(new PackedSwitchDataPseudoInstruction(startKey, targets)); } break; case 32 : // org/jf/smali/smaliTreeWalker.g:1279:3: ^( I_STATEMENT_SPARSE_SWITCH sparse_switch_target_count sparse_switch_keys[$sparse_switch_target_count.targetCount] sparse_switch_targets[baseAddress, $sparse_switch_target_count.targetCount] ) { match(input,I_STATEMENT_SPARSE_SWITCH,FOLLOW_I_STATEMENT_SPARSE_SWITCH_in_instruction2519); match(input, Token.DOWN, null); pushFollow(FOLLOW_sparse_switch_target_count_in_instruction2521); sparse_switch_target_count199=sparse_switch_target_count(); state._fsp--; pushFollow(FOLLOW_sparse_switch_keys_in_instruction2523); sparse_switch_keys200=sparse_switch_keys(sparse_switch_target_count199); state._fsp--; if ((((method_scope)method_stack.peek()).currentAddress % 2) != 0) { instructions.add(new Instruction10x(Opcode.NOP)); ((method_scope)method_stack.peek()).currentAddress++; } Integer baseAddress = ((method_scope)method_stack.peek()).sparseSwitchDeclarations.get(((method_scope)method_stack.peek()).currentAddress); if (baseAddress == null) { baseAddress = 0; } pushFollow(FOLLOW_sparse_switch_targets_in_instruction2535); sparse_switch_targets201=sparse_switch_targets(baseAddress, sparse_switch_target_count199); state._fsp--; match(input, Token.UP, null); int[] keys = sparse_switch_keys200; int[] targets = sparse_switch_targets201; instructions.add(new SparseSwitchDataPseudoInstruction(keys, targets)); } break; } } catch (Exception ex) { reportError(new SemanticException(input, ex)); recover(input, null); } finally { } return outRegisters; } // $ANTLR end "instruction" public static class nonvoid_type_descriptor_return extends TreeRuleReturnScope { public TypeIdItem type; }; // $ANTLR start "nonvoid_type_descriptor" // org/jf/smali/smaliTreeWalker.g:1303:1: nonvoid_type_descriptor returns [TypeIdItem type] : ( PRIMITIVE_TYPE | CLASS_DESCRIPTOR | ARRAY_DESCRIPTOR ) ; public final smaliTreeWalker.nonvoid_type_descriptor_return nonvoid_type_descriptor() throws RecognitionException { smaliTreeWalker.nonvoid_type_descriptor_return retval = new smaliTreeWalker.nonvoid_type_descriptor_return(); retval.start = input.LT(1); try { // org/jf/smali/smaliTreeWalker.g:1304:2: ( ( PRIMITIVE_TYPE | CLASS_DESCRIPTOR | ARRAY_DESCRIPTOR ) ) // org/jf/smali/smaliTreeWalker.g:1304:4: ( PRIMITIVE_TYPE | CLASS_DESCRIPTOR | ARRAY_DESCRIPTOR ) { if ( input.LA(1)==PRIMITIVE_TYPE||(input.LA(1)>=CLASS_DESCRIPTOR && input.LA(1)<=ARRAY_DESCRIPTOR) ) { input.consume(); state.errorRecovery=false; } else { MismatchedSetException mse = new MismatchedSetException(null,input); throw mse; } retval.type = TypeIdItem.internTypeIdItem(dexFile, ((CommonTree)retval.start).getText()); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return retval; } // $ANTLR end "nonvoid_type_descriptor" public static class reference_type_descriptor_return extends TreeRuleReturnScope { public TypeIdItem type; }; // $ANTLR start "reference_type_descriptor" // org/jf/smali/smaliTreeWalker.g:1312:1: reference_type_descriptor returns [TypeIdItem type] : ( CLASS_DESCRIPTOR | ARRAY_DESCRIPTOR ) ; public final smaliTreeWalker.reference_type_descriptor_return reference_type_descriptor() throws RecognitionException { smaliTreeWalker.reference_type_descriptor_return retval = new smaliTreeWalker.reference_type_descriptor_return(); retval.start = input.LT(1); try { // org/jf/smali/smaliTreeWalker.g:1313:2: ( ( CLASS_DESCRIPTOR | ARRAY_DESCRIPTOR ) ) // org/jf/smali/smaliTreeWalker.g:1313:4: ( CLASS_DESCRIPTOR | ARRAY_DESCRIPTOR ) { if ( (input.LA(1)>=CLASS_DESCRIPTOR && input.LA(1)<=ARRAY_DESCRIPTOR) ) { input.consume(); state.errorRecovery=false; } else { MismatchedSetException mse = new MismatchedSetException(null,input); throw mse; } retval.type = TypeIdItem.internTypeIdItem(dexFile, ((CommonTree)retval.start).getText()); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return retval; } // $ANTLR end "reference_type_descriptor" // $ANTLR start "class_type_descriptor" // org/jf/smali/smaliTreeWalker.g:1324:1: class_type_descriptor returns [TypeIdItem type] : CLASS_DESCRIPTOR ; public final TypeIdItem class_type_descriptor() throws RecognitionException { TypeIdItem type = null; CommonTree CLASS_DESCRIPTOR202=null; try { // org/jf/smali/smaliTreeWalker.g:1325:2: ( CLASS_DESCRIPTOR ) // org/jf/smali/smaliTreeWalker.g:1325:4: CLASS_DESCRIPTOR { CLASS_DESCRIPTOR202=(CommonTree)match(input,CLASS_DESCRIPTOR,FOLLOW_CLASS_DESCRIPTOR_in_class_type_descriptor2619); type = TypeIdItem.internTypeIdItem(dexFile, (CLASS_DESCRIPTOR202!=null?CLASS_DESCRIPTOR202.getText():null)); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return type; } // $ANTLR end "class_type_descriptor" // $ANTLR start "type_descriptor" // org/jf/smali/smaliTreeWalker.g:1330:1: type_descriptor returns [TypeIdItem type] : ( VOID_TYPE | nonvoid_type_descriptor ); public final TypeIdItem type_descriptor() throws RecognitionException { TypeIdItem type = null; smaliTreeWalker.nonvoid_type_descriptor_return nonvoid_type_descriptor203 = null; try { // org/jf/smali/smaliTreeWalker.g:1331:2: ( VOID_TYPE | nonvoid_type_descriptor ) int alt35=2; switch ( input.LA(1) ) { case VOID_TYPE: { alt35=1; } break; case PRIMITIVE_TYPE: case CLASS_DESCRIPTOR: case ARRAY_DESCRIPTOR: { alt35=2; } break; default: NoViableAltException nvae = new NoViableAltException("", 35, 0, input); throw nvae; } switch (alt35) { case 1 : // org/jf/smali/smaliTreeWalker.g:1331:4: VOID_TYPE { match(input,VOID_TYPE,FOLLOW_VOID_TYPE_in_type_descriptor2635); type = TypeIdItem.internTypeIdItem(dexFile, "V"); } break; case 2 : // org/jf/smali/smaliTreeWalker.g:1332:4: nonvoid_type_descriptor { pushFollow(FOLLOW_nonvoid_type_descriptor_in_type_descriptor2642); nonvoid_type_descriptor203=nonvoid_type_descriptor(); state._fsp--; type = (nonvoid_type_descriptor203!=null?nonvoid_type_descriptor203.type:null); } break; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return type; } // $ANTLR end "type_descriptor" // $ANTLR start "short_integral_literal" // org/jf/smali/smaliTreeWalker.g:1335:1: short_integral_literal returns [short value] : ( long_literal | integer_literal | short_literal | char_literal | byte_literal ); public final short short_integral_literal() throws RecognitionException { short value = 0; long long_literal204 = 0; int integer_literal205 = 0; short short_literal206 = 0; char char_literal207 = 0; byte byte_literal208 = 0; try { // org/jf/smali/smaliTreeWalker.g:1336:2: ( long_literal | integer_literal | short_literal | char_literal | byte_literal ) int alt36=5; switch ( input.LA(1) ) { case LONG_LITERAL: { alt36=1; } break; case INTEGER_LITERAL: { alt36=2; } break; case SHORT_LITERAL: { alt36=3; } break; case CHAR_LITERAL: { alt36=4; } break; case BYTE_LITERAL: { alt36=5; } break; default: NoViableAltException nvae = new NoViableAltException("", 36, 0, input); throw nvae; } switch (alt36) { case 1 : // org/jf/smali/smaliTreeWalker.g:1336:4: long_literal { pushFollow(FOLLOW_long_literal_in_short_integral_literal2658); long_literal204=long_literal(); state._fsp--; literalTools.checkShort(long_literal204); value = (short)long_literal204; } break; case 2 : // org/jf/smali/smaliTreeWalker.g:1341:4: integer_literal { pushFollow(FOLLOW_integer_literal_in_short_integral_literal2667); integer_literal205=integer_literal(); state._fsp--; literalTools.checkShort(integer_literal205); value = (short)integer_literal205; } break; case 3 : // org/jf/smali/smaliTreeWalker.g:1346:4: short_literal { pushFollow(FOLLOW_short_literal_in_short_integral_literal2676); short_literal206=short_literal(); state._fsp--; value = short_literal206; } break; case 4 : // org/jf/smali/smaliTreeWalker.g:1347:4: char_literal { pushFollow(FOLLOW_char_literal_in_short_integral_literal2683); char_literal207=char_literal(); state._fsp--; value = (short)char_literal207; } break; case 5 : // org/jf/smali/smaliTreeWalker.g:1348:4: byte_literal { pushFollow(FOLLOW_byte_literal_in_short_integral_literal2690); byte_literal208=byte_literal(); state._fsp--; value = byte_literal208; } break; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return value; } // $ANTLR end "short_integral_literal" // $ANTLR start "integral_literal" // org/jf/smali/smaliTreeWalker.g:1350:1: integral_literal returns [int value] : ( long_literal | integer_literal | short_literal | byte_literal ); public final int integral_literal() throws RecognitionException { int value = 0; long long_literal209 = 0; int integer_literal210 = 0; short short_literal211 = 0; byte byte_literal212 = 0; try { // org/jf/smali/smaliTreeWalker.g:1351:2: ( long_literal | integer_literal | short_literal | byte_literal ) int alt37=4; switch ( input.LA(1) ) { case LONG_LITERAL: { alt37=1; } break; case INTEGER_LITERAL: { alt37=2; } break; case SHORT_LITERAL: { alt37=3; } break; case BYTE_LITERAL: { alt37=4; } break; default: NoViableAltException nvae = new NoViableAltException("", 37, 0, input); throw nvae; } switch (alt37) { case 1 : // org/jf/smali/smaliTreeWalker.g:1351:4: long_literal { pushFollow(FOLLOW_long_literal_in_integral_literal2704); long_literal209=long_literal(); state._fsp--; literalTools.checkInt(long_literal209); value = (int)long_literal209; } break; case 2 : // org/jf/smali/smaliTreeWalker.g:1356:4: integer_literal { pushFollow(FOLLOW_integer_literal_in_integral_literal2713); integer_literal210=integer_literal(); state._fsp--; value = integer_literal210; } break; case 3 : // org/jf/smali/smaliTreeWalker.g:1357:4: short_literal { pushFollow(FOLLOW_short_literal_in_integral_literal2720); short_literal211=short_literal(); state._fsp--; value = short_literal211; } break; case 4 : // org/jf/smali/smaliTreeWalker.g:1358:4: byte_literal { pushFollow(FOLLOW_byte_literal_in_integral_literal2727); byte_literal212=byte_literal(); state._fsp--; value = byte_literal212; } break; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return value; } // $ANTLR end "integral_literal" // $ANTLR start "integer_literal" // org/jf/smali/smaliTreeWalker.g:1361:1: integer_literal returns [int value] : INTEGER_LITERAL ; public final int integer_literal() throws RecognitionException { int value = 0; CommonTree INTEGER_LITERAL213=null; try { // org/jf/smali/smaliTreeWalker.g:1362:2: ( INTEGER_LITERAL ) // org/jf/smali/smaliTreeWalker.g:1362:4: INTEGER_LITERAL { INTEGER_LITERAL213=(CommonTree)match(input,INTEGER_LITERAL,FOLLOW_INTEGER_LITERAL_in_integer_literal2742); value = literalTools.parseInt((INTEGER_LITERAL213!=null?INTEGER_LITERAL213.getText():null)); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return value; } // $ANTLR end "integer_literal" // $ANTLR start "long_literal" // org/jf/smali/smaliTreeWalker.g:1364:1: long_literal returns [long value] : LONG_LITERAL ; public final long long_literal() throws RecognitionException { long value = 0; CommonTree LONG_LITERAL214=null; try { // org/jf/smali/smaliTreeWalker.g:1365:2: ( LONG_LITERAL ) // org/jf/smali/smaliTreeWalker.g:1365:4: LONG_LITERAL { LONG_LITERAL214=(CommonTree)match(input,LONG_LITERAL,FOLLOW_LONG_LITERAL_in_long_literal2756); value = literalTools.parseLong((LONG_LITERAL214!=null?LONG_LITERAL214.getText():null)); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return value; } // $ANTLR end "long_literal" // $ANTLR start "short_literal" // org/jf/smali/smaliTreeWalker.g:1367:1: short_literal returns [short value] : SHORT_LITERAL ; public final short short_literal() throws RecognitionException { short value = 0; CommonTree SHORT_LITERAL215=null; try { // org/jf/smali/smaliTreeWalker.g:1368:2: ( SHORT_LITERAL ) // org/jf/smali/smaliTreeWalker.g:1368:4: SHORT_LITERAL { SHORT_LITERAL215=(CommonTree)match(input,SHORT_LITERAL,FOLLOW_SHORT_LITERAL_in_short_literal2770); value = literalTools.parseShort((SHORT_LITERAL215!=null?SHORT_LITERAL215.getText():null)); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return value; } // $ANTLR end "short_literal" // $ANTLR start "byte_literal" // org/jf/smali/smaliTreeWalker.g:1370:1: byte_literal returns [byte value] : BYTE_LITERAL ; public final byte byte_literal() throws RecognitionException { byte value = 0; CommonTree BYTE_LITERAL216=null; try { // org/jf/smali/smaliTreeWalker.g:1371:2: ( BYTE_LITERAL ) // org/jf/smali/smaliTreeWalker.g:1371:4: BYTE_LITERAL { BYTE_LITERAL216=(CommonTree)match(input,BYTE_LITERAL,FOLLOW_BYTE_LITERAL_in_byte_literal2784); value = literalTools.parseByte((BYTE_LITERAL216!=null?BYTE_LITERAL216.getText():null)); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return value; } // $ANTLR end "byte_literal" // $ANTLR start "float_literal" // org/jf/smali/smaliTreeWalker.g:1373:1: float_literal returns [float value] : FLOAT_LITERAL ; public final float float_literal() throws RecognitionException { float value = 0.0f; CommonTree FLOAT_LITERAL217=null; try { // org/jf/smali/smaliTreeWalker.g:1374:2: ( FLOAT_LITERAL ) // org/jf/smali/smaliTreeWalker.g:1374:4: FLOAT_LITERAL { FLOAT_LITERAL217=(CommonTree)match(input,FLOAT_LITERAL,FOLLOW_FLOAT_LITERAL_in_float_literal2798); value = parseFloat((FLOAT_LITERAL217!=null?FLOAT_LITERAL217.getText():null)); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return value; } // $ANTLR end "float_literal" // $ANTLR start "double_literal" // org/jf/smali/smaliTreeWalker.g:1376:1: double_literal returns [double value] : DOUBLE_LITERAL ; public final double double_literal() throws RecognitionException { double value = 0.0; CommonTree DOUBLE_LITERAL218=null; try { // org/jf/smali/smaliTreeWalker.g:1377:2: ( DOUBLE_LITERAL ) // org/jf/smali/smaliTreeWalker.g:1377:4: DOUBLE_LITERAL { DOUBLE_LITERAL218=(CommonTree)match(input,DOUBLE_LITERAL,FOLLOW_DOUBLE_LITERAL_in_double_literal2812); value = parseDouble((DOUBLE_LITERAL218!=null?DOUBLE_LITERAL218.getText():null)); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return value; } // $ANTLR end "double_literal" // $ANTLR start "char_literal" // org/jf/smali/smaliTreeWalker.g:1379:1: char_literal returns [char value] : CHAR_LITERAL ; public final char char_literal() throws RecognitionException { char value = 0; CommonTree CHAR_LITERAL219=null; try { // org/jf/smali/smaliTreeWalker.g:1380:2: ( CHAR_LITERAL ) // org/jf/smali/smaliTreeWalker.g:1380:4: CHAR_LITERAL { CHAR_LITERAL219=(CommonTree)match(input,CHAR_LITERAL,FOLLOW_CHAR_LITERAL_in_char_literal2826); value = (CHAR_LITERAL219!=null?CHAR_LITERAL219.getText():null).charAt(1); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return value; } // $ANTLR end "char_literal" // $ANTLR start "string_literal" // org/jf/smali/smaliTreeWalker.g:1382:1: string_literal returns [String value] : STRING_LITERAL ; public final String string_literal() throws RecognitionException { String value = null; CommonTree STRING_LITERAL220=null; try { // org/jf/smali/smaliTreeWalker.g:1383:2: ( STRING_LITERAL ) // org/jf/smali/smaliTreeWalker.g:1383:4: STRING_LITERAL { STRING_LITERAL220=(CommonTree)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_string_literal2840); value = (STRING_LITERAL220!=null?STRING_LITERAL220.getText():null); value = value.substring(1,value.length()-1); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return value; } // $ANTLR end "string_literal" // $ANTLR start "bool_literal" // org/jf/smali/smaliTreeWalker.g:1389:1: bool_literal returns [boolean value] : BOOL_LITERAL ; public final boolean bool_literal() throws RecognitionException { boolean value = false; CommonTree BOOL_LITERAL221=null; try { // org/jf/smali/smaliTreeWalker.g:1390:2: ( BOOL_LITERAL ) // org/jf/smali/smaliTreeWalker.g:1390:4: BOOL_LITERAL { BOOL_LITERAL221=(CommonTree)match(input,BOOL_LITERAL,FOLLOW_BOOL_LITERAL_in_bool_literal2856); value = Boolean.parseBoolean((BOOL_LITERAL221!=null?BOOL_LITERAL221.getText():null)); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return value; } // $ANTLR end "bool_literal" // $ANTLR start "array_literal" // org/jf/smali/smaliTreeWalker.g:1392:1: array_literal returns [EncodedValue[] values] : ^( I_ENCODED_ARRAY ( literal )* ) ; public final EncodedValue[] array_literal() throws RecognitionException { EncodedValue[] values = null; EncodedValue literal222 = null; try { // org/jf/smali/smaliTreeWalker.g:1393:2: ( ^( I_ENCODED_ARRAY ( literal )* ) ) // org/jf/smali/smaliTreeWalker.g:1393:4: ^( I_ENCODED_ARRAY ( literal )* ) { ArrayList<EncodedValue> valuesList = new ArrayList<EncodedValue>(); match(input,I_ENCODED_ARRAY,FOLLOW_I_ENCODED_ARRAY_in_array_literal2875); if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); // org/jf/smali/smaliTreeWalker.g:1394:21: ( literal )* loop38: do { int alt38=2; switch ( input.LA(1) ) { case LONG_LITERAL: case SHORT_LITERAL: case BYTE_LITERAL: case FLOAT_LITERAL: case DOUBLE_LITERAL: case BOOL_LITERAL: case NULL_LITERAL: case STRING_LITERAL: case CHAR_LITERAL: case PRIMITIVE_TYPE: case VOID_TYPE: case CLASS_DESCRIPTOR: case ARRAY_DESCRIPTOR: case I_SUBANNOTATION: case I_ENCODED_FIELD: case I_ENCODED_METHOD: case I_ENCODED_ENUM: case I_ENCODED_ARRAY: case INTEGER_LITERAL: { alt38=1; } break; } switch (alt38) { case 1 : // org/jf/smali/smaliTreeWalker.g:1394:22: literal { pushFollow(FOLLOW_literal_in_array_literal2878); literal222=literal(); state._fsp--; valuesList.add(literal222); } break; default : break loop38; } } while (true); match(input, Token.UP, null); } values = new EncodedValue[valuesList.size()]; valuesList.toArray(values); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return values; } // $ANTLR end "array_literal" // $ANTLR start "annotations" // org/jf/smali/smaliTreeWalker.g:1401:1: annotations returns [AnnotationSetItem annotationSetItem] : ^( I_ANNOTATIONS ( annotation )* ) ; public final AnnotationSetItem annotations() throws RecognitionException { AnnotationSetItem annotationSetItem = null; AnnotationItem annotation223 = null; try { // org/jf/smali/smaliTreeWalker.g:1402:2: ( ^( I_ANNOTATIONS ( annotation )* ) ) // org/jf/smali/smaliTreeWalker.g:1402:4: ^( I_ANNOTATIONS ( annotation )* ) { ArrayList<AnnotationItem> annotationList = new ArrayList<AnnotationItem>(); match(input,I_ANNOTATIONS,FOLLOW_I_ANNOTATIONS_in_annotations2905); if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); // org/jf/smali/smaliTreeWalker.g:1403:19: ( annotation )* loop39: do { int alt39=2; switch ( input.LA(1) ) { case I_ANNOTATION: { alt39=1; } break; } switch (alt39) { case 1 : // org/jf/smali/smaliTreeWalker.g:1403:20: annotation { pushFollow(FOLLOW_annotation_in_annotations2908); annotation223=annotation(); state._fsp--; annotationList.add(annotation223); } break; default : break loop39; } } while (true); match(input, Token.UP, null); } if (annotationList.size() > 0) { annotationSetItem = AnnotationSetItem.internAnnotationSetItem(dexFile, annotationList); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return annotationSetItem; } // $ANTLR end "annotations" // $ANTLR start "annotation" // org/jf/smali/smaliTreeWalker.g:1411:1: annotation returns [AnnotationItem annotationItem] : ^( I_ANNOTATION ANNOTATION_VISIBILITY subannotation ) ; public final AnnotationItem annotation() throws RecognitionException { AnnotationItem annotationItem = null; CommonTree ANNOTATION_VISIBILITY224=null; smaliTreeWalker.subannotation_return subannotation225 = null; try { // org/jf/smali/smaliTreeWalker.g:1412:2: ( ^( I_ANNOTATION ANNOTATION_VISIBILITY subannotation ) ) // org/jf/smali/smaliTreeWalker.g:1412:4: ^( I_ANNOTATION ANNOTATION_VISIBILITY subannotation ) { match(input,I_ANNOTATION,FOLLOW_I_ANNOTATION_in_annotation2932); match(input, Token.DOWN, null); ANNOTATION_VISIBILITY224=(CommonTree)match(input,ANNOTATION_VISIBILITY,FOLLOW_ANNOTATION_VISIBILITY_in_annotation2934); pushFollow(FOLLOW_subannotation_in_annotation2936); subannotation225=subannotation(); state._fsp--; match(input, Token.UP, null); AnnotationVisibility visibility = AnnotationVisibility.valueOf((ANNOTATION_VISIBILITY224!=null?ANNOTATION_VISIBILITY224.getText():null).toUpperCase()); AnnotationEncodedSubValue encodedAnnotation = new AnnotationEncodedSubValue((subannotation225!=null?subannotation225.annotationType:null), (subannotation225!=null?subannotation225.elementNames:null), (subannotation225!=null?subannotation225.elementValues:null)); annotationItem = AnnotationItem.internAnnotationItem(dexFile, visibility, encodedAnnotation); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return annotationItem; } // $ANTLR end "annotation" public static class annotation_element_return extends TreeRuleReturnScope { public StringIdItem elementName; public EncodedValue elementValue; }; // $ANTLR start "annotation_element" // org/jf/smali/smaliTreeWalker.g:1420:1: annotation_element returns [StringIdItem elementName, EncodedValue elementValue] : ^( I_ANNOTATION_ELEMENT SIMPLE_NAME literal ) ; public final smaliTreeWalker.annotation_element_return annotation_element() throws RecognitionException { smaliTreeWalker.annotation_element_return retval = new smaliTreeWalker.annotation_element_return(); retval.start = input.LT(1); CommonTree SIMPLE_NAME226=null; EncodedValue literal227 = null; try { // org/jf/smali/smaliTreeWalker.g:1421:2: ( ^( I_ANNOTATION_ELEMENT SIMPLE_NAME literal ) ) // org/jf/smali/smaliTreeWalker.g:1421:4: ^( I_ANNOTATION_ELEMENT SIMPLE_NAME literal ) { match(input,I_ANNOTATION_ELEMENT,FOLLOW_I_ANNOTATION_ELEMENT_in_annotation_element2954); match(input, Token.DOWN, null); SIMPLE_NAME226=(CommonTree)match(input,SIMPLE_NAME,FOLLOW_SIMPLE_NAME_in_annotation_element2956); pushFollow(FOLLOW_literal_in_annotation_element2958); literal227=literal(); state._fsp--; match(input, Token.UP, null); retval.elementName = StringIdItem.internStringIdItem(dexFile, (SIMPLE_NAME226!=null?SIMPLE_NAME226.getText():null)); retval.elementValue = literal227; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return retval; } // $ANTLR end "annotation_element" public static class subannotation_return extends TreeRuleReturnScope { public TypeIdItem annotationType; public StringIdItem[] elementNames; public EncodedValue[] elementValues; }; // $ANTLR start "subannotation" // org/jf/smali/smaliTreeWalker.g:1427:1: subannotation returns [TypeIdItem annotationType, StringIdItem[] elementNames, EncodedValue[] elementValues] : ^( I_SUBANNOTATION class_type_descriptor ( annotation_element )* ) ; public final smaliTreeWalker.subannotation_return subannotation() throws RecognitionException { smaliTreeWalker.subannotation_return retval = new smaliTreeWalker.subannotation_return(); retval.start = input.LT(1); smaliTreeWalker.annotation_element_return annotation_element228 = null; TypeIdItem class_type_descriptor229 = null; try { // org/jf/smali/smaliTreeWalker.g:1428:2: ( ^( I_SUBANNOTATION class_type_descriptor ( annotation_element )* ) ) // org/jf/smali/smaliTreeWalker.g:1428:4: ^( I_SUBANNOTATION class_type_descriptor ( annotation_element )* ) { ArrayList<StringIdItem> elementNamesList = new ArrayList<StringIdItem>(); ArrayList<EncodedValue> elementValuesList = new ArrayList<EncodedValue>(); match(input,I_SUBANNOTATION,FOLLOW_I_SUBANNOTATION_in_subannotation2981); match(input, Token.DOWN, null); pushFollow(FOLLOW_class_type_descriptor_in_subannotation2986); class_type_descriptor229=class_type_descriptor(); state._fsp--; // org/jf/smali/smaliTreeWalker.g:1432:4: ( annotation_element )* loop40: do { int alt40=2; switch ( input.LA(1) ) { case I_ANNOTATION_ELEMENT: { alt40=1; } break; } switch (alt40) { case 1 : // org/jf/smali/smaliTreeWalker.g:1432:5: annotation_element { pushFollow(FOLLOW_annotation_element_in_subannotation2992); annotation_element228=annotation_element(); state._fsp--; elementNamesList.add((annotation_element228!=null?annotation_element228.elementName:null)); elementValuesList.add((annotation_element228!=null?annotation_element228.elementValue:null)); } break; default : break loop40; } } while (true); match(input, Token.UP, null); retval.annotationType = class_type_descriptor229; retval.elementNames = new StringIdItem[elementNamesList.size()]; elementNamesList.toArray(retval.elementNames); retval.elementValues = new EncodedValue[elementValuesList.size()]; elementValuesList.toArray(retval.elementValues); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return retval; } // $ANTLR end "subannotation" // $ANTLR start "field_literal" // org/jf/smali/smaliTreeWalker.g:1445:1: field_literal returns [FieldIdItem value] : ^( I_ENCODED_FIELD fully_qualified_field ) ; public final FieldIdItem field_literal() throws RecognitionException { FieldIdItem value = null; FieldIdItem fully_qualified_field230 = null; try { // org/jf/smali/smaliTreeWalker.g:1446:2: ( ^( I_ENCODED_FIELD fully_qualified_field ) ) // org/jf/smali/smaliTreeWalker.g:1446:4: ^( I_ENCODED_FIELD fully_qualified_field ) { match(input,I_ENCODED_FIELD,FOLLOW_I_ENCODED_FIELD_in_field_literal3019); match(input, Token.DOWN, null); pushFollow(FOLLOW_fully_qualified_field_in_field_literal3021); fully_qualified_field230=fully_qualified_field(); state._fsp--; match(input, Token.UP, null); value = fully_qualified_field230; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return value; } // $ANTLR end "field_literal" // $ANTLR start "method_literal" // org/jf/smali/smaliTreeWalker.g:1451:1: method_literal returns [MethodIdItem value] : ^( I_ENCODED_METHOD fully_qualified_method ) ; public final MethodIdItem method_literal() throws RecognitionException { MethodIdItem value = null; MethodIdItem fully_qualified_method231 = null; try { // org/jf/smali/smaliTreeWalker.g:1452:2: ( ^( I_ENCODED_METHOD fully_qualified_method ) ) // org/jf/smali/smaliTreeWalker.g:1452:4: ^( I_ENCODED_METHOD fully_qualified_method ) { match(input,I_ENCODED_METHOD,FOLLOW_I_ENCODED_METHOD_in_method_literal3039); match(input, Token.DOWN, null); pushFollow(FOLLOW_fully_qualified_method_in_method_literal3041); fully_qualified_method231=fully_qualified_method(); state._fsp--; match(input, Token.UP, null); value = fully_qualified_method231; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return value; } // $ANTLR end "method_literal" // $ANTLR start "enum_literal" // org/jf/smali/smaliTreeWalker.g:1457:1: enum_literal returns [FieldIdItem value] : ^( I_ENCODED_ENUM fully_qualified_field ) ; public final FieldIdItem enum_literal() throws RecognitionException { FieldIdItem value = null; FieldIdItem fully_qualified_field232 = null; try { // org/jf/smali/smaliTreeWalker.g:1458:2: ( ^( I_ENCODED_ENUM fully_qualified_field ) ) // org/jf/smali/smaliTreeWalker.g:1458:4: ^( I_ENCODED_ENUM fully_qualified_field ) { match(input,I_ENCODED_ENUM,FOLLOW_I_ENCODED_ENUM_in_enum_literal3059); match(input, Token.DOWN, null); pushFollow(FOLLOW_fully_qualified_field_in_enum_literal3061); fully_qualified_field232=fully_qualified_field(); state._fsp--; match(input, Token.UP, null); value = fully_qualified_field232; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { } return value; } // $ANTLR end "enum_literal" // Delegated rules public static final BitSet FOLLOW_I_CLASS_DEF_in_smali_file48 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_header_in_smali_file50 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000004L}); public static final BitSet FOLLOW_methods_in_smali_file52 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000008L}); public static final BitSet FOLLOW_fields_in_smali_file54 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L}); public static final BitSet FOLLOW_annotations_in_smali_file56 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_class_spec_in_header80 = new BitSet(new long[]{0x0000000000000000L,0xC000000000000000L,0x0000000000000001L}); public static final BitSet FOLLOW_super_spec_in_header82 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L,0x0000000000000001L}); public static final BitSet FOLLOW_implements_list_in_header85 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000001L}); public static final BitSet FOLLOW_source_spec_in_header87 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_class_type_descriptor_in_class_spec103 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000002L}); public static final BitSet FOLLOW_access_list_in_class_spec105 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_I_SUPER_in_super_spec121 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_class_type_descriptor_in_super_spec123 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_IMPLEMENTS_in_implements_spec141 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_class_type_descriptor_in_implements_spec143 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_implements_spec_in_implements_list169 = new BitSet(new long[]{0x0000000000000002L,0x8000000000000000L}); public static final BitSet FOLLOW_I_SOURCE_in_source_spec194 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_string_literal_in_source_spec196 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_ACCESS_LIST_in_access_list226 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_ACCESS_SPEC_in_access_list237 = new BitSet(new long[]{0x2000000000000008L}); public static final BitSet FOLLOW_I_FIELDS_in_fields271 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_field_in_fields277 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000000010L}); public static final BitSet FOLLOW_I_METHODS_in_methods305 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_method_in_methods311 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000000080L}); public static final BitSet FOLLOW_I_FIELD_in_field332 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_SIMPLE_NAME_in_field334 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000002L}); public static final BitSet FOLLOW_access_list_in_field336 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000020L}); public static final BitSet FOLLOW_I_FIELD_TYPE_in_field339 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_nonvoid_type_descriptor_in_field341 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_field_initial_value_in_field344 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000004000L}); public static final BitSet FOLLOW_annotations_in_field346 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_FIELD_INITIAL_VALUE_in_field_initial_value365 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_literal_in_field_initial_value367 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_integer_literal_in_literal386 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_long_literal_in_literal393 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_short_literal_in_literal400 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_byte_literal_in_literal407 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_float_literal_in_literal414 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_double_literal_in_literal421 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_char_literal_in_literal428 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_string_literal_in_literal435 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_bool_literal_in_literal442 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_NULL_LITERAL_in_literal449 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_type_descriptor_in_literal456 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_array_literal_in_literal463 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_subannotation_in_literal470 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_field_literal_in_literal477 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_method_literal_in_literal484 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_enum_literal_in_literal491 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_integer_literal_in_fixed_size_literal507 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_long_literal_in_fixed_size_literal514 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_short_literal_in_fixed_size_literal521 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_byte_literal_in_fixed_size_literal528 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_float_literal_in_fixed_size_literal535 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_double_literal_in_fixed_size_literal542 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_char_literal_in_fixed_size_literal549 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_bool_literal_in_fixed_size_literal556 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_integer_literal_in_fixed_64bit_literal571 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_long_literal_in_fixed_64bit_literal578 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_short_literal_in_fixed_64bit_literal585 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_byte_literal_in_fixed_64bit_literal592 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_float_literal_in_fixed_64bit_literal599 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_double_literal_in_fixed_64bit_literal606 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_char_literal_in_fixed_64bit_literal613 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_bool_literal_in_fixed_64bit_literal620 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_integer_literal_in_fixed_32bit_literal636 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_long_literal_in_fixed_32bit_literal643 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_short_literal_in_fixed_32bit_literal650 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_byte_literal_in_fixed_32bit_literal657 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_float_literal_in_fixed_32bit_literal664 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_char_literal_in_fixed_32bit_literal671 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_bool_literal_in_fixed_32bit_literal678 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_I_ARRAY_ELEMENTS_in_array_elements697 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_fixed_size_literal_in_array_elements703 = new BitSet(new long[]{0x0439C00000000008L,0x0000000000000000L,0x0000000000000000L,0x0000000000100000L}); public static final BitSet FOLLOW_I_PACKED_SWITCH_TARGET_COUNT_in_packed_switch_target_count723 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_I_PACKED_SWITCH_TARGETS_in_packed_switch_targets741 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_packed_switch_target_count_in_packed_switch_targets746 = new BitSet(new long[]{0x0000000000000008L,0x0002000000000001L}); public static final BitSet FOLLOW_offset_or_label_in_packed_switch_targets758 = new BitSet(new long[]{0x0000000000000008L,0x0002000000000001L}); public static final BitSet FOLLOW_I_SPARSE_SWITCH_TARGET_COUNT_in_sparse_switch_target_count781 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_I_SPARSE_SWITCH_KEYS_in_sparse_switch_keys801 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_fixed_32bit_literal_in_sparse_switch_keys807 = new BitSet(new long[]{0x0439C00000000008L,0x0000000000000000L,0x0000000000000000L,0x0000000000100000L}); public static final BitSet FOLLOW_I_SPARSE_SWITCH_TARGETS_in_sparse_switch_targets837 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_offset_or_label_in_sparse_switch_targets843 = new BitSet(new long[]{0x0000000000000008L,0x0002000000000001L}); public static final BitSet FOLLOW_I_METHOD_in_method885 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_method_name_and_prototype_in_method890 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000002L}); public static final BitSet FOLLOW_access_list_in_method895 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001C00L}); public static final BitSet FOLLOW_registers_directive_in_method907 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001C00L}); public static final BitSet FOLLOW_labels_in_method924 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000010000000L}); public static final BitSet FOLLOW_packed_switch_declarations_in_method929 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000200000000L}); public static final BitSet FOLLOW_sparse_switch_declarations_in_method934 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0001000000000000L}); public static final BitSet FOLLOW_statements_in_method939 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000002000000000L}); public static final BitSet FOLLOW_catches_in_method945 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000008000000000L}); public static final BitSet FOLLOW_parameters_in_method950 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000020000000000L}); public static final BitSet FOLLOW_ordered_debug_directives_in_method955 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L}); public static final BitSet FOLLOW_annotations_in_method961 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_METHOD_PROTOTYPE_in_method_prototype981 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_I_METHOD_RETURN_TYPE_in_method_prototype984 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_type_descriptor_in_method_prototype986 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_field_type_list_in_method_prototype989 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_SIMPLE_NAME_in_method_name_and_prototype1005 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000100L}); public static final BitSet FOLLOW_method_prototype_in_method_name_and_prototype1007 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_nonvoid_type_descriptor_in_field_type_list1034 = new BitSet(new long[]{0x0000000000000002L,0x0000680000000000L}); public static final BitSet FOLLOW_reference_type_descriptor_in_fully_qualified_method1057 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L}); public static final BitSet FOLLOW_SIMPLE_NAME_in_fully_qualified_method1059 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000100L}); public static final BitSet FOLLOW_method_prototype_in_fully_qualified_method1061 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_reference_type_descriptor_in_fully_qualified_field1076 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L}); public static final BitSet FOLLOW_SIMPLE_NAME_in_fully_qualified_field1078 = new BitSet(new long[]{0x0000000000000000L,0x0000680000000000L}); public static final BitSet FOLLOW_nonvoid_type_descriptor_in_fully_qualified_field1080 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_I_REGISTERS_in_registers_directive1103 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_I_LOCALS_in_registers_directive1112 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_short_integral_literal_in_registers_directive1124 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_LABELS_in_labels1140 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_label_def_in_labels1142 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000002000L}); public static final BitSet FOLLOW_I_LABEL_in_label_def1154 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_SIMPLE_NAME_in_label_def1156 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000400000000L}); public static final BitSet FOLLOW_address_in_label_def1158 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_PACKED_SWITCH_DECLARATIONS_in_packed_switch_declarations1173 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_packed_switch_declaration_in_packed_switch_declarations1175 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000008000000L}); public static final BitSet FOLLOW_I_PACKED_SWITCH_DECLARATION_in_packed_switch_declaration1186 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_address_in_packed_switch_declaration1188 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000001L}); public static final BitSet FOLLOW_offset_or_label_absolute_in_packed_switch_declaration1190 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_SPARSE_SWITCH_DECLARATIONS_in_sparse_switch_declarations1206 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_sparse_switch_declaration_in_sparse_switch_declarations1208 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000100000000L}); public static final BitSet FOLLOW_I_SPARSE_SWITCH_DECLARATION_in_sparse_switch_declaration1219 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_address_in_sparse_switch_declaration1221 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000001L}); public static final BitSet FOLLOW_offset_or_label_absolute_in_sparse_switch_declaration1223 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_CATCHES_in_catches1238 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_catch_directive_in_catches1240 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000001800000000L}); public static final BitSet FOLLOW_catchall_directive_in_catches1243 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000001000000000L}); public static final BitSet FOLLOW_I_CATCH_in_catch_directive1255 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_address_in_catch_directive1257 = new BitSet(new long[]{0x0000000000000000L,0x0002680000000001L}); public static final BitSet FOLLOW_nonvoid_type_descriptor_in_catch_directive1259 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000001L}); public static final BitSet FOLLOW_offset_or_label_absolute_in_catch_directive1263 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000001L}); public static final BitSet FOLLOW_offset_or_label_absolute_in_catch_directive1268 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000001L}); public static final BitSet FOLLOW_offset_or_label_absolute_in_catch_directive1277 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_CATCHALL_in_catchall_directive1293 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_address_in_catchall_directive1295 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000001L}); public static final BitSet FOLLOW_offset_or_label_absolute_in_catchall_directive1299 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000001L}); public static final BitSet FOLLOW_offset_or_label_absolute_in_catchall_directive1304 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000001L}); public static final BitSet FOLLOW_offset_or_label_absolute_in_catchall_directive1313 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_ADDRESS_in_address1331 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_I_PARAMETERS_in_parameters1355 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_parameter_in_parameters1358 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000004000000000L}); public static final BitSet FOLLOW_I_PARAMETER_in_parameter1387 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_string_literal_in_parameter1392 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L}); public static final BitSet FOLLOW_annotations_in_parameter1414 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_ORDERED_DEBUG_DIRECTIVES_in_ordered_debug_directives1431 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_line_in_ordered_debug_directives1436 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000FC0000000001L}); public static final BitSet FOLLOW_local_in_ordered_debug_directives1447 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000FC0000000001L}); public static final BitSet FOLLOW_end_local_in_ordered_debug_directives1458 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000FC0000000001L}); public static final BitSet FOLLOW_restart_local_in_ordered_debug_directives1469 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000FC0000000001L}); public static final BitSet FOLLOW_prologue_in_ordered_debug_directives1480 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000FC0000000001L}); public static final BitSet FOLLOW_epilogue_in_ordered_debug_directives1490 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000FC0000000001L}); public static final BitSet FOLLOW_source_in_ordered_debug_directives1500 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000FC0000000001L}); public static final BitSet FOLLOW_I_LINE_in_line1520 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_integral_literal_in_line1522 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000400000000L}); public static final BitSet FOLLOW_address_in_line1524 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_LOCAL_in_local1540 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_REGISTER_in_local1542 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L}); public static final BitSet FOLLOW_SIMPLE_NAME_in_local1544 = new BitSet(new long[]{0x0100000000000000L,0x0000680000000000L,0x0000000400000000L}); public static final BitSet FOLLOW_nonvoid_type_descriptor_in_local1546 = new BitSet(new long[]{0x0100000000000000L,0x0000000000000000L,0x0000000400000000L}); public static final BitSet FOLLOW_string_literal_in_local1548 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000400000000L}); public static final BitSet FOLLOW_address_in_local1551 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_END_LOCAL_in_end_local1567 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_REGISTER_in_end_local1569 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000400000000L}); public static final BitSet FOLLOW_address_in_end_local1571 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_RESTART_LOCAL_in_restart_local1587 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_REGISTER_in_restart_local1589 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000400000000L}); public static final BitSet FOLLOW_address_in_restart_local1591 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_PROLOGUE_in_prologue1606 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_address_in_prologue1608 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_EPILOGUE_in_epilogue1623 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_address_in_epilogue1625 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_SOURCE_in_source1640 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_string_literal_in_source1642 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000400000000L}); public static final BitSet FOLLOW_address_in_source1644 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_STATEMENTS_in_statements1670 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_instruction_in_statements1673 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0xFFFE000000000000L,0x000000000001FFFFL}); public static final BitSet FOLLOW_SIMPLE_NAME_in_label_ref1695 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_OFFSET_in_offset1711 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_offset_in_offset_or_label_absolute1728 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_label_ref_in_offset_or_label_absolute1735 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_offset_in_offset_or_label1749 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_label_ref_in_offset_or_label1756 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_I_REGISTER_LIST_in_register_list1780 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_REGISTER_in_register_list1786 = new BitSet(new long[]{0x0800000000000008L}); public static final BitSet FOLLOW_I_REGISTER_RANGE_in_register_range1808 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_REGISTER_in_register_range1812 = new BitSet(new long[]{0x0800000000000008L}); public static final BitSet FOLLOW_REGISTER_in_register_range1816 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_STATEMENT_FORMAT10t_in_instruction1845 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_INSTRUCTION_FORMAT10t_in_instruction1847 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000001L}); public static final BitSet FOLLOW_offset_or_label_in_instruction1849 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_STATEMENT_FORMAT10x_in_instruction1863 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_INSTRUCTION_FORMAT10x_in_instruction1865 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_STATEMENT_FORMAT11n_in_instruction1879 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_INSTRUCTION_FORMAT11n_in_instruction1881 = new BitSet(new long[]{0x0800000000000000L}); public static final BitSet FOLLOW_REGISTER_in_instruction1883 = new BitSet(new long[]{0x0401C00000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000100000L}); public static final BitSet FOLLOW_short_integral_literal_in_instruction1885 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_STATEMENT_FORMAT11x_in_instruction1899 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_INSTRUCTION_FORMAT11x_in_instruction1901 = new BitSet(new long[]{0x0800000000000000L}); public static final BitSet FOLLOW_REGISTER_in_instruction1903 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_STATEMENT_FORMAT12x_in_instruction1917 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_INSTRUCTION_FORMAT12x_in_instruction1919 = new BitSet(new long[]{0x0800000000000000L}); public static final BitSet FOLLOW_REGISTER_in_instruction1923 = new BitSet(new long[]{0x0800000000000000L}); public static final BitSet FOLLOW_REGISTER_in_instruction1927 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_STATEMENT_FORMAT20t_in_instruction1941 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_INSTRUCTION_FORMAT20t_in_instruction1943 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000001L}); public static final BitSet FOLLOW_offset_or_label_in_instruction1945 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_STATEMENT_FORMAT21c_FIELD_in_instruction1959 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_INSTRUCTION_FORMAT21c_FIELD_in_instruction1961 = new BitSet(new long[]{0x0800000000000000L}); public static final BitSet FOLLOW_REGISTER_in_instruction1963 = new BitSet(new long[]{0x0000000000000000L,0x0000600000000000L}); public static final BitSet FOLLOW_fully_qualified_field_in_instruction1965 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_STATEMENT_FORMAT21c_STRING_in_instruction1979 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_INSTRUCTION_FORMAT21c_STRING_in_instruction1981 = new BitSet(new long[]{0x0800000000000000L}); public static final BitSet FOLLOW_REGISTER_in_instruction1983 = new BitSet(new long[]{0x0100000000000000L}); public static final BitSet FOLLOW_string_literal_in_instruction1985 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_STATEMENT_FORMAT21c_TYPE_in_instruction1999 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_INSTRUCTION_FORMAT21c_TYPE_in_instruction2001 = new BitSet(new long[]{0x0800000000000000L}); public static final BitSet FOLLOW_REGISTER_in_instruction2003 = new BitSet(new long[]{0x0000000000000000L,0x0000600000000000L}); public static final BitSet FOLLOW_reference_type_descriptor_in_instruction2005 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_STATEMENT_FORMAT21h_in_instruction2019 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_INSTRUCTION_FORMAT21h_in_instruction2021 = new BitSet(new long[]{0x0800000000000000L}); public static final BitSet FOLLOW_REGISTER_in_instruction2023 = new BitSet(new long[]{0x0401C00000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000100000L}); public static final BitSet FOLLOW_short_integral_literal_in_instruction2025 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_STATEMENT_FORMAT21s_in_instruction2039 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_INSTRUCTION_FORMAT21s_in_instruction2041 = new BitSet(new long[]{0x0800000000000000L}); public static final BitSet FOLLOW_REGISTER_in_instruction2043 = new BitSet(new long[]{0x0401C00000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000100000L}); public static final BitSet FOLLOW_short_integral_literal_in_instruction2045 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_STATEMENT_FORMAT21t_in_instruction2059 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_INSTRUCTION_FORMAT21t_in_instruction2061 = new BitSet(new long[]{0x0800000000000000L}); public static final BitSet FOLLOW_REGISTER_in_instruction2063 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000001L}); public static final BitSet FOLLOW_offset_or_label_in_instruction2065 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_STATEMENT_FORMAT22b_in_instruction2079 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_INSTRUCTION_FORMAT22b_in_instruction2081 = new BitSet(new long[]{0x0800000000000000L}); public static final BitSet FOLLOW_REGISTER_in_instruction2085 = new BitSet(new long[]{0x0800000000000000L}); public static final BitSet FOLLOW_REGISTER_in_instruction2089 = new BitSet(new long[]{0x0401C00000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000100000L}); public static final BitSet FOLLOW_short_integral_literal_in_instruction2091 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_STATEMENT_FORMAT22c_FIELD_in_instruction2105 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_INSTRUCTION_FORMAT22c_FIELD_in_instruction2107 = new BitSet(new long[]{0x0800000000000000L}); public static final BitSet FOLLOW_REGISTER_in_instruction2111 = new BitSet(new long[]{0x0800000000000000L}); public static final BitSet FOLLOW_REGISTER_in_instruction2115 = new BitSet(new long[]{0x0000000000000000L,0x0000600000000000L}); public static final BitSet FOLLOW_fully_qualified_field_in_instruction2117 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_STATEMENT_FORMAT22c_TYPE_in_instruction2131 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_INSTRUCTION_FORMAT22c_TYPE_in_instruction2133 = new BitSet(new long[]{0x0800000000000000L}); public static final BitSet FOLLOW_REGISTER_in_instruction2137 = new BitSet(new long[]{0x0800000000000000L}); public static final BitSet FOLLOW_REGISTER_in_instruction2141 = new BitSet(new long[]{0x0000000000000008L,0x0000680000000000L}); public static final BitSet FOLLOW_nonvoid_type_descriptor_in_instruction2143 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_STATEMENT_FORMAT22s_in_instruction2157 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_INSTRUCTION_FORMAT22s_in_instruction2159 = new BitSet(new long[]{0x0800000000000000L}); public static final BitSet FOLLOW_REGISTER_in_instruction2163 = new BitSet(new long[]{0x0800000000000000L}); public static final BitSet FOLLOW_REGISTER_in_instruction2167 = new BitSet(new long[]{0x0401C00000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000100000L}); public static final BitSet FOLLOW_short_integral_literal_in_instruction2169 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_STATEMENT_FORMAT22t_in_instruction2183 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_INSTRUCTION_FORMAT22t_in_instruction2185 = new BitSet(new long[]{0x0800000000000000L}); public static final BitSet FOLLOW_REGISTER_in_instruction2189 = new BitSet(new long[]{0x0800000000000000L}); public static final BitSet FOLLOW_REGISTER_in_instruction2193 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000001L}); public static final BitSet FOLLOW_offset_or_label_in_instruction2195 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_STATEMENT_FORMAT22x_in_instruction2209 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_INSTRUCTION_FORMAT22x_in_instruction2211 = new BitSet(new long[]{0x0800000000000000L}); public static final BitSet FOLLOW_REGISTER_in_instruction2215 = new BitSet(new long[]{0x0800000000000000L}); public static final BitSet FOLLOW_REGISTER_in_instruction2219 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_STATEMENT_FORMAT23x_in_instruction2233 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_INSTRUCTION_FORMAT23x_in_instruction2235 = new BitSet(new long[]{0x0800000000000000L}); public static final BitSet FOLLOW_REGISTER_in_instruction2239 = new BitSet(new long[]{0x0800000000000000L}); public static final BitSet FOLLOW_REGISTER_in_instruction2243 = new BitSet(new long[]{0x0800000000000000L}); public static final BitSet FOLLOW_REGISTER_in_instruction2247 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_STATEMENT_FORMAT30t_in_instruction2261 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_INSTRUCTION_FORMAT30t_in_instruction2263 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000001L}); public static final BitSet FOLLOW_offset_or_label_in_instruction2265 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_STATEMENT_FORMAT31c_in_instruction2279 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_INSTRUCTION_FORMAT31c_in_instruction2281 = new BitSet(new long[]{0x0800000000000000L}); public static final BitSet FOLLOW_REGISTER_in_instruction2283 = new BitSet(new long[]{0x0100000000000000L}); public static final BitSet FOLLOW_string_literal_in_instruction2285 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_STATEMENT_FORMAT31i_in_instruction2299 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_INSTRUCTION_FORMAT31i_in_instruction2301 = new BitSet(new long[]{0x0800000000000000L}); public static final BitSet FOLLOW_REGISTER_in_instruction2303 = new BitSet(new long[]{0x0439C00000000008L,0x0000000000000000L,0x0000000000000000L,0x0000000000100000L}); public static final BitSet FOLLOW_fixed_32bit_literal_in_instruction2305 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_STATEMENT_FORMAT31t_in_instruction2319 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_INSTRUCTION_FORMAT31t_in_instruction2321 = new BitSet(new long[]{0x0800000000000000L}); public static final BitSet FOLLOW_REGISTER_in_instruction2323 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000001L}); public static final BitSet FOLLOW_offset_or_label_in_instruction2325 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_STATEMENT_FORMAT32x_in_instruction2339 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_INSTRUCTION_FORMAT32x_in_instruction2341 = new BitSet(new long[]{0x0800000000000000L}); public static final BitSet FOLLOW_REGISTER_in_instruction2345 = new BitSet(new long[]{0x0800000000000000L}); public static final BitSet FOLLOW_REGISTER_in_instruction2349 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_STATEMENT_FORMAT35c_METHOD_in_instruction2363 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_INSTRUCTION_FORMAT35c_METHOD_in_instruction2365 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000040000L}); public static final BitSet FOLLOW_register_list_in_instruction2367 = new BitSet(new long[]{0x0000000000000000L,0x0000600000000000L}); public static final BitSet FOLLOW_fully_qualified_method_in_instruction2370 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_STATEMENT_FORMAT35c_TYPE_in_instruction2384 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_INSTRUCTION_FORMAT35c_TYPE_in_instruction2386 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000040000L}); public static final BitSet FOLLOW_register_list_in_instruction2388 = new BitSet(new long[]{0x0000000000000008L,0x0000680000000000L}); public static final BitSet FOLLOW_nonvoid_type_descriptor_in_instruction2391 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_STATEMENT_FORMAT3rc_METHOD_in_instruction2405 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_INSTRUCTION_FORMAT3rc_METHOD_in_instruction2407 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000020000L}); public static final BitSet FOLLOW_register_range_in_instruction2409 = new BitSet(new long[]{0x0000000000000000L,0x0000600000000000L}); public static final BitSet FOLLOW_fully_qualified_method_in_instruction2412 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_STATEMENT_FORMAT3rc_TYPE_in_instruction2426 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_INSTRUCTION_FORMAT3rc_TYPE_in_instruction2428 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000020000L}); public static final BitSet FOLLOW_register_range_in_instruction2430 = new BitSet(new long[]{0x0000000000000008L,0x0000680000000000L}); public static final BitSet FOLLOW_nonvoid_type_descriptor_in_instruction2433 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_STATEMENT_FORMAT51l_in_instruction2447 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_INSTRUCTION_FORMAT51l_in_instruction2449 = new BitSet(new long[]{0x0800000000000000L}); public static final BitSet FOLLOW_REGISTER_in_instruction2451 = new BitSet(new long[]{0x0439C00000000008L,0x0000000000000000L,0x0000000000000000L,0x0000000000100000L}); public static final BitSet FOLLOW_fixed_64bit_literal_in_instruction2453 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_STATEMENT_ARRAY_DATA_in_instruction2467 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_I_ARRAY_ELEMENT_SIZE_in_instruction2470 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_short_integral_literal_in_instruction2472 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_array_elements_in_instruction2475 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_STATEMENT_PACKED_SWITCH_in_instruction2489 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_I_PACKED_SWITCH_START_KEY_in_instruction2492 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_fixed_32bit_literal_in_instruction2494 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_packed_switch_targets_in_instruction2505 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_STATEMENT_SPARSE_SWITCH_in_instruction2519 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_sparse_switch_target_count_in_instruction2521 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000020000000L}); public static final BitSet FOLLOW_sparse_switch_keys_in_instruction2523 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000080000000L}); public static final BitSet FOLLOW_sparse_switch_targets_in_instruction2535 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_set_in_nonvoid_type_descriptor2562 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_set_in_reference_type_descriptor2591 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_class_type_descriptor2619 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_VOID_TYPE_in_type_descriptor2635 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_nonvoid_type_descriptor_in_type_descriptor2642 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_long_literal_in_short_integral_literal2658 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_integer_literal_in_short_integral_literal2667 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_short_literal_in_short_integral_literal2676 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_char_literal_in_short_integral_literal2683 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_byte_literal_in_short_integral_literal2690 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_long_literal_in_integral_literal2704 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_integer_literal_in_integral_literal2713 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_short_literal_in_integral_literal2720 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_byte_literal_in_integral_literal2727 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_INTEGER_LITERAL_in_integer_literal2742 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_LONG_LITERAL_in_long_literal2756 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_SHORT_LITERAL_in_short_literal2770 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_BYTE_LITERAL_in_byte_literal2784 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_FLOAT_LITERAL_in_float_literal2798 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_DOUBLE_LITERAL_in_double_literal2812 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_CHAR_LITERAL_in_char_literal2826 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_STRING_LITERAL_in_string_literal2840 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_BOOL_LITERAL_in_bool_literal2856 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_I_ENCODED_ARRAY_in_array_literal2875 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_literal_in_array_literal2878 = new BitSet(new long[]{0x0579C00000000008L,0x0000780000000000L,0x00000000003E0000L,0x0000000000100000L}); public static final BitSet FOLLOW_I_ANNOTATIONS_in_annotations2905 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_annotation_in_annotations2908 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000008000L}); public static final BitSet FOLLOW_I_ANNOTATION_in_annotation2932 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_ANNOTATION_VISIBILITY_in_annotation2934 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000020000L}); public static final BitSet FOLLOW_subannotation_in_annotation2936 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_ANNOTATION_ELEMENT_in_annotation_element2954 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_SIMPLE_NAME_in_annotation_element2956 = new BitSet(new long[]{0x0579C00000000008L,0x0000780000000000L,0x00000000003E0000L,0x0000000000100000L}); public static final BitSet FOLLOW_literal_in_annotation_element2958 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_SUBANNOTATION_in_subannotation2981 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_class_type_descriptor_in_subannotation2986 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000010000L}); public static final BitSet FOLLOW_annotation_element_in_subannotation2992 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000010000L}); public static final BitSet FOLLOW_I_ENCODED_FIELD_in_field_literal3019 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_fully_qualified_field_in_field_literal3021 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_ENCODED_METHOD_in_method_literal3039 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_fully_qualified_method_in_method_literal3041 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_I_ENCODED_ENUM_in_enum_literal3059 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_fully_qualified_field_in_enum_literal3061 = new BitSet(new long[]{0x0000000000000008L}); }