private bool AnalyzeExpression(Expression expression) { V_0 = null; V_1 = null; if (expression.get_CodeNodeType() == 25) { return(this.CheckParameter((expression as ArgumentReferenceExpression).get_Parameter().Resolve())); } if (expression.get_CodeNodeType() == 26 || expression.get_CodeNodeType() == 27) { if (expression.get_CodeNodeType() == 26) { stackVariable14 = (expression as VariableReferenceExpression).get_Variable().Resolve(); } else { stackVariable14 = (expression as VariableDeclarationExpression).get_Variable(); } return(this.FixDynamicFlags(stackVariable14)); } if (expression.get_CodeNodeType() == 19 || expression.get_CodeNodeType() == 42) { stackVariable27 = expression as MethodInvocationExpression; V_0 = stackVariable27.get_MethodExpression().get_Method().get_GenericParameterReturnType(); V_1 = stackVariable27.get_MethodExpression().get_Target(); } else { if (expression.get_CodeNodeType() != 30) { if (expression.get_CodeNodeType() == 31) { return(this.FixDynamicFlags(expression as ExplicitCastExpression)); } if (expression.get_CodeNodeType() == 39) { dummyVar0 = this.dynamicPositioningFlags.AddFirst(false); return(this.AnalyzeExpression((expression as ArrayIndexerExpression).get_Target())); } if (expression.get_CodeNodeType() != 23 || (expression as UnaryExpression).get_Operator() != 8 && (expression as UnaryExpression).get_Operator() != 9 && (expression as UnaryExpression).get_Operator() != 7) { return(false); } dummyVar1 = this.dynamicPositioningFlags.AddFirst(false); return(this.AnalyzeExpression((expression as UnaryExpression).get_Operand())); } stackVariable152 = expression as FieldReferenceExpression; V_0 = stackVariable152.get_Field().get_FieldType() as GenericParameter; V_1 = stackVariable152.get_Target(); } if (V_1 == null || V_0 == null) { return(false); } if (V_0.get_Owner() as TypeReference == null || !V_1.get_ExpressionType().get_IsGenericInstance() || V_0.get_Name().get_Chars(0) != '!' || V_0.get_Name().get_Chars(1) == '!') { return(false); } V_3 = V_1.get_ExpressionType() as GenericInstanceType; V_4 = Int32.Parse(V_0.get_Name().Substring(1)); dummyVar2 = this.dynamicPositioningFlags.AddFirst(false); V_5 = 0; while (V_5 < V_3.get_GenericArguments().get_Count()) { if (V_5 != V_4) { V_6 = 0; this.CountTypeTokens(V_3.get_GenericArguments().get_Item(V_5), ref V_6); V_7 = 0; while (V_7 < V_6) { if (V_5 >= V_4) { dummyVar4 = this.dynamicPositioningFlags.AddLast(false); } else { dummyVar3 = this.dynamicPositioningFlags.AddFirst(false); } V_7 = V_7 + 1; } } V_5 = V_5 + 1; } return(this.AnalyzeExpression(V_1)); }