From 43eace86c8b87f580933545fadb0e8ea0338cd78 Mon Sep 17 00:00:00 2001 From: Eusebiu Marcu Date: Tue, 22 Feb 2011 16:50:02 +0200 Subject: [PATCH] Basic evaluation - first level --- .../Ast/ExpressionExtensionMethods.cs | 40 ++-- .../Visitors/ExpressionEvaluator.cs | 34 +-- Debugger/ILSpy.Debugger/ILSpy.Debugger.csproj | 52 +++++ .../Images/Icons.16x16.Class.png | Bin 0 -> 733 bytes .../Images/Icons.16x16.Delegate.png | Bin 0 -> 908 bytes .../Images/Icons.16x16.Enum.png | Bin 0 -> 680 bytes .../Images/Icons.16x16.Event.png | Bin 0 -> 640 bytes .../Images/Icons.16x16.ExtensionMethod.png | Bin 0 -> 488 bytes .../Images/Icons.16x16.Field.png | Bin 0 -> 655 bytes .../Images/Icons.16x16.Indexer.png | Bin 0 -> 449 bytes .../Images/Icons.16x16.Interface.png | Bin 0 -> 610 bytes .../Images/Icons.16x16.InternalClass.png | Bin 0 -> 881 bytes .../Images/Icons.16x16.InternalDelegate.png | Bin 0 -> 916 bytes .../Images/Icons.16x16.InternalEnum.png | Bin 0 -> 821 bytes .../Images/Icons.16x16.InternalEvent.png | Bin 0 -> 751 bytes .../Icons.16x16.InternalExtensionMethod.png | Bin 0 -> 629 bytes .../Images/Icons.16x16.InternalField.png | Bin 0 -> 789 bytes .../Images/Icons.16x16.InternalIndexer.png | Bin 0 -> 619 bytes .../Images/Icons.16x16.InternalInterface.png | Bin 0 -> 775 bytes .../Images/Icons.16x16.InternalMethod.png | Bin 0 -> 776 bytes .../Images/Icons.16x16.InternalProperty.png | Bin 0 -> 957 bytes .../Images/Icons.16x16.InternalStruct.png | Bin 0 -> 575 bytes .../Images/Icons.16x16.Keyword.png | Bin 0 -> 1250 bytes .../Images/Icons.16x16.Literal.png | Bin 0 -> 416 bytes .../Images/Icons.16x16.Local.png | Bin 0 -> 550 bytes .../Images/Icons.16x16.Method.png | Bin 0 -> 621 bytes .../Images/Icons.16x16.NameSpace.png | Bin 0 -> 460 bytes .../Images/Icons.16x16.Operator.png | Bin 0 -> 235 bytes .../Images/Icons.16x16.Parameter.png | Bin 0 -> 522 bytes .../Images/Icons.16x16.PrivateClass.png | Bin 0 -> 920 bytes .../Images/Icons.16x16.PrivateDelegate.png | Bin 0 -> 925 bytes .../Images/Icons.16x16.PrivateEnum.png | Bin 0 -> 845 bytes .../Images/Icons.16x16.PrivateEvent.png | Bin 0 -> 785 bytes .../Icons.16x16.PrivateExtensionMethod.png | Bin 0 -> 650 bytes .../Images/Icons.16x16.PrivateField.png | Bin 0 -> 831 bytes .../Images/Icons.16x16.PrivateIndexer.png | Bin 0 -> 612 bytes .../Images/Icons.16x16.PrivateInterface.png | Bin 0 -> 781 bytes .../Images/Icons.16x16.PrivateMethod.png | Bin 0 -> 820 bytes .../Images/Icons.16x16.PrivateProperty.png | Bin 0 -> 986 bytes .../Images/Icons.16x16.PrivateStruct.png | Bin 0 -> 642 bytes .../Images/Icons.16x16.Property.png | Bin 0 -> 900 bytes .../Images/Icons.16x16.ProtectedClass.png | Bin 0 -> 864 bytes .../Images/Icons.16x16.ProtectedDelegate.png | Bin 0 -> 937 bytes .../Images/Icons.16x16.ProtectedEnum.png | Bin 0 -> 784 bytes .../Images/Icons.16x16.ProtectedEvent.png | Bin 0 -> 776 bytes .../Icons.16x16.ProtectedExtensionMethod.png | Bin 0 -> 611 bytes .../Images/Icons.16x16.ProtectedField.png | Bin 0 -> 772 bytes .../Images/Icons.16x16.ProtectedIndexer.png | Bin 0 -> 684 bytes .../Images/Icons.16x16.ProtectedInterface.png | Bin 0 -> 753 bytes .../Images/Icons.16x16.ProtectedMethod.png | Bin 0 -> 765 bytes .../Images/Icons.16x16.ProtectedProperty.png | Bin 0 -> 974 bytes .../Images/Icons.16x16.ProtectedStruct.png | Bin 0 -> 556 bytes .../Images/Icons.16x16.Reference.png | Bin 0 -> 466 bytes .../Images/Icons.16x16.Struct.png | Bin 0 -> 422 bytes .../Models/TreeModel/ChildNodesOfObject.cs | 2 +- .../Models/TreeModel/ExpressionNode.cs | 14 +- .../Services/Debugger/DebuggerService.cs | 2 +- .../Services/Debugger/WindowsDebugger.cs | 25 ++- .../Services/ImageService/ImageService.cs | 14 +- .../Services/ParserService/ParserService.cs | 2 +- .../ToolTips/DebuggerTooltipControl.xaml.cs | 4 + ICSharpCode.Decompiler/CodeMappings.cs | 3 +- ILSpy.sln | 8 +- ILSpy/MainWindow.xaml.cs | 16 +- .../CSharp/Ast/NotImplementedAstVisitor.cs | 208 +++++++++--------- 65 files changed, 247 insertions(+), 177 deletions(-) create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.Class.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.Delegate.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.Enum.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.Event.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.ExtensionMethod.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.Field.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.Indexer.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.Interface.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalClass.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalDelegate.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalEnum.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalEvent.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalExtensionMethod.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalField.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalIndexer.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalInterface.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalMethod.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalProperty.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalStruct.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.Keyword.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.Literal.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.Local.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.Method.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.NameSpace.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.Operator.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.Parameter.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateClass.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateDelegate.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateEnum.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateEvent.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateExtensionMethod.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateField.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateIndexer.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateInterface.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateMethod.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateProperty.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateStruct.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.Property.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedClass.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedDelegate.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedEnum.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedEvent.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedExtensionMethod.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedField.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedIndexer.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedInterface.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedMethod.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedProperty.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedStruct.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.Reference.png create mode 100644 Debugger/ILSpy.Debugger/Images/Icons.16x16.Struct.png diff --git a/Debugger/Debugger.Core/NRefactory/Ast/ExpressionExtensionMethods.cs b/Debugger/Debugger.Core/NRefactory/Ast/ExpressionExtensionMethods.cs index 981e53bf1..1bc316785 100644 --- a/Debugger/Debugger.Core/NRefactory/Ast/ExpressionExtensionMethods.cs +++ b/Debugger/Debugger.Core/NRefactory/Ast/ExpressionExtensionMethods.cs @@ -95,7 +95,7 @@ namespace ICSharpCode.NRefactory.Ast if (memberInfo.IsStatic) { target = new TypeReferenceExpression() { Type = memberInfo.DeclaringType.GetTypeReference() }; } else { - target = expresion.CastTo((DebugType)memberInfo.DeclaringType); + target = expresion.Clone().CastTo((DebugType)memberInfo.DeclaringType); } if (memberInfo is DebugFieldInfo) { @@ -141,7 +141,7 @@ namespace ICSharpCode.NRefactory.Ast throw new DebuggerException("Incorrect number of arguments"); List typedArgs = new List(args.Length); for(int i = 0; i < args.Length; i++) { - typedArgs.Add(args[i].CastTo((DebugType)method.GetParameters()[i].ParameterType)); + typedArgs.Add(args[i].Clone().CastTo((DebugType)method.GetParameters()[i].ParameterType)); } return typedArgs; } @@ -260,24 +260,24 @@ namespace ICSharpCode.NRefactory.Ast //newRef.ArraySpecifiers = typeRef.ArraySpecifiers; return newRef; } -// else if (expr is SimpleType) { -// var typeRef = (SimpleType)expr; -// string[] names = typeRef.Identifier.Split('.'); -// if (names.Length == 1) -// return typeRef; -// SimpleType newRef = null; -// foreach(string name in names) { -// if (newRef == null) { -// newRef = new SimpleType() { Identifier = name, TypeArguments = new List() }; -// } else { -// newRef = new MemberType() { Target = newRef, MemberName = name, TypeArguments = new List() }; -// } -// } -// ((List)newRef.TypeArguments).AddRange(typeRef.TypeArguments); -// newRef.PointerNestingLevel = typeRef.PointerNestingLevel; -// newRef.RankSpecifier = typeRef.RankSpecifier; -// return newRef; -// } + else if (expr is SimpleType) { + var typeRef = (SimpleType)expr; + string[] names = typeRef.Identifier.Split('.'); + if (names.Length == 1) + return typeRef; + AstType newRef = null; + foreach(string name in names) { + if (newRef == null) { + newRef = new SimpleType() { Identifier = name/*, TypeArguments = new List()*/ }; + } else { + newRef = new MemberType() { Target = newRef, MemberName = name/*, TypeArguments = new List() */}; + } + } + //((List)newRef.TypeArguments).AddRange(typeRef.TypeArguments); + //newRef.PointerNestingLevel = typeRef.PointerNestingLevel; + //newRef.RankSpecifier = typeRef.RankSpecifier; + return newRef; + } else { throw new EvaluateException(expr, "Type expected. {0} seen.", expr.GetType().FullName); } diff --git a/Debugger/Debugger.Core/NRefactory/Visitors/ExpressionEvaluator.cs b/Debugger/Debugger.Core/NRefactory/Visitors/ExpressionEvaluator.cs index e43f5eaeb..60af5f785 100644 --- a/Debugger/Debugger.Core/NRefactory/Visitors/ExpressionEvaluator.cs +++ b/Debugger/Debugger.Core/NRefactory/Visitors/ExpressionEvaluator.cs @@ -286,7 +286,7 @@ namespace ICSharpCode.NRefactory.Visitors return new TypedValue(val, val.Type); } - public object VisitAssignmentExpression(AssignmentExpression assignmentExpression, object data) + public override object VisitAssignmentExpression(AssignmentExpression assignmentExpression, object data) { BinaryOperatorType op; switch (assignmentExpression.Operator) { @@ -328,7 +328,7 @@ namespace ICSharpCode.NRefactory.Visitors return right; } - public object VisitBlockStatement(BlockStatement blockStatement, object data) + public override object VisitBlockStatement(BlockStatement blockStatement, object data) { foreach(var statement in blockStatement.Children) { Evaluate(statement); @@ -336,21 +336,21 @@ namespace ICSharpCode.NRefactory.Visitors return null; } - public object VisitEmptyStatement(EmptyStatement emptyStatement, object data) + public override object VisitEmptyStatement(EmptyStatement emptyStatement, object data) { return null; } - public object VisitExpressionStatement(ExpressionStatement expressionStatement, object data) + public override object VisitExpressionStatement(ExpressionStatement expressionStatement, object data) { Evaluate(expressionStatement.Expression); return null; } - public object VisitCastExpression(CastExpression castExpression, object data) + public override object VisitCastExpression(CastExpression castExpression, object data) { TypedValue val = Evaluate(castExpression.Expression); - DebugType castTo = null;// FIXME castExpression.CastTo().ResolveType(context.AppDomain); + DebugType castTo = castExpression.Type.ResolveType(context.AppDomain); if (castTo.IsPrimitive && val.Type.IsPrimitive && castTo != val.Type) { object oldVal = val.PrimitiveValue; object newVal; @@ -368,7 +368,7 @@ namespace ICSharpCode.NRefactory.Visitors return new TypedValue(val.Value, castTo); } - public object VisitIdentifierExpression(IdentifierExpression identifierExpression, object data) + public override object VisitIdentifierExpression(IdentifierExpression identifierExpression, object data) { string identifier = identifierExpression.Identifier; @@ -410,7 +410,7 @@ namespace ICSharpCode.NRefactory.Visitors throw new GetValueException("Identifier \"" + identifier + "\" not found in this context"); } - public object VisitIndexerExpression(IndexerExpression indexerExpression, object data) + public override object VisitIndexerExpression(IndexerExpression indexerExpression, object data) { TypedValue target = Evaluate(indexerExpression.Target); @@ -444,7 +444,7 @@ namespace ICSharpCode.NRefactory.Visitors } } - public object VisitInvocationExpression(InvocationExpression invocationExpression, object data) + public override object VisitInvocationExpression(InvocationExpression invocationExpression, object data) { TypedValue target; DebugType targetType; @@ -482,7 +482,7 @@ namespace ICSharpCode.NRefactory.Visitors return new TypedValue(retVal, (DebugType)method.ReturnType); } - public object VisitObjectCreateExpression(ObjectCreateExpression objectCreateExpression, object data) + public override object VisitObjectCreateExpression(ObjectCreateExpression objectCreateExpression, object data) { if (!objectCreateExpression.Initializer.IsNull) throw new EvaluateException(objectCreateExpression.Initializer, "Object initializers not supported"); @@ -496,7 +496,7 @@ namespace ICSharpCode.NRefactory.Visitors return new TypedValue(val, type); } - public object VisitArrayCreateExpression(ArrayCreateExpression arrayCreateExpression, object data) + public override object VisitArrayCreateExpression(ArrayCreateExpression arrayCreateExpression, object data) { if (arrayCreateExpression.AdditionalArraySpecifiers.Count() != 0) throw new EvaluateException(arrayCreateExpression, "Multi-dimensional arrays are not suppored"); @@ -523,7 +523,7 @@ namespace ICSharpCode.NRefactory.Visitors return new TypedValue(array, type); } - public object VisitMemberReferenceExpression(MemberReferenceExpression memberReferenceExpression, object data) + public override object VisitMemberReferenceExpression(MemberReferenceExpression memberReferenceExpression, object data) { TypedValue target; DebugType targetType; @@ -549,12 +549,12 @@ namespace ICSharpCode.NRefactory.Visitors ); } - public object VisitParenthesizedExpression(ParenthesizedExpression parenthesizedExpression, object data) + public override object VisitParenthesizedExpression(ParenthesizedExpression parenthesizedExpression, object data) { return Evaluate(parenthesizedExpression.Expression); } - public object VisitPrimitiveExpression(PrimitiveExpression primitiveExpression, object data) + public override object VisitPrimitiveExpression(PrimitiveExpression primitiveExpression, object data) { return CreateValue(primitiveExpression.Value); } @@ -568,7 +568,7 @@ namespace ICSharpCode.NRefactory.Visitors return null; } - public object VisitThisReferenceExpression(ThisReferenceExpression thisReferenceExpression, object data) + public override object VisitThisReferenceExpression(ThisReferenceExpression thisReferenceExpression, object data) { TypedValue thisValue = GetThisValue(); if (thisValue == null) @@ -578,7 +578,7 @@ namespace ICSharpCode.NRefactory.Visitors #region Binary and unary expressions - public object VisitUnaryOperatorExpression(UnaryOperatorExpression unaryOperatorExpression, object data) + public override object VisitUnaryOperatorExpression(UnaryOperatorExpression unaryOperatorExpression, object data) { TypedValue value = Evaluate(unaryOperatorExpression.Expression); UnaryOperatorType op = unaryOperatorExpression.Operator; @@ -723,7 +723,7 @@ namespace ICSharpCode.NRefactory.Visitors return null; } - public object VisitBinaryOperatorExpression(BinaryOperatorExpression binaryOperatorExpression, object data) + public override object VisitBinaryOperatorExpression(BinaryOperatorExpression binaryOperatorExpression, object data) { BinaryOperatorType op = binaryOperatorExpression.Operator; diff --git a/Debugger/ILSpy.Debugger/ILSpy.Debugger.csproj b/Debugger/ILSpy.Debugger/ILSpy.Debugger.csproj index 6b21b453a..8d2e7c506 100644 --- a/Debugger/ILSpy.Debugger/ILSpy.Debugger.csproj +++ b/Debugger/ILSpy.Debugger/ILSpy.Debugger.csproj @@ -101,6 +101,7 @@ + @@ -136,6 +137,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.Class.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Class.png new file mode 100644 index 0000000000000000000000000000000000000000..a8d001cba4904854ff993c15e5311461b40c8ad7 GIT binary patch literal 733 zcmV<30wVp1P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;Q%OWYRCwBA`2YVu12SH=%=kaL7(NUTKq#CwYaIUn z`NQyk?p!sZ4FL!sB+WMefBju;2%Kw%Y z{{QFBft=0uKQ)ydZu8_xlfdlh0##s}-!nY?e}!TB|8A!2|NXoL{{aFBXg32xPR?z{ z|Nl9GHgf=NW?+~%@6WV9fBs~H$+yYV z00Iala8goG{hXDR#jtqcLb%uj-opQr1z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ<0!c(cRCwBAeEjSU!;Skd7<5#m85kLW08B9aKXv&& z!>`}}7`}i1!Qf`2!*KP^Gl&cjoV#+D!QNb(!9-V)0U&@_7%;*A11HWieERm6;oJA0 z49{M?W;l8NB14d;DL?1u^F(F(1>-S%V-@pGbu&}U!`G5ZW$p+!yzyC9Q|M3&WnJ^as z1Q6rnXK(-Cxc?k%9>{=SzkW0P{`a5Z-`{@>KS6Au7)bKh@1G1HgFxzj|M?9L10!t( zMt}ffdHD1VgNv0mis^rVzWw?02hasT1Mhri_&o0u18*`P!`=Vy8Giiw3pTW6(p-j3 zbK9o^1Q64YUw=?T@c%!CzkeV$Gr#>0)~sNw!0-h~OFZL-yYkmhh(3S-VgWl52%g6EaW?%^RaASDe`-VZ$RuSw4MQtU9`@8Nl@Yu63yx{%;3quBg0Al(5 z7h-^vMks^WKL!Rhpwqv8{mJnC*Ds(Kelxs(`Hn$|O&Ds3BEzZKD;WM|DKPx_`3tNM zAb?nYf}Hez6~mP~|G@(HKrVR0z~JTR$nYEJy^ps)F)&CoF$fC^F)UuN7##Zl{``e| z86bdI{sTjsnLms{+u#qw4`5V@e*@YKbk&D1Ul~|{)-nQhe0uhgVcW*749H3K*Dr_* z00M~R2axgi-ya61uj?7^L0xh49t*>VKmQnXy>uBEw|{3~V~3=-k3T+wwKIMF0Sf{K zfB<3v+5wKPFMr$_#AW{hZT`lf1$50fpi6!L6V*p=76yTBe?e{mYhsC0VfYCQ8&Dbn z0e}Ev0>uKzfWJVm{QU=_LHz$}{o1~LIafB^v9S#u=siS^t70000J% literal 0 HcmV?d00001 diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.Enum.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Enum.png new file mode 100644 index 0000000000000000000000000000000000000000..3fbb2c14968912953c45298ef1cace34271d9eaf GIT binary patch literal 680 zcmV;Z0$2TsP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;9!W$&RCwBA{Qdqc!_$+M42+D74ASPE3_u102mty2 zpPsB>V1#fOK=8w-*I>Cf?_M%!I80>_SN38A2q4DaAI>p611e+yD`kW#25b5+ZkEZw z`0FiL?Dx0NV6$2Nykz*r@SUNt=^R7fqJz@_0*HkXrV(TZ)OMI5Ak84Lk{KKf-+%mL z`0?Wh!?f%l48K2qg{uV!AQp7ZAo~5MHw;4jqG0y#Z=V?2<3EFK{`&C^P&3dKf8Q{` z06+k-fSih~nE~n^kRf;0*E7hexiU;X>ca5tJ2%76pVABszULS?|9)rq_T@8JEkFRV zfc!6Rp2@)Q^BvfaAioNO{rZaGC*ya9rl#`@E%j#@et-DF@Z-Z{2FAY(C;%XUSisgn zHJ8rh0NV5qXwy%iU%xZ_0s0jL=FYjt@buXSh|_@J>*vo5X;rlh)7J(t00a;?5WzNo z|IE-H_Ze*S7bL%e)uUaey3~e5u3#5R4Jz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ-_DMuRRCwBA{Qv(y10?_;fLPE4etvt)z`)4Jz|JYe zaQEPZ|LolFfm}wg+{4Ge8D77B%OGRm!eDF~0u}@aASQGJnEriWUZZR>)Tx4cwTk?d#+%jSsOg%sVVHg0ijfGnY>M26o_r!)LI&BgHk_FslIKh81C-Eyx;WJFdA5I`8Quwi!Q|9f|zFg$twfk8$}fFV0Y zo8jeBHio>tvl+G=dpqsr%U28_OC==4!Ri45hy_d3GTMhEGW>jU_P??2U$Ex65BnIl z9Q^_I!i$$Lfl3gr1_&UGFmMVi11SJ%{=@Kc2}E=2!XJo`|IdJ806+j?7{Di@$RPCX zFdAX}2Ry9>jA5L~c#`DCC7dx@v7EBh^WDKR6n z6H^{&08NeXba4!^@Si(zzc*8%#4-8zB2J4|>i*J}dX+DbWij2Em0LzcrfZtilQm+p zcdpd=91N|f+|II8mz8f(S)gvDcXxKMfC-C#xp--7b9vo#ef|5-f9^T|yNESHQD2mpQ@vj*=OhHue%TKZkOs`S1OkMwcglEvC}(ZiH&mgdmkf#dDqr-2bWD^ zJ@ea$o1<)vh+1psHeNxSv%i%$Ss(sY-N5%`_qW2d=f560obY{c_?6fHHwWVXY~0nG b{flYBrNf~=mY&uI20MeNtDnm{r-UW|d&I?u literal 0 HcmV?d00001 diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.Field.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Field.png new file mode 100644 index 0000000000000000000000000000000000000000..05318b85ebd88c08c6c4be99f4097885e7bee0da GIT binary patch literal 655 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9EWV9eN~w38hu$dc~p z>&U>cv9IQL;A9|QA=x9ymw};5m4Tt5nStTwe<1ymfuYoZf#FpG1B2BJ1_tr`N%2SB z7#NsXJzX3_DsCnH`2XLYdE<=bJ3rd*l5k*{xMb$TD=+`&^nTT7V_*?@{C|D6q+k61 z!w1fsI8pG^RQqsibPmtoopC%T94cS6{IB;}Do$`0%$sTbsDPgv7f$sR<7rr6p8+W;?O( zFoS@D504K|Pg>O(o}T&{61=Majis{wCBBK-CU-K?;c>rAY68Q}s=rpu%*Nczr$47B zoIUgVyFW9Bg4%-Z|BU}IY9*)q_|Go2uV;l|W^8sRVOnq9%mK^z?uznBg ztv$KgF~%Ig=ur}jkdTO!kd&C&_{#C+WsMTw>~6(R0wx{?Pgg&ebxsLQ0IVqvM*si- literal 0 HcmV?d00001 diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.Indexer.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Indexer.png new file mode 100644 index 0000000000000000000000000000000000000000..63cee80b14146ebb1f22f53dfe2004191e112888 GIT binary patch literal 449 zcmV;y0Y3hTP)`KXSGCQ9{j8?dn%q zISJ(=%E6BdBCSU8)r^g$_&CV#;Sb~RniAUq@z#G?k6=TVk+^T{fx;r^r$Q!;rbFr*#!7*1CZfZId_^>|6j zgF%jYm)42}7NBw7d$%dhyXH6?A+&eMz`TWvST^aYX{5Z#UR_mkLwC&U>cv9IQL;A9|QA=x9ymw};5m4Tt5nStTwe<1ymfuYoZf#FpG1B2BJ1_tr`N%2SB z7#J9Dc)B=-RNPAX^Z&m+vnqo^!wd-x76!&6pWYm;ZsU*NXS}E4Z=<7E%!I_#^MoC~ zRkykO%Neejb??B3*WcwAZ2JGdTxQ3a1Lw}2`taeVH(PYD?u0lu-&9Su28N`hgq9gc zPH-eEY&`gg=YRj)y{8Kv{Sj>|4$m_-Fy3S+V_nR?gzZf^P$iSrU;aZp39|%SCi4E- zU-+H1?QXlj@sai&hELS13?pW*GTN}w*jOiSb9-ZJYpRw5gW=x)f95)R`b}vRezE6l z_4$UF5ArG6CjyM$o3Js)`LV^t#j#mxIS+&;_pj&Krx(VfR^@ehg7eQ`che)={bL!Wj-6Cc zRy^|I-Q(~!)7jgNr=%P)nDI)}pP55p0wd3^S4F{zQpz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;=Sf6CRCwBA`2YVu12SH=%=kaL7(NUTKq#CwYaIUn z`NQyk?p!sZ4FL!sB+WMefBju;2%Kw%Y z{{QFBft=0uKQ)ydZu8_xlfdlh0##s}-!nY?e}!TB|8A!2|NXoL{{aFBXg32xPR?z{ z|Nl9GHgf=NW?+~%@6WV9fBs~H$+yYV z00Iala8goG{hXDR#jtqcLb%uj-opQr1lgq6h~@R$_dvG_ zF^GwZgEfK-0I?aF7#V=hV>o=|$TT2k;GQ%&>k~-xd!Tw?N@H5Pmf;UD^#KGB3(&U= zN0v-rFmVoLP?wekd7RiuhmcOQR&H8a5j7Z{Bd<&11Sz5iJ^Z)W)W z?HgD#$Y6i~Vg&h(g@t7*10Dd20T5uWsQAy=(*utcfB*vk?wIBAnKej_00000NkvXX Hu0mjfDr$=E literal 0 HcmV?d00001 diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalDelegate.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalDelegate.png new file mode 100644 index 0000000000000000000000000000000000000000..9ee36aff7d75f26a023b1e9b8b359927eaba5681 GIT binary patch literal 916 zcmV;F18e+=P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ<3Q0skRCwBAeEjSU!;Skd7<5#m85kLW08B9aKXv&& z!>`}}7`}i1!Qf`2!*KP^Gl&cjoV#+D!QNb(!9-V)0U&@_7%;*A11HWieERm6;oJA0 z49{M?W;l8NB14d;DL?1u^F(F(1>-S%V-@pGbu&}U!`G5ZW$p+!yzyC9Q|M3&WnJ^as z1Q6rnXK(-Cxc?k%9>{=SzkW0P{`a5Z-`{@>KS6Au7)bKh@1G1HgFxzj|M?9L10!t( zMt}ffdHD1VgNv0mis^rVzWw?02hasT1Mhri_&o0u18*`P!`=Vy8Giiw3pTW6(p-j3 zbK9o^1Q64YUw=?T@c%!CzkeV$Gr#>0)~sNw!0-h~OFZL-yYkmhh(3S-VgWl52%g6EaW?%^RaASDe`-VZ$RuSw4MQtU9`@8Nl@Yu63yx{%;3quBg0Al(5 z7h-^vMks^WKL!Rhpwqv8{mJnC*Ds(Kelxs(`Hn$|O&Ds3BEzZKD;WM|DKPx_`3tNM zAb?mzziePQxp^Zz3g5ha2Ml3Ga40icGBU89$zfoSW?~Q)6k=GsU@=(y-=Dv5F9QS+ z3rO+LR|^=7okJP8rDcG+1Q~ujf68!f-&%&rOaC*ly?V>gVBf&7ZR1u3>`*uGVKA!sk*8ESH6_`+d!@~d|fEc$fDENQ= z#8QT@e+?PFefh%h>iuhmcOQR&H3J>N@QGE1K}p{ZZ2!++Kf!4L1kz*t8B(KsrvU^I q~ literal 0 HcmV?d00001 diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalEnum.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalEnum.png new file mode 100644 index 0000000000000000000000000000000000000000..f5f901693eeb0663fb0c9c118f5aa95dcd3809cd GIT binary patch literal 821 zcmV-51Iqk~P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;t4TybRCwBA{Qdqc!_$+M42+D74ASPE3_u102mty2 zpPsB>V1#fOK=8w-*I>Cf?_M%!I80>_SN38A2q4DaAI>p611e+yD`kW#25b5+ZkEZw z`0FiL?Dx0NV6$2Nykz*r@SUNt=^R7fqJz@_0*HkXrV(TZ)OMI5Ak84Lk{KKf-+%mL z`0?Wh!?f%l48K2qg{uV!AQp7ZAo~5MHw;4jqG0y#Z=V?2<3EFK{`&C^P&3dKf8Q{` z06+k-fSih~nE~n^kRf;0*E7hexiU;X>ca5tJ2%76pVABszULS?|9)rq_T@8JEkFRV zfc!6Rp2@)Q^BvfaAioNO{rZaGC*ya9rl#`@E%j#@et-DF@Z-Z{2FAY(C;%XUSisgn zHJ8rh0NV5qXwy%iU%xZ_0s0jL=FYjt@buXSh|_@J>*vo5X;rlh)7J(t00a;?5WzNo z|IE-H_Ze*S7bL%e)uUaey3~e5u3#5R4Jz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;Wl2OqRCwBA{Qv(y10?_;fLPE4etvt)z`)4Jz|JYe zaQEPZ|LolFfm}wg+{4Ge8D77B%OGRm!eDF~0u}@aASQGJnEriWUZZR>)Tx4cwTk?d#+%jSsOg%sVVHg0ijfGnY>M26o_r!)LI&BgHk_FslIKh81C-Eyx;WJFdA5I`8Quwi!Q|9f|zFg$twfk8$}fFV0Y zo8jeBHio>tvl+G=dpqsr%U28_OC==4!Ri45hy_d3GTMhEGW>jU_P??2U$Ex65BnIl z9Q^_I!i$$Lfl3gr1_&U=;~VS$!{Qm__cw3ffnx$B1fq{0n8nb#@CQ8PU%UVr@DJz$ zNc;i>5DQ4r&sPf=jGaRnxTR%)x&#@1Jb%h?Zr@sl$xHt;tlsCcNN4CnW)V|e!Z zCs>h!q9V@B1Q0+hAWIIO_{^~F*m;I;Uk)?8djFc?-N#>G%}k7p1al)m0D%({3k%Cs he2S3MJ~{vhFaVY)`}ljQ?KS`a002ovPDHLkV1mbzKI#Af literal 0 HcmV?d00001 diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalExtensionMethod.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalExtensionMethod.png new file mode 100644 index 0000000000000000000000000000000000000000..bc70136ff90beac32282252b6949e58a779d81a3 GIT binary patch literal 629 zcmV-*0*d{KP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGmaR2}kaRKw(dX4}900v@9M??Vs0RI60 zpuMM)00007bV*G`2igZ37B?UFQH%iq00HGmL_t(IPnD8AXp>PChF_BwM8rw4;Gon5 zCvnv3u2Rq;UD6+@LWL9xO%ZL|wEZRJ7pa zRQ$uLkKg^QmXg@U19v#w^FHT2=U%DG@XAY-rR8OfYUH+ag3#*F|3jM8#AD@or73cb z9D$lZ^^h)gF|G_R^@17AP*8!GVzjAk0m5w3PKu>C(TNm?!)ZJ3PzNV0UXzqm zBC9OJ8m3QunEPdS;#UuG#Tn25*L97Hx<6RyV^0XJo1!_`I_Xzbc(0XM;W=B zWN)7V5tM0AMhgj+?^;v!a@`pFxz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;i%CR5RCwBA`2YVu1F@K=x$!@`7(f7#q?zH=>Hlnv z^(ck_1Q6r@uWK1jU;o3v%*e=a`86xUgi<(*iGkt!PX>k;FBll^++|?k;$~oY z^9IPi!vGLKObkp6jAnYw42*x67!4)=Ga73CVeDMC9?4-qA{W=2!GYbRD z^Jieq%=`CG0|+1{ptt@r`~fOsWcdFF8orFIK)Sb=k&~ST=;SX93_`*T3qP$tGZ+vP}IyZ$2Y8CkF%bwyh|dK>#3t zz|m+ISIBT~-&%(6&z~~<0Adi^)Fp)B?WbRGgZW)Cb#6-ox z8bK}su^E{d8JHLu83+M@0Ad09mf^^f2@EFAp$zKMvLKH${CV+&;rzaJ49{NwBxnFY z0I`59Ie6kT!?t7R8NPiv%<$^{Yle3pe}Od<;{t#HVg$uJD4_5u!sd4v00=Muq-0RG TX8C{?00000NkvXXu0mjfbd^r* literal 0 HcmV?d00001 diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalIndexer.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalIndexer.png new file mode 100644 index 0000000000000000000000000000000000000000..b082979827bed763a1ffb6783c832b31d23817f0 GIT binary patch literal 619 zcmV-x0+juUP)Szk7A#v2Qu?wDZ7F!r ze_1(fSzPWA0Qo{1{d)>i*2yyfee(?C(KHhuK5=oV zj%3zK&8pRy7GSSx-7!n&`6t{8ycZDVIom|<^^f$O$o-=nCc(~g~gJkoXDx77Z>CBwlBY9WhYq^1y& zUwMVY&TF!gfk{LtChpMO=3q_zCXjU$;!z^u05|U`bY1tA%VpPc1{y%C^Bj?IfVp^d z9^P}nPHLu9F@h{}YORPSXd;yj1mVTqes;GxXsmAl5x#w$WF$O9 zELp6=K;Y@CSsuO|A)kFtBAsL^QzDiuRyBcC^Pek~_yaMy!Btm{W6uBp002ovPDHLk FV1ia25UKzG literal 0 HcmV?d00001 diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalInterface.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalInterface.png new file mode 100644 index 0000000000000000000000000000000000000000..fd818fe2ab2ace82c72cdf610bdfd2989bdba04b GIT binary patch literal 775 zcmV+i1Ni)jP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;eMv+?RCwBA{Qv(y10?_;fS4F41ONfV^6bTXh7Vu9 zGrV~Hfk8@KkYUT76F~NRhDT2xF|3;2!0_w$AE2`T|92d?%)rjh%JA^nO9oq0Es$PD zO=T$tfB<4*V1$^&$OvN~vBBaD|Bs!$%W&fS6^3(HZZj}5vN0Sxa|fgb?00|wVgf4t z55f#!nh}JN4g9}x_XURChfg!ahqy81Cwehho2oLfu`@F)UbBaRg@t7*Kmakl|NNan zNlui36X?9nd(VJe@E>F=$WSxyGzI})P6l3HUIsZSK?Xivo@sKDLJYE!!VLExKLlF@ z5I`&-zkmAlmEq2#*9?h%h{U{(<51m#buMEB}RtzS3O4E=-`TE^wS%*(u0UE~1 zAR{5f@b2SRhBceFGn8b+FqrBoPXh=bkO2(3>T*+I8m2AYk$v~!Q-7(vK+Q_ifUd{}2q4De8|(igLYJn@-f+p+Tu z-@Y7Xc=i4@FsgomH520kfB<3yWoPsdMhCb85Ci}M3;>`C^3?cwzn1_2002ovPDHLk FV1hZgLwf)K literal 0 HcmV?d00001 diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalMethod.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalMethod.png new file mode 100644 index 0000000000000000000000000000000000000000..16fa1738fddfcb7dee3424a40cb85e95eab57657 GIT binary patch literal 776 zcmV+j1NZ!iP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;en~_@RCwBA`2YVu12H&)A>u!begD^eh9^IsfY|^6 zM3iPP2Cx4+nRoo3!ZQVK$kSg>!8AYs5!4*a5d8l%!-@Yl8E*VP#B}I?Jxe{V*LMU&Hqz3 z|1mN${{MgN4GY8NyQ~b1Obm=4GB^E~V~}SMV-R65V9;k^VPIo;4TSfB@HrID{y&=$ zAb=SEepW;O+hKup1o#Zcp7$ufsujXza@hOSd$!sEW;NddHy-m&lwpWfBwyI^&Jbt)0h7l%ECgxhQ=_){AUGv;Xlv_ zK?Wg)M+^@cHZpIV_UF%^Y=8iQ1R{j|j}E(6uVHxd>j}e>|4SG@v3_KD&+v}nh4gc< z=9`~yW`i^V1Q5&V{g?j(Ll7G7j0|tyzGDys@`Zpxppa$wXTkX7=M#ptzt%EZGFtpU z{o)MR=DT0+fOP-_5aWqW4gY_>TEJlJ9Lm5gEd$cU@Zc?zD+Fu!4%7(KZ0Zui@b=R$20{QJfLLC?eGjx%h(SzL9IO%K9T1z5iIIT` z?ls&1Ab?mHf&MQ0t^5<`(|Mztke+z0000z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZp`;XeZ-0}JmL24e{p1`i`XAfE{& z_J8Nb*$fOoIR-{XhBvR?fG7};!PYj2;rQ9-48oFJ3;+Sd0uf>W8v;`di**yj(AkE0c$N&&PEUZAktLvyRNd5TF@ag&jhG3wx zL7M8T0~v}67csQem@wqFo@dC7VPtsw?hC{3=MNcX9FS%B_~R;r9MJs$0mSnAGcSYG z@9#j(^BL@Pzc7?n>}L?St7T|xZDA0`o;fAmG1way?YAgUpaQ-e|dt<|C<|){;SLK{y%o?KU#)`owVJ z`~!x^kDr0nHa6C0pWOSEVcWqT27mx!`TgrBSkT-+nE?izO=ZC$YGk0m;2Yw{@b)tU z(Ep#|akc5hGX@EuS9}~wvH=2!#aaG3!^zE!@MwJV_8r)75dShV9D8lXkdP9=@blL% zApbu+vS0FiWRU#I&j1iWEFeWcUoBuTb`E9WmX-m^3Nrk7{*>X|zO@XKm;Ps9Rrt;D z;d3a%@85smE?|JBNDu}HAaFvmiz@_c_zu(v(`@Pz!tnOfFNRy!Z-ZUJ!~k&>%mqLm z!wa5I3;+Sd^7`$2AWw)vOjI1K5u_Nz1|&U>cv9IQL;A9|QA=x9ymw};5m4Tt5nStTwe<1ymfuYoZf#FpG1B2BJ1_tr`N%2SB z7#JA0db&7hB&YU?DJn`xw0|$nU3C3T3e0*H6ZQ(-2IDG~dfi^}N8JPs%n3$Ls zL6JT_K9L6J_SgSE5XZ!!u%@x%-=9i@zpt&cc-;lms?fmgsmN5R!TUN^y@j4$=Uv}ug5 zgi?Nd{G)kzXKl8mn*QJO2Km?B+aAp^GpQB?hQWcx4DoP|Yae7+2rj#MMYZMO+vV{* zZxmRW5?VxozB~PT`}@XiT!tN;UCpLVF)T^OMutWPj5kkD(@lujRbqFpgaK%w!+j%} zNTbGsEH79~Gb1M)m;AS<;!r`|eXF+g_4Q3Wdzg;27f6B>E;wLS@yPh_w&drM`)V!E ze0cRYyRBTlzR}d!k?FgD#s;veo(Ered_{IJ*fBFO@i2%c9CO}ru5|}6vKc&G{an^L HB{Ts5q~_v5 literal 0 HcmV?d00001 diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.Keyword.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Keyword.png new file mode 100644 index 0000000000000000000000000000000000000000..c69cca841510cc5908f88a2568c5747e540b1aca GIT binary patch literal 1250 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstPBjy3;{kN zu0U~PTO&&s3ws|sw-8sKXz$?Uz{u?I_@cP9suTvb|2a)rMV$qe6U*yo)&doeg3%Bd zP9adve&{6w10zF8kYDiskqsDvzq6|XMSLZbp_J|BMZtwk}xZP|6v>ePP=FH#rW`GYW1sE$Qaj&%m&f X^U}--y8048GZ{Qx{an^LB{Ts5l{r;X literal 0 HcmV?d00001 diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.Literal.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Literal.png new file mode 100644 index 0000000000000000000000000000000000000000..077075c13220b2780ca5064d69d2d1b40554112e GIT binary patch literal 416 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9EWV9eN~w38hu$dc~p z>&U>cv9IQL;A9|QA=x9ymw};5m4Tt5nStTwe<1ymfuYoZf#FpG1B2BJ1_tr`N%2SB z7#JAEJY5_^DsCnH`TyUZS(QPdVTObT3j^a3rsO@fzrX$e`T4n_NX@S=oId-jzw`NM zYib%=SXvq$dcw%Wk;mY%xv!6J#^2xH^9}w!KF)9O_xXAGw*B@0n{FDXok=JtE}qRL za+>WUBU49`J_CyYw-I}qF^5jvhpHL<(J-Z6!Thqu-L|JQhQf8F1%BnAhDg%S*#1X&!mF*-|~ zbGzQc162LUfrUe12ltYtOC`hB$Mq`xe05dZLi$0@?kEP)*CnwtY93d(QbBzUSVfIEEa@;R12i zyC)=-zp0jH-!lCtXEcL{oJ;%giHY;9*bn4P5YtVyR5Ms>xBsyuhkIEv6{j*=)Y2=& za<|kwwhwo(2m5`Gq~l&6#hx&RFI3zb<#?EEY*e(fBS-kudRJOT`dM!=+1d#LZk0x{ z%1*vWIFVp6abGN{q(!w}Q8OQ&O15Y*|0TrhCu2${^?aq5-)UUzgmN8Yu}pqu4Hbz6 zcaOGe_V70txco-+*)`ZpWx*qUt_%0s0!H9D>X(T8SfiU)Q))MGV4Cp$qhLlLTQUe7 zvO4}yeQh6?lV>}yq9Hb>=dgNC6LMWrwNW&P^`^h@IdVg2Phk|6skhm5dh;Y3 z&wsN&do{h1}75aL|bxy)CKg oo$eYS1?EB4>(7sVj4a}e*`mH+?%07*qoM6N<$f|(xjv;Y7A literal 0 HcmV?d00001 diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.Method.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Method.png new file mode 100644 index 0000000000000000000000000000000000000000..3ba3a9952dc55808e6659102198648d58c16bb29 GIT binary patch literal 621 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9EWV9eN~w38hu$dc~p z>&U>cv9IQL;A9|QA=x9ymw};5m4Tt5nStTwe<1ymfuYoZf#FpG1B2BJ1_tr`N%2SB z7#J8Id%8G=RNPAX@&CU)v!O+k;v@T>+W*&U+tlsnHQZ!ibeWQ-&$j-*^~~}=^A8!b z=AF14?|;z5fkE(!%o%|{|4j~e{x_G*`(uBkGks(pE5FabTaavNImm+ z{+S6!4jevk{J_xzXAk`ApX>OvpUYV%`AxlNn&$?o28N_R|1;124>tdAXk_&7fBjot z?!!-aui@$O;pve#GXFb0c|y8CvOuCi!iDsN#DwGu-j?r;A1p=A{j;AfsL&wszb@+V zfg^_w6#P0>&z5G!*7o}SOo@4W(-JDA%32yHHa^_1+RPd;S*BU%u((1E+m#< zIT%<3PS-C`Qb=J)7WgWEXw8qWorE?{8Y^iV>=wdenTM%Dj@1~xx`wj{n?zqLo<`TDwzQaQ$l x<2&4d;m4xR#>L>kU}zY?!NAm!#Ee1kFqk?j%AV&>KLSh|44$rjF6*2UngH4a`gi~U literal 0 HcmV?d00001 diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.NameSpace.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.NameSpace.png new file mode 100644 index 0000000000000000000000000000000000000000..9660524ad387a1b79ec967616ad0b441358bdfd5 GIT binary patch literal 460 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9EWV9eN~w38hu$dc~p z>&U>cv9IQL;A9|QA=x9ymw};5m4Tt5nStTwe<1ymfuYoZf#FpG1B2BJ1_tr`N%2SB z7#J9xJY5_^DsCnH`TyUZS(QPdVTObT3j^a3h9X9zYnLwlI)C~!ciFTVGbAE>Vq^dA zU$f>-eP(7Ro1~LPBTxk|kf_otz%o?^+6!e$;B7 zf6w5+A(xn#IgJx13Z7%Xcz=KW@ehm+3=esjC!}p)Qd1Lozlgbk;gG=tpo~UWB3t5S zSr!H+j=Y9Niyr--Z(nc3V5n?%d!Bv$xf6#EA7(hBA;iGQV*cRY-`_n4E~Ej^J zF+QVUYrFS<{Jxq*h9tKXW}yC~+%hsUJoW$n9F!6RnsQ8v4d|<;Gl^+w$39r^a(n^w zYCz0~x3|rCTJ_`iwNyWSe}BIO8v~2L9R^lb)(PAaJ9q9p`0&G{qudoDO-vF~+#19Z uESMDmdKI;Vst0IF3-NdN!< literal 0 HcmV?d00001 diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.Parameter.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Parameter.png new file mode 100644 index 0000000000000000000000000000000000000000..49257c647df94efc9216ef3790f9af43dd0cc1ac GIT binary patch literal 522 zcmV+l0`>igP)yLiUo4l(JHag=B-R6{TjQ>}-^s zkCd;4Nfe`I=FW_nJ9iA@&hfq@(^weu2YBjq-a7B^IZp@3Qay?V)BRf{x~OkS*?^+j zS~f}T>p)}kI;GF0zhI%E-fb!x>I6j%P+bFhS~uu>CjA8ubZ^nypaW{Y1QsX6LmC27 zE-EV)k|uJd1a|u(1-cy2Vg}xH1BqZ1IdL5kzXxV(F{-PUNT#rpSkVYOKHa4oRmSCA z4pygznHUO_$k`KO6{Y;~fdVZA{oV!HY{mPF7a`v@*l*h>+Sif>rkX}1_(nr12Xmc+ z7)K&1Lg5FVY;RNk;0a77;N*&6G6OdO3C}99KRM2t>Q*ShBQr%o@Zu1Kwpx(i4e8aF zgbkUdSf(3@BiTx3sX(zq_uj(7d(3?fkG7M9#h;V`#hm1SW_Z-%xDLp0dkAx5qfD5T zm&_0s-gO^>k?j!N0!r37^Nc-}CkKmjD0& M07*qoM6N<$g5E6M5&!@I literal 0 HcmV?d00001 diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateClass.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateClass.png new file mode 100644 index 0000000000000000000000000000000000000000..370aa1c768dcad12b16cdc315871ea9f7fa66f6d GIT binary patch literal 920 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 X8vZAN5zS3a00000NkvXXu0mjfN*-_N literal 0 HcmV?d00001 diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateEvent.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateEvent.png new file mode 100644 index 0000000000000000000000000000000000000000..faec01aff3aa180005a33e6a15b0acf6cf3f9b08 GIT binary patch literal 785 zcmV+s1Md8ZP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;heZZR>)Tx4cwTk?d#+%jSsOg%sVVHg0ijfGnY>M26o_r!)LI&BgHk_FslIKh81C-Ee*XN$@Z>eV4!vYVwh$nIm|&X4Mfey# ze)-Pu8fb{9FfT*NTp5N9+jcXsnSBFl{=<;BcQ(V8V{fOueEEvu#fz740{{XDY{2i| ze;79JJ;M+aU_C7}#%0>ucV8I3|M<>u=jn5XmrL0g=05CW*mCp@*bDy|KrTk49e@A= z8}Q@TABJz=e}M(wy||sdVaG0pkDop=e7nUA*4(=A2O{MEGoTm%5I~HlFF~Bo2!f1| zSoreoC&P=^9~ovXS;Me$T0LCzgZuXxI5;_h`u{UXKobZ+0I_`f@`FJ_l%F9yG76jq zKxWLGH3#UezYIW)kQDgf0mHA~9~oF#c)^;H0YCsTy#WRqNK;?`RImXc`YX@{zkdA& zhQm*YtKpi^X$A&>0Al$J4Ea~@K7%#4c1&RS^z|nsDu4ZD`0)c0E((f@I5QJK0D;p% zcJ0*vKY#uNhrySxUw{Gn6Rdgf%6^n&iwyt-5IiBVu&_+Urht$E009O7NGdW+6?A$N P00000NkvXXu0mjfw7yj! literal 0 HcmV?d00001 diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateExtensionMethod.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateExtensionMethod.png new file mode 100644 index 0000000000000000000000000000000000000000..b75a815759089205a34d73f55f4c8c126e64228a GIT binary patch literal 650 zcmV;50(Jd~P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGmaR2}kaRKw(dX4}900v@9M??Vs0RI60 zpuMM)00007bV*G`2igZ37B>cyIwZjW00H_*L_t(IPnDA0OVeQ#$G>hrAtJi+&Of9` zFDfWg$cuT=&na2CiLhap7Z^j^PF>lGEIlhGE}>50o8>RZ{@xz;l%U;BheJQ1}F277PRmRuCfhn zlwCRCD2OFsC7$8^$04>~uIDAaj>apK?%t6-NsdYf8*!0(wZ2y@0g=@d?~OgrKQw!W zC|%REz|ks$!j8+llQ>Zdh#er`C;e!7v#l5<*rDoO8@`>07*qoM6N<$f}o5k&Hw-a literal 0 HcmV?d00001 diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateField.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateField.png new file mode 100644 index 0000000000000000000000000000000000000000..47455f91749fee20a44511e89cab66235cc3728f GIT binary patch literal 831 zcmV-F1Hk-=P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;wMj%lRCwBA`2YVu1F@K=x$!@`7(f7#q?zH=>Hlnv z^(ck_1Q6r@uWK1jU;o3v%*e=a`86xUgi<(*iGkt!PX>k;FBll^++|?k;$~oY z^9IPi!vGLKObkp6jAnYw4F6e77{u6B7;Ka!8CGmLiEswU_#;Od7(ljOzs|tG%)-F( z{25p?^ZxzQ00M{!=&k>!t{eUr7vW?0_~kpp>-S$6M1^@73I#M7IN4c%PX5BcASBGd zaPR<-7GYrf^PPe3%X_fqKY#vY0|XEgGtdRUfB#|Fy!Q-4On~*Y%ovwxZ{K}k`2OQN z!>_L1X$%)HF)%!R&cN^+7zW?JGB7@V%J6aHHn3)p0|5ev3FN{bzy2_M`~Hg|G1@)r z%(bxe`aRpspts|Ab^-Yefa?laz=*ms3;(gW{8N4 zV)*;_FVMw*8GtqcV})fZ$f7UPW-y}I3_3krRb8E*0hEHFAGW-N4*&o0DGW_`Qi=Y7j0mKOMM|SPh|382J z1R4T#Dlpo<0TT^K^WK&H)37-k82|(j<9}%4hxrv95HbKDzyJ%Aoi8;oU+(|_002ov JPDHLkV1gb{cj^ED literal 0 HcmV?d00001 diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateIndexer.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateIndexer.png new file mode 100644 index 0000000000000000000000000000000000000000..2c43c46ea1cec1b7243ee06da19bfdec790b54ed GIT binary patch literal 612 zcmV-q0-ODbP)G(KX?eTE*-K%(2Sra+>Fl1SUol7y)3@ph~aN= zf8c`HEGe9>FaYzJINJ9)j7u@!04sq|+6c3-gD>mp4oENJlMXP6&OIMEJbcHeL z3DSue+Cmhi6!A|J7?eU86j~vCH_$0oOB$yujMu#%udffkZwGGwOByyLnV60<_4+O6 zg0;-1)=;^s0%IQb%kHh;Xls8!&%i4MN?Ok}(s^~9uG8~09-02RL{-J%6Aqrm$Ll@+jn!(2bU5CZ}xMmgSnJbr;2v zpjWc`pyZ+s$&EXt*JGB#!jg&%cqN+%Nmd_}j^kDGVPv1ki_LP=W0sZhhPBl-EXF6% zz6^8pP%{~09m#~TsNIr!Gi()kzDaUXhv=gX<&BUxu}Lm^QhM9#%Yq9oQ2@baso=VM yealJ>jD-ftud`gf^AZ2;g&zJ#9ro2_&;A3z7u4J*$FWdP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;gGod|RCwBA{Qv(y10?_;fS4F41ONfV^6bTXh7Vu9 zGrV~Hfk8@KkYUT76F~NRhDT2xF|3;2!0_w$AE2`T|92d?%)rjh%JA^nO9oq0Es$PD zO=T$tfB<4*V1$^&$OvN~vBBaD|Bs!$%W&fS6^3(HZZj}5vN0Sxa|fgb?00|wVgf4t z55f#!nh}JN4g9}x_XURChfg!ahqy81Cwehho2oLfu`@F)UbBaRg@t7*Kmakl|NNan zNlui36X?9nd(VJe@E>F=$WSxyGzI})P6l3HUIsZSK?Xivo@sKDLJYE!!VLExKLlF@ z5I`&-zkmAlm4S(wnL%4sj^XFeUkuU`k_^vZJ_q`lo#DpaXABY|A`Fk8e_;6h^B?5=f+U|SK>nd+8;@mu|M49j zrnY7}|7S1T#;|?wGlt*4e=}6%Br=%lDNO^qA{!up7(fYW&(W*@J7;YC&&^or(hh1Q633V4#6C_4Q8$8vvre0$uRy z*KdaJKYkKS$^Zex@);QNuikwIYi{kB!0_qoPjFQJ`1P0J$B$nG4FCurMo>Ux*G~Qa z^XE@+7<~Eqh2h)xpJ2^z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;s!2paRCwBA`2YVu12H&)A>u!begD^eh9^IsfY|^6 zM3iPP2Cx4+nRoo3!ZQVK$kSg>!8AYs5!4*a5d8l%!-@Yl8E*VP#B}I?Jxe{V*LMU&Hqz3 z|1mN${{MgN4GY8NyQ~b1Obm=4GB^E~V~}SMV-R65V9;k^VPIo;4TSfB@HrID{y&=$ zAb=SEepW;O+hKup1o#Zcp7$ufsujXza@hOSd$!sEW;NddLBEcw5L@e}JuhW8Bb7+y#}XV}QRaoWw#H?u){0Ro5#0caE08(4P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZp`;XeZ-0}JmL24e{p1`i`XAfE{& z_J8Nb*$fOoIR-{XhBvR?fG7};!PYj2;rQ9-48oFJ3;+Sd0uf>W8v;`di**yj(AkE0c$N&&PEUZAktLvyRNd5TF@ag&jhG3wx zL7M8T0~v}67csQem@wqFo@dC7VPtsw?hC{3=MNcX9FS%B_~R;r9MJs$0mSnAGcSYG z@9#j(^BL@Pzc7?n>}L?St7T|xZDA_0zFnk5Z&(B}KfPVfDkL;H`AHg(00I~SFS%ICe zt|-9}?Qg^I^yPbo`l1wu7q34u%v!?85T6pk@Zs}cuq$CMV1TAb5C#Y!rcYmffI~Ap zDhi0B86qO1820cl1P~)I2{2^WPW}J$=TET7U%q|;2Ix<) z=DjQXuK?8?Vn72xuVus7009Ix00dZASf(;y0mzE60e}Dl0K@ZVelq%9U;qFB07*qo IM6N<$f@bNvqW}N^ literal 0 HcmV?d00001 diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateStruct.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateStruct.png new file mode 100644 index 0000000000000000000000000000000000000000..a8812254f688eee5161dae6624a96cf7e15b0bd8 GIT binary patch literal 642 zcmV-|0)737P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ-_(?=TRCwBA{Qv(y10?_;fS4F41ONfVg3M`cZN=%F z>gsAnY~la`!~pUF47aqj{Qv&_`+pEXra|J&%*<1f)xt190I^^*^!V}PaJHeLAzm*4 z1Q3P+92^{AOEz+M6fAVyd$oVs}L|J(Op7=Hfz#qi_zUxp|@ zONL*+eqq@7_U&H=Nl8uypkdSg{P~j&5I{^Y&Eg__3?ILIXLt=XL{ylUp`dXV0}Bfa z3I=KZ@B!68fB*s;@cZ{4hRu7=FidJIWSBpxis9|MFAU#*d}qkc&SrS|^C!d0mkJ+fRlUuRk)(TC#@W!G{kBL$CmV0Al*|K0YCsTtlWC)|C8r$|DQO2=f91U=l@d|?*2b@ z@$Ubv`!4+VO|1M64DJ6w3otM&VF3gX%V%K7zk2r>?26Wo2@IdU{)9y3ufGgGe*6N7 zUjgDnxEufwK;U$cT|4#vPhe;R&0zTQ^$RdSe}XmdUD*$gYkVmYAb{Wr2^h~)u_+*A c06>5N04Hn?EYNUuQUCw|07*qoM6N<$g4{I}E&u=k literal 0 HcmV?d00001 diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.Property.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Property.png new file mode 100644 index 0000000000000000000000000000000000000000..091e7ab2c533cd27d382ab66677e9b4e8a69ad30 GIT binary patch literal 900 zcmV-~1AF|5P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;`bk7VRCwBAES>p`;XeZ-0}JmL24e{p1`i`XAfE{& z_J8Nb*$fOoIR-{XhBvR?fG7};!PYj2;rQ9-48oFJ3;+Sd0uf>W8v;`di**yj(AkE0c$N&&PEUZAktLvyRNd5TF@ag&jhG3wx zL7M8T0~v}67csQem@wqFo@dC7VPtsw?hC{3=MNcX9FS%B_~R;r9MJs$0mSnAGcSYG z@9#j(^BL@Pzc7?n>}L?St7T|xZDA0`o;fAmG1way?YAgUpaQ-e|dt<|C<|){;SLK{y%o?KU#)`owVJ z`~!x^kDr0nHa6C0pWOSEVcWqT27mx!`TgrBSkT-+nE?izO=ZC$YGk0m;2Yw{@b)tU z(Ep#|akc5hGX@EuS9}~wvH=2!<>#+IV8Md2V4=%I{*R12#j(D78aJN3?zU*fBs~{*Z=_pHh>ZU a5MTh9Ei3Y=#@Lwv0000nr~ literal 0 HcmV?d00001 diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedClass.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedClass.png new file mode 100644 index 0000000000000000000000000000000000000000..6f97213ea95460b01ea6203e852892e6c76137a6 GIT binary patch literal 864 zcmV-m1E2hfP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;)=5M`RCwBA`2YVu12SH=%=kaL7(NUTKq#CwYaIUn z`NQyk?p!sZ4FL!sB+WMefBju;2%Kw%Y z{{QFBft=0uKQ)ydZu8_xlfdlh0##s}-!nY?e}!TB|8A!2|NXoL{{aGsg#ie1a&9vo zU0?J6`$I+sJI!|tA(=C${rU4J8zjfc#RZ}me*XQ=Fh{JB!TOaZ!yevKKoLfUl5dlz z0R#{eNb>0V>i?$BrVQpV`i8MG(=EPkb!{-YzN$s?|;5B z^fYTQz+4CrKui+CVhq3D-)CTcv4tTz*qz}Aixk7B4`81$baZq~{RNC)5Lmo;F+{9U zh2dRc0Rwwf)PE2kAb=P_0d-?*=zk5Viwu9c9T>hoJ;JbR_b-Nwt_RZ&9N3?I`NBnD zEHQxtyPAoa;az410|PLzFaYD5ZQVKsfB=HW@AWOA|Nq=f`9Hft2_x=7e7>pEAe?va z{xh6E|DUO>{6AA({(pb~LU@qjKNyF)u`$djmCIs40wDkX`1FZEbjAz@hDVPWm{zQ0 zU;y$Nr%ss$5I`sfe0ukqp?C2UhK%k<(-_de&x&%!4`04Aux{SW!0_!G1LN#j;8*|% qAe1y-o4}3Xe00oIUXG#$Aiw~q3JE@E7bUR(0000z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ`}}7`}i1!Qf`2!*KP^Gl&cjoV#+D!QNb(!9-V)0U&@_7%;*A11HWieERm6;oJA0 z49{M?W;l8NB14d;DL?1u^F(F(1>-S%V-@pGbu&}U!`G5ZW$p+!yzyC9Q|M3&WnJ^as z1Q6rnXK(-Cxc?k%9>{=SzkW0P{`a5Z-`{@>KS6Au7)bKh@1G1HgFxzj|M?9L10!t( zMt}ffdHD1VgNv0mis^rVzWw?02hasT1Mhri_&o0u18*`P!`=Vy8Giiw3pTW6(p-j3 zbK9o^1Q64YUw=?T@c%!CzkeV$Gr#>0)~sNw!0-h~OFZL-yYkmhh(3S-VgWl52#&6= z0s4!P;nnMR49_?n7=k_A7~b~2VNkSH1babITZ!TRuKNr;_ACr9xPQRHkO3fon128L z3)EcAVCrnjV6OF&!Pnt81KYJqhO)9^pcj5Kynp$Qf$<$9)DT66$Ft9a!{*1&Utj|O z0*FcI!)gXoCsQz|v2zu}^M{WaQo@)S>?95_{04gO@W-%P(HAnBn&)p!fd# zg?kwwfS4qN#Tb6Qzt6z@Vhclbusg#K7Ab~LA0X+g{X{$1Tc4hN1Zzf4s=t0gTmTS2 zOvm1vFg&?>jDh*!7?0<%j-Yh_`{AFMSLk0$xI2CX@ z0EGhx00a;?7XE1r400ImE676jr!9YI800000 LNkvXXu0mjfO1G=v literal 0 HcmV?d00001 diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedEnum.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedEnum.png new file mode 100644 index 0000000000000000000000000000000000000000..1912ed8837ffe0b54907b5f3fced99209e7cea60 GIT binary patch literal 784 zcmV+r1MmEaP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;hDk(0RCwBA{Qdqc!_$+M42+D74ASPE3_u102mty2 zpPsB>V1#fOK=8w-*I>Cf?_M%!I80>_SN38A2q4DaAI>p611e+yD`kW#25b5+ZkEZw z`0FiL?Dx0NV6$2Nykz*r@SUNt=^R7fqJz@_0*HkXrV(TZ)OMI5Ak84Lk{KKf-+%mL z`0?Wh!?f%l48K2qg{uV!AQp7ZAo~5MHw;4jqG0y#Z=V?2<3EFK{`&C^P&3dKf8Q{` z06+k-fSih~nE~n^kRf;0*E7hexiU;X>ca5tJ2%76pVABszULS?|9)rq_T@8JEkFRV zfc!6Rp2@)Q^BvfaAioNO{rZaGC*ya9rl#`@E%j#@et-DF@Z-Z{2FAY(C;%XUSisgn zHJ8rh0NV5qXwy%iU%xZ_0s0jL=FYjt@buXSh|_@J>*vo5X;rlh)7J(t00a;?5J8$x z9lp&Frp?Ik>h(JYd(;1Lzk=in+c!*OKm#DnAOH|RU>BS^e2c-<*^Ght#a6H_^XKnl zIC6`Vp)*&3;VaayB?%7Mj12#Q5aNQ=${Gee13w0U0AhOh(SX6!$rP-pv2zu}^M{Wa zQo@)SY}LMlZHKxVZV&_52pDEy00hoJ;JbR_b-Nwt_N3u z@`qpw|NQxr&42{}1Q6IX5Wc=8^#7lmDgS3zDE((z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;en~_@RCwBA{Qv(y10?_;fLPE4etvt)z`)4Jz|JYe zaQEPZ|LolFfm}wg+{4Ge8D77B%OGRm!eDF~0u}@aASQGJnEriWUZZR>)Tx4cwTk?d#+%jSsOg%sVVHg0ijfGnY>M26o_r!)LI&BgHk_FslIKh81C-Eyx;WJFdA5J2!)IJ&;(Kgj>DUcY0wclQy)ljk28 zWTXTbvQxAfUM^*0$lE)cVau_%(_X%O#Q?HYLP8v@4w2^m}|Xc@OAjj zz{hl*;qjXvaLscc_AzWZ`UdQU{|q1(BU}v-K+LXszrmV8f!AEy%AhXG$KYW4k>T^( zZw%ts3>fA<>SJhK_yZpDU%q?=8^FWE3pM~CfLJ7i#Tb6Qzt6z=>l#CJusg#K79NIA zA07dv{xT$PnaFVPJVNt>`}Y|*I609WzyJ_H;6S{wHT1uR)J2BB+zt$1pB`aYwfh&t z=DqhBww`62_UitL?9YEi7=Hc!$iT|N%fP|G3Dzh9O<@251P%iY@70Vqo*96hwrbZ; zhV>^n!J5G~11&(r6gtho01!Y(c>xkQp>AwI`YXfMeGq30$(b?;;mJ$@0mOuCz^8Yw z8G08#VaVuyG>zEY2oOME=fQAo0{4GrX6C8LVuUb2fB^t|qAr#JJ8xS60000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGmaR2}kaRKw(dX4}900v@9M??Vs0RI60 zpuMM)00007bV*G`2igZ37B(x-{z>%!00GlUL_t(IPnD6)OO#O*#vf-C!lX9sqD7xn z+ZILtKqBN~reaXRk4DgNQM6I(Wvn)~Fj}aUx(J4XNvDYz(+I|pvKgB`R=rLIEoL81 z(IOc5b>CZQI@pY7b2;~(=XaiSu2f-!6r#e?(y|6M@YFxcaNY3cAwdOstu#3;G4Gov zQXQ!r(xV=pXc|`^$SY4q8KR2PqLx(%-==J`n2m9FHqOP7$2Jcu%vD|Ewr-Ku0$F95 z(F~&+#gT*eUUnzvb%B^-3~G@3y2qIAFrWdt)MWt{QZx?uF~wqLk~i-siKgOQe-K}x zH>rss4ROT?BZ|n)2dcHR{;gqi~IRm zctkPRN%3PR<9&NMexiO2C{PoiQ6~xQ46PH#jd(d>0Zzwu^3Uqw-2o;H#6(r?j+l3D z^Q<1z(Y0dl^7HeXeE)L8bPuyMeTGkS9TescGts{fRi}-MEWRxZ9>lld*4^YOc)Q<@ zP)HrJBY2%<{$9dDe&_!QH+kB+81LOhT5Iw_|YQ$-;D_vCC_J0bTwym2M{{ok1A8aeV@^JtF002ovPDHLkV1g@u4paaD literal 0 HcmV?d00001 diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedField.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedField.png new file mode 100644 index 0000000000000000000000000000000000000000..7849a426a8e2161ac660dced2d5396cf73c80520 GIT binary patch literal 772 zcmV+f1N;1mP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;dPzhHlnv z^(ck_1Q6r@uWK1jU;o3v%*e=a`86xUgi<(*iGkt!PX>k;FBll^++|?k;$~oY z^9IPi!vGLKObkp6jAnYw42*x67!4)=Ga73CVeDMC9?4-qA{W=2!GYbRD z^Jieq%=`CG0|+1{ptt@r{9*Y2^Vx;}U+!J_&wXdle@0fIXL@@XIoVl&PX5BcASBGd zaPR<-7GYrf^PPe3%X_fqKY#vY0|XEYGtdP`cb@xi>TJfq{9-H6@eB;}=a(_CM21ZT zDqv(xPX5mzDZ{|<8yE)PzcMgBe#-E1%QmoPkOKh%h~dcEs{cPftpES>{p$^Hk(?01!Y-62f8(zuw;m+P;M$I@q1z z2a6QLrw=S(!&z8ZrhF24R2zVnI$wAROw(2BhV(fCQ>jaR7h-LP?3A z-o0k%UHpV0qx;b`1|k7K0HHXiHi4TY=YudnfB^uamd5_;aUs9}0000Gkg@;(0y#-U zK~#9!jgn1BRACf`pEGxAA*72;vrS=bS_DZO7g?)jArusb=pv*L!WoJPwM1G3{w1kp zBV-W_MBqaVETr0tS zffjY#qvQ1r0AQG5wBK{MoeZ*&WtM8?;ejnA1pV_@5N^m;NjM|G2}Te2uE zD_?B&X7_E9NrzM_g{Eo#bmkQ!gu*%kw6*&Y5!%}Q#0?AEPLeRKbtAZAdV-l>F+_xh z<_@B9YhjhPgK669cK}dTe?wW8g$U?z9V203nl^(y?Okh)zi9CHfvmLi)$|8#;0sz2 S`^M=200004H literal 0 HcmV?d00001 diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedInterface.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedInterface.png new file mode 100644 index 0000000000000000000000000000000000000000..d8fedab143b1affc9ad5c39111601e445ce81e02 GIT binary patch literal 753 zcmVz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;XGugsRCwBA{Qv(y10?_;fS4F41ONfV^6bTXh7Vu9 zGrV~Hfk8@KkYUT76F~NRhDT2xF|3;2!0_w$AE2`T|92d?%)rjh%JA^nO9oq0Es$PD zO=T$tfB<4*V1$^&$OvN~vBBaD|Bs!$%W&fS6^3(HZZj}5vN0Sxa|fgb?00|wVgf4t z55f#!nh}JN4g9}x_XURChfg!ahqy81Cwehho2oLfu`@F)UbBaRg@t7*Kmakl|NNan zNlui36X?9nd(VJe@E>F=$WSxyGzI})P6l3HUIsZSK?Xivo@sKDLJYE!!VLExKLlF@ z5I`&-zkmAlmEq2#*9?h%h{U{(<51m#I%>> zP6inXA%=G!zcQ@Zyq%#WBZk3LPk9B(Mt3LgQ>GAgSpmA249EY3^U3UvOt=x z{Ijw_VQOop!*KEHO@`S^*D|bFzZs}G7OWZQifn)YVmPw4>i^FV>;M1!xZ!_o6950l zyFLE@Kd<(GPNnjHP$Gk2W@hH8$QULL5I`&v!eR`+-rr~7{B?~XI@q1z2MZ6wrw@;S z_WuQkGT0U%fYImxAb`N8T;CG%|NlAF|9@_#{{Og7^Z#t1?Z~#^!vFyUXI$SB3N#?) z|Lh7SqBVmsKmf5Ixdn_v-PnM%94HX8iOCB90mOuCz^8Yw8G08#VaVuyG>zEI1Q0+d j&Z$k{Cdv6A3=m)dGge)@gSjTB00000NkvXXu0mjfF0Du+ literal 0 HcmV?d00001 diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedMethod.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedMethod.png new file mode 100644 index 0000000000000000000000000000000000000000..53f15bd5a2e8a1e54624b4d21d2e9220aa08131f GIT binary patch literal 765 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 public object GetTooltipControl(AstLocation logicalPosition, string variableName) { - return new DebuggerTooltipControl(logicalPosition, new ExpressionNode(null, variableName, null)); - //FIXME -// try { -// var tooltipExpression = GetExpression(variableName); -// string imageName; -// var image = ExpressionNode.GetImageForLocalVariable(out imageName); -// ExpressionNode expressionNode = new ExpressionNode(image, variableName, tooltipExpression); -// expressionNode.ImageName = imageName; -// return new DebuggerTooltipControl(logicalPosition, expressionNode); -// } catch (GetValueException) { -// return null; -// } + try { + var tooltipExpression = GetExpression(variableName); + if (tooltipExpression == null) return null; + + string imageName; + var image = ExpressionNode.GetImageForLocalVariable(out imageName); + ExpressionNode expressionNode = new ExpressionNode(image, variableName, tooltipExpression); + expressionNode.ImageName = imageName; + + return new DebuggerTooltipControl(logicalPosition, expressionNode); + } catch (GetValueException) { + return null; + } } public ITreeNode GetNode(string variable, string currentImageName = null) diff --git a/Debugger/ILSpy.Debugger/Services/ImageService/ImageService.cs b/Debugger/ILSpy.Debugger/Services/ImageService/ImageService.cs index cb755c3f1..9646c312b 100644 --- a/Debugger/ILSpy.Debugger/Services/ImageService/ImageService.cs +++ b/Debugger/ILSpy.Debugger/Services/ImageService/ImageService.cs @@ -26,9 +26,17 @@ namespace ILSpy.Debugger.Services { static BitmapImage LoadBitmap(string name) { - BitmapImage image = new BitmapImage(new Uri("pack://application:,,,/ILSpy.Debugger;component/Images/" + name + ".png")); - image.Freeze(); - return image; + try { + BitmapImage image = new BitmapImage(new Uri("pack://application:,,,/ILSpy.Debugger;component/Images/" + name + ".png")); + if (image == null) + return null; + image.Freeze(); + return image; + } + catch { + // resource not found + return null; + } } public static readonly BitmapImage Breakpoint = LoadBitmap("Breakpoint"); diff --git a/Debugger/ILSpy.Debugger/Services/ParserService/ParserService.cs b/Debugger/ILSpy.Debugger/Services/ParserService/ParserService.cs index b2b38a4d8..829688668 100644 --- a/Debugger/ILSpy.Debugger/Services/ParserService/ParserService.cs +++ b/Debugger/ILSpy.Debugger/Services/ParserService/ParserService.cs @@ -83,7 +83,7 @@ namespace ILSpy.Debugger.Services currentValue = fullText[offset].ToString(); // searh right - while(!mySet.Contains(currentValue) && offset < fullText.Length) + while(!mySet.Contains(currentValue) && offset < fullText.Length - 2) currentValue = fullText[++right].ToString(); return fullText.Substring(left + 1, right - 1 - left).Trim(); diff --git a/Debugger/ILSpy.Debugger/ToolTips/DebuggerTooltipControl.xaml.cs b/Debugger/ILSpy.Debugger/ToolTips/DebuggerTooltipControl.xaml.cs index 656bacbc1..dff6e3357 100644 --- a/Debugger/ILSpy.Debugger/ToolTips/DebuggerTooltipControl.xaml.cs +++ b/Debugger/ILSpy.Debugger/ToolTips/DebuggerTooltipControl.xaml.cs @@ -84,6 +84,10 @@ namespace ILSpy.Debugger.Tooltips } public void SetItemsSource(IEnumerable value) { + + if (value == null) + return; + this.itemsSource = value; this.lazyGrid = new LazyItemsControl(this.dataGrid, InitialItemsCount); diff --git a/ICSharpCode.Decompiler/CodeMappings.cs b/ICSharpCode.Decompiler/CodeMappings.cs index f4ac2ffc2..98582c299 100644 --- a/ICSharpCode.Decompiler/CodeMappings.cs +++ b/ICSharpCode.Decompiler/CodeMappings.cs @@ -146,7 +146,8 @@ namespace ICSharpCode.Decompiler continue; var codeMapping = mapping.MethodCodeMappings.Find( - cm => cm.ILInstructionOffset.From <= ilOffset && ilOffset <= cm.ILInstructionOffset.To); + cm => (cm.ILInstructionOffset.From <= ilOffset && ilOffset <= cm.ILInstructionOffset.To - 1) || // for CSharp + (cm.ILInstructionOffset.From == ilOffset && ilOffset == cm.ILInstructionOffset.To)); // for IL if (codeMapping == null) continue; diff --git a/ILSpy.sln b/ILSpy.sln index 3310fac98..3bb9f43f4 100644 --- a/ILSpy.sln +++ b/ILSpy.sln @@ -1,15 +1,15 @@  Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 -# SharpDevelop 4.1.0.7279-alpha +# SharpDevelop 4.1.0.7302-alpha Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Debugger", "Debugger", "{1DEB3B4E-03AC-437C-821D-B09FBFCC3E5B}" ProjectSection(SolutionItems) = postProject EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ILSpy.Debugger", "Debugger\ILSpy.Debugger\ILSpy.Debugger.csproj", "{6D3D0F0D-348D-456A-A6ED-E9BD5EFABB6A}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.Core", "Debugger\Debugger.Core\Debugger.Core.csproj", "{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ILSpy.Debugger", "Debugger\ILSpy.Debugger\ILSpy.Debugger.csproj", "{6D3D0F0D-348D-456A-A6ED-E9BD5EFABB6A}" +EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ILSpy", "ILSpy\ILSpy.csproj", "{1E85EFF9-E370-4683-83E4-8A3D063FF791}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TreeView", "SharpTreeView\ICSharpCode.TreeView.csproj", "{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}" @@ -106,7 +106,7 @@ Global {6D3D0F0D-348D-456A-A6ED-E9BD5EFABB6A}.Release|Any CPU.ActiveCfg = Release|x86 EndGlobalSection GlobalSection(NestedProjects) = preSolution - {1D18D788-F7EE-4585-A23B-34DC8EC63CB8} = {1DEB3B4E-03AC-437C-821D-B09FBFCC3E5B} {6D3D0F0D-348D-456A-A6ED-E9BD5EFABB6A} = {1DEB3B4E-03AC-437C-821D-B09FBFCC3E5B} + {1D18D788-F7EE-4585-A23B-34DC8EC63CB8} = {1DEB3B4E-03AC-437C-821D-B09FBFCC3E5B} EndGlobalSection EndGlobal diff --git a/ILSpy/MainWindow.xaml.cs b/ILSpy/MainWindow.xaml.cs index 5a8f98842..25bd47c4f 100644 --- a/ILSpy/MainWindow.xaml.cs +++ b/ILSpy/MainWindow.xaml.cs @@ -310,12 +310,14 @@ namespace ICSharpCode.ILSpy window.Owner = this; if (window.ShowDialog() == true) { - AttachMenuItem.IsEnabled = AttachButton.IsEnabled = false; - ContinueDebuggingMenuItem.IsEnabled = - StepIntoMenuItem.IsEnabled = - StepOverMenuItem.IsEnabled = - StepOutMenuItem.IsEnabled = - DetachMenuItem.IsEnabled = true; + if (DebuggerService.CurrentDebugger.IsDebugging) { + AttachMenuItem.IsEnabled = AttachButton.IsEnabled = false; + ContinueDebuggingMenuItem.IsEnabled = + StepIntoMenuItem.IsEnabled = + StepOverMenuItem.IsEnabled = + StepOutMenuItem.IsEnabled = + DetachMenuItem.IsEnabled = true; + } } } } @@ -471,7 +473,7 @@ namespace ICSharpCode.ILSpy void LanguageComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { - DebuggerService.CurrentDebugger.Language = + DebuggerService.CurrentDebugger.Language = sessionSettings.FilterSettings.Language.Name.StartsWith("IL") ? DecompiledLanguages.IL : DecompiledLanguages.CSharp; } } diff --git a/NRefactory/ICSharpCode.NRefactory/CSharp/Ast/NotImplementedAstVisitor.cs b/NRefactory/ICSharpCode.NRefactory/CSharp/Ast/NotImplementedAstVisitor.cs index be1d11f68..92ac9a64b 100644 --- a/NRefactory/ICSharpCode.NRefactory/CSharp/Ast/NotImplementedAstVisitor.cs +++ b/NRefactory/ICSharpCode.NRefactory/CSharp/Ast/NotImplementedAstVisitor.cs @@ -7,522 +7,522 @@ namespace ICSharpCode.NRefactory.CSharp { public class NotImplementedAstVisitor : IAstVisitor { - public S VisitAnonymousMethodExpression(AnonymousMethodExpression anonymousMethodExpression, T data) + public virtual S VisitAnonymousMethodExpression(AnonymousMethodExpression anonymousMethodExpression, T data) { throw new NotImplementedException(); } - public S VisitArgListExpression(ArgListExpression argListExpression, T data) + public virtual S VisitArgListExpression(ArgListExpression argListExpression, T data) { throw new NotImplementedException(); } - public S VisitArrayCreateExpression(ArrayCreateExpression arrayCreateExpression, T data) + public virtual S VisitArrayCreateExpression(ArrayCreateExpression arrayCreateExpression, T data) { throw new NotImplementedException(); } - public S VisitArrayInitializerExpression(ArrayInitializerExpression arrayInitializerExpression, T data) + public virtual S VisitArrayInitializerExpression(ArrayInitializerExpression arrayInitializerExpression, T data) { throw new NotImplementedException(); } - public S VisitAsExpression(AsExpression asExpression, T data) + public virtual S VisitAsExpression(AsExpression asExpression, T data) { throw new NotImplementedException(); } - public S VisitAssignmentExpression(AssignmentExpression assignmentExpression, T data) + public virtual S VisitAssignmentExpression(AssignmentExpression assignmentExpression, T data) { throw new NotImplementedException(); } - public S VisitBaseReferenceExpression(BaseReferenceExpression baseReferenceExpression, T data) + public virtual S VisitBaseReferenceExpression(BaseReferenceExpression baseReferenceExpression, T data) { throw new NotImplementedException(); } - public S VisitBinaryOperatorExpression(BinaryOperatorExpression binaryOperatorExpression, T data) + public virtual S VisitBinaryOperatorExpression(BinaryOperatorExpression binaryOperatorExpression, T data) { throw new NotImplementedException(); } - public S VisitCastExpression(CastExpression castExpression, T data) + public virtual S VisitCastExpression(CastExpression castExpression, T data) { throw new NotImplementedException(); } - public S VisitCheckedExpression(CheckedExpression checkedExpression, T data) + public virtual S VisitCheckedExpression(CheckedExpression checkedExpression, T data) { throw new NotImplementedException(); } - public S VisitConditionalExpression(ConditionalExpression conditionalExpression, T data) + public virtual S VisitConditionalExpression(ConditionalExpression conditionalExpression, T data) { throw new NotImplementedException(); } - public S VisitDefaultValueExpression(DefaultValueExpression defaultValueExpression, T data) + public virtual S VisitDefaultValueExpression(DefaultValueExpression defaultValueExpression, T data) { throw new NotImplementedException(); } - public S VisitDirectionExpression(DirectionExpression directionExpression, T data) + public virtual S VisitDirectionExpression(DirectionExpression directionExpression, T data) { throw new NotImplementedException(); } - public S VisitIdentifierExpression(IdentifierExpression identifierExpression, T data) + public virtual S VisitIdentifierExpression(IdentifierExpression identifierExpression, T data) { throw new NotImplementedException(); } - public S VisitIndexerExpression(IndexerExpression indexerExpression, T data) + public virtual S VisitIndexerExpression(IndexerExpression indexerExpression, T data) { throw new NotImplementedException(); } - public S VisitInvocationExpression(InvocationExpression invocationExpression, T data) + public virtual S VisitInvocationExpression(InvocationExpression invocationExpression, T data) { throw new NotImplementedException(); } - public S VisitIsExpression(IsExpression isExpression, T data) + public virtual S VisitIsExpression(IsExpression isExpression, T data) { throw new NotImplementedException(); } - public S VisitLambdaExpression(LambdaExpression lambdaExpression, T data) + public virtual S VisitLambdaExpression(LambdaExpression lambdaExpression, T data) { throw new NotImplementedException(); } - public S VisitMemberReferenceExpression(MemberReferenceExpression memberReferenceExpression, T data) + public virtual S VisitMemberReferenceExpression(MemberReferenceExpression memberReferenceExpression, T data) { throw new NotImplementedException(); } - public S VisitNamedArgumentExpression(NamedArgumentExpression namedArgumentExpression, T data) + public virtual S VisitNamedArgumentExpression(NamedArgumentExpression namedArgumentExpression, T data) { throw new NotImplementedException(); } - public S VisitNullReferenceExpression(NullReferenceExpression nullReferenceExpression, T data) + public virtual S VisitNullReferenceExpression(NullReferenceExpression nullReferenceExpression, T data) { throw new NotImplementedException(); } - public S VisitObjectCreateExpression(ObjectCreateExpression objectCreateExpression, T data) + public virtual S VisitObjectCreateExpression(ObjectCreateExpression objectCreateExpression, T data) { throw new NotImplementedException(); } - public S VisitParenthesizedExpression(ParenthesizedExpression parenthesizedExpression, T data) + public virtual S VisitParenthesizedExpression(ParenthesizedExpression parenthesizedExpression, T data) { throw new NotImplementedException(); } - public S VisitPointerReferenceExpression(PointerReferenceExpression pointerReferenceExpression, T data) + public virtual S VisitPointerReferenceExpression(PointerReferenceExpression pointerReferenceExpression, T data) { throw new NotImplementedException(); } - public S VisitPrimitiveExpression(PrimitiveExpression primitiveExpression, T data) + public virtual S VisitPrimitiveExpression(PrimitiveExpression primitiveExpression, T data) { throw new NotImplementedException(); } - public S VisitSizeOfExpression(SizeOfExpression sizeOfExpression, T data) + public virtual S VisitSizeOfExpression(SizeOfExpression sizeOfExpression, T data) { throw new NotImplementedException(); } - public S VisitStackAllocExpression(StackAllocExpression stackAllocExpression, T data) + public virtual S VisitStackAllocExpression(StackAllocExpression stackAllocExpression, T data) { throw new NotImplementedException(); } - public S VisitThisReferenceExpression(ThisReferenceExpression thisReferenceExpression, T data) + public virtual S VisitThisReferenceExpression(ThisReferenceExpression thisReferenceExpression, T data) { throw new NotImplementedException(); } - public S VisitTypeOfExpression(TypeOfExpression typeOfExpression, T data) + public virtual S VisitTypeOfExpression(TypeOfExpression typeOfExpression, T data) { throw new NotImplementedException(); } - public S VisitTypeReferenceExpression(TypeReferenceExpression typeReferenceExpression, T data) + public virtual S VisitTypeReferenceExpression(TypeReferenceExpression typeReferenceExpression, T data) { throw new NotImplementedException(); } - public S VisitUnaryOperatorExpression(UnaryOperatorExpression unaryOperatorExpression, T data) + public virtual S VisitUnaryOperatorExpression(UnaryOperatorExpression unaryOperatorExpression, T data) { throw new NotImplementedException(); } - public S VisitUncheckedExpression(UncheckedExpression uncheckedExpression, T data) + public virtual S VisitUncheckedExpression(UncheckedExpression uncheckedExpression, T data) { throw new NotImplementedException(); } - public S VisitQueryExpression(QueryExpression queryExpression, T data) + public virtual S VisitQueryExpression(QueryExpression queryExpression, T data) { throw new NotImplementedException(); } - public S VisitQueryContinuationClause(QueryContinuationClause queryContinuationClause, T data) + public virtual S VisitQueryContinuationClause(QueryContinuationClause queryContinuationClause, T data) { throw new NotImplementedException(); } - public S VisitQueryFromClause(QueryFromClause queryFromClause, T data) + public virtual S VisitQueryFromClause(QueryFromClause queryFromClause, T data) { throw new NotImplementedException(); } - public S VisitQueryLetClause(QueryLetClause queryLetClause, T data) + public virtual S VisitQueryLetClause(QueryLetClause queryLetClause, T data) { throw new NotImplementedException(); } - public S VisitQueryWhereClause(QueryWhereClause queryWhereClause, T data) + public virtual S VisitQueryWhereClause(QueryWhereClause queryWhereClause, T data) { throw new NotImplementedException(); } - public S VisitQueryJoinClause(QueryJoinClause queryJoinClause, T data) + public virtual S VisitQueryJoinClause(QueryJoinClause queryJoinClause, T data) { throw new NotImplementedException(); } - public S VisitQueryOrderClause(QueryOrderClause queryOrderClause, T data) + public virtual S VisitQueryOrderClause(QueryOrderClause queryOrderClause, T data) { throw new NotImplementedException(); } - public S VisitQueryOrdering(QueryOrdering queryOrdering, T data) + public virtual S VisitQueryOrdering(QueryOrdering queryOrdering, T data) { throw new NotImplementedException(); } - public S VisitQuerySelectClause(QuerySelectClause querySelectClause, T data) + public virtual S VisitQuerySelectClause(QuerySelectClause querySelectClause, T data) { throw new NotImplementedException(); } - public S VisitQueryGroupClause(QueryGroupClause queryGroupClause, T data) + public virtual S VisitQueryGroupClause(QueryGroupClause queryGroupClause, T data) { throw new NotImplementedException(); } - public S VisitAttribute(Attribute attribute, T data) + public virtual S VisitAttribute(Attribute attribute, T data) { throw new NotImplementedException(); } - public S VisitAttributeSection(AttributeSection attributeSection, T data) + public virtual S VisitAttributeSection(AttributeSection attributeSection, T data) { throw new NotImplementedException(); } - public S VisitDelegateDeclaration(DelegateDeclaration delegateDeclaration, T data) + public virtual S VisitDelegateDeclaration(DelegateDeclaration delegateDeclaration, T data) { throw new NotImplementedException(); } - public S VisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration, T data) + public virtual S VisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration, T data) { throw new NotImplementedException(); } - public S VisitTypeDeclaration(TypeDeclaration typeDeclaration, T data) + public virtual S VisitTypeDeclaration(TypeDeclaration typeDeclaration, T data) { throw new NotImplementedException(); } - public S VisitUsingAliasDeclaration(UsingAliasDeclaration usingAliasDeclaration, T data) + public virtual S VisitUsingAliasDeclaration(UsingAliasDeclaration usingAliasDeclaration, T data) { throw new NotImplementedException(); } - public S VisitUsingDeclaration(UsingDeclaration usingDeclaration, T data) + public virtual S VisitUsingDeclaration(UsingDeclaration usingDeclaration, T data) { throw new NotImplementedException(); } - public S VisitBlockStatement(BlockStatement blockStatement, T data) + public virtual S VisitBlockStatement(BlockStatement blockStatement, T data) { throw new NotImplementedException(); } - public S VisitBreakStatement(BreakStatement breakStatement, T data) + public virtual S VisitBreakStatement(BreakStatement breakStatement, T data) { throw new NotImplementedException(); } - public S VisitCheckedStatement(CheckedStatement checkedStatement, T data) + public virtual S VisitCheckedStatement(CheckedStatement checkedStatement, T data) { throw new NotImplementedException(); } - public S VisitContinueStatement(ContinueStatement continueStatement, T data) + public virtual S VisitContinueStatement(ContinueStatement continueStatement, T data) { throw new NotImplementedException(); } - public S VisitDoWhileStatement(DoWhileStatement doWhileStatement, T data) + public virtual S VisitDoWhileStatement(DoWhileStatement doWhileStatement, T data) { throw new NotImplementedException(); } - public S VisitEmptyStatement(EmptyStatement emptyStatement, T data) + public virtual S VisitEmptyStatement(EmptyStatement emptyStatement, T data) { throw new NotImplementedException(); } - public S VisitExpressionStatement(ExpressionStatement expressionStatement, T data) + public virtual S VisitExpressionStatement(ExpressionStatement expressionStatement, T data) { throw new NotImplementedException(); } - public S VisitFixedStatement(FixedStatement fixedStatement, T data) + public virtual S VisitFixedStatement(FixedStatement fixedStatement, T data) { throw new NotImplementedException(); } - public S VisitForeachStatement(ForeachStatement foreachStatement, T data) + public virtual S VisitForeachStatement(ForeachStatement foreachStatement, T data) { throw new NotImplementedException(); } - public S VisitForStatement(ForStatement forStatement, T data) + public virtual S VisitForStatement(ForStatement forStatement, T data) { throw new NotImplementedException(); } - public S VisitGotoCaseStatement(GotoCaseStatement gotoCaseStatement, T data) + public virtual S VisitGotoCaseStatement(GotoCaseStatement gotoCaseStatement, T data) { throw new NotImplementedException(); } - public S VisitGotoDefaultStatement(GotoDefaultStatement gotoDefaultStatement, T data) + public virtual S VisitGotoDefaultStatement(GotoDefaultStatement gotoDefaultStatement, T data) { throw new NotImplementedException(); } - public S VisitGotoStatement(GotoStatement gotoStatement, T data) + public virtual S VisitGotoStatement(GotoStatement gotoStatement, T data) { throw new NotImplementedException(); } - public S VisitIfElseStatement(IfElseStatement ifElseStatement, T data) + public virtual S VisitIfElseStatement(IfElseStatement ifElseStatement, T data) { throw new NotImplementedException(); } - public S VisitLabelStatement(LabelStatement labelStatement, T data) + public virtual S VisitLabelStatement(LabelStatement labelStatement, T data) { throw new NotImplementedException(); } - public S VisitLockStatement(LockStatement lockStatement, T data) + public virtual S VisitLockStatement(LockStatement lockStatement, T data) { throw new NotImplementedException(); } - public S VisitReturnStatement(ReturnStatement returnStatement, T data) + public virtual S VisitReturnStatement(ReturnStatement returnStatement, T data) { throw new NotImplementedException(); } - public S VisitSwitchStatement(SwitchStatement switchStatement, T data) + public virtual S VisitSwitchStatement(SwitchStatement switchStatement, T data) { throw new NotImplementedException(); } - public S VisitSwitchSection(SwitchSection switchSection, T data) + public virtual S VisitSwitchSection(SwitchSection switchSection, T data) { throw new NotImplementedException(); } - public S VisitCaseLabel(CaseLabel caseLabel, T data) + public virtual S VisitCaseLabel(CaseLabel caseLabel, T data) { throw new NotImplementedException(); } - public S VisitThrowStatement(ThrowStatement throwStatement, T data) + public virtual S VisitThrowStatement(ThrowStatement throwStatement, T data) { throw new NotImplementedException(); } - public S VisitTryCatchStatement(TryCatchStatement tryCatchStatement, T data) + public virtual S VisitTryCatchStatement(TryCatchStatement tryCatchStatement, T data) { throw new NotImplementedException(); } - public S VisitCatchClause(CatchClause catchClause, T data) + public virtual S VisitCatchClause(CatchClause catchClause, T data) { throw new NotImplementedException(); } - public S VisitUncheckedStatement(UncheckedStatement uncheckedStatement, T data) + public virtual S VisitUncheckedStatement(UncheckedStatement uncheckedStatement, T data) { throw new NotImplementedException(); } - public S VisitUnsafeStatement(UnsafeStatement unsafeStatement, T data) + public virtual S VisitUnsafeStatement(UnsafeStatement unsafeStatement, T data) { throw new NotImplementedException(); } - public S VisitUsingStatement(UsingStatement usingStatement, T data) + public virtual S VisitUsingStatement(UsingStatement usingStatement, T data) { throw new NotImplementedException(); } - public S VisitVariableDeclarationStatement(VariableDeclarationStatement variableDeclarationStatement, T data) + public virtual S VisitVariableDeclarationStatement(VariableDeclarationStatement variableDeclarationStatement, T data) { throw new NotImplementedException(); } - public S VisitWhileStatement(WhileStatement whileStatement, T data) + public virtual S VisitWhileStatement(WhileStatement whileStatement, T data) { throw new NotImplementedException(); } - public S VisitYieldBreakStatement(YieldBreakStatement yieldBreakStatement, T data) + public virtual S VisitYieldBreakStatement(YieldBreakStatement yieldBreakStatement, T data) { throw new NotImplementedException(); } - public S VisitYieldStatement(YieldStatement yieldStatement, T data) + public virtual S VisitYieldStatement(YieldStatement yieldStatement, T data) { throw new NotImplementedException(); } - public S VisitAccessor(Accessor accessor, T data) + public virtual S VisitAccessor(Accessor accessor, T data) { throw new NotImplementedException(); } - public S VisitConstructorDeclaration(ConstructorDeclaration constructorDeclaration, T data) + public virtual S VisitConstructorDeclaration(ConstructorDeclaration constructorDeclaration, T data) { throw new NotImplementedException(); } - public S VisitConstructorInitializer(ConstructorInitializer constructorInitializer, T data) + public virtual S VisitConstructorInitializer(ConstructorInitializer constructorInitializer, T data) { throw new NotImplementedException(); } - public S VisitDestructorDeclaration(DestructorDeclaration destructorDeclaration, T data) + public virtual S VisitDestructorDeclaration(DestructorDeclaration destructorDeclaration, T data) { throw new NotImplementedException(); } - public S VisitEnumMemberDeclaration(EnumMemberDeclaration enumMemberDeclaration, T data) + public virtual S VisitEnumMemberDeclaration(EnumMemberDeclaration enumMemberDeclaration, T data) { throw new NotImplementedException(); } - public S VisitEventDeclaration(EventDeclaration eventDeclaration, T data) + public virtual S VisitEventDeclaration(EventDeclaration eventDeclaration, T data) { throw new NotImplementedException(); } - public S VisitCustomEventDeclaration(CustomEventDeclaration customEventDeclaration, T data) + public virtual S VisitCustomEventDeclaration(CustomEventDeclaration customEventDeclaration, T data) { throw new NotImplementedException(); } - public S VisitFieldDeclaration(FieldDeclaration fieldDeclaration, T data) + public virtual S VisitFieldDeclaration(FieldDeclaration fieldDeclaration, T data) { throw new NotImplementedException(); } - public S VisitIndexerDeclaration(IndexerDeclaration indexerDeclaration, T data) + public virtual S VisitIndexerDeclaration(IndexerDeclaration indexerDeclaration, T data) { throw new NotImplementedException(); } - public S VisitMethodDeclaration(MethodDeclaration methodDeclaration, T data) + public virtual S VisitMethodDeclaration(MethodDeclaration methodDeclaration, T data) { throw new NotImplementedException(); } - public S VisitOperatorDeclaration(OperatorDeclaration operatorDeclaration, T data) + public virtual S VisitOperatorDeclaration(OperatorDeclaration operatorDeclaration, T data) { throw new NotImplementedException(); } - public S VisitParameterDeclaration(ParameterDeclaration parameterDeclaration, T data) + public virtual S VisitParameterDeclaration(ParameterDeclaration parameterDeclaration, T data) { throw new NotImplementedException(); } - public S VisitPropertyDeclaration(PropertyDeclaration propertyDeclaration, T data) + public virtual S VisitPropertyDeclaration(PropertyDeclaration propertyDeclaration, T data) { throw new NotImplementedException(); } - public S VisitVariableInitializer(VariableInitializer variableInitializer, T data) + public virtual S VisitVariableInitializer(VariableInitializer variableInitializer, T data) { throw new NotImplementedException(); } - public S VisitCompilationUnit(CompilationUnit compilationUnit, T data) + public virtual S VisitCompilationUnit(CompilationUnit compilationUnit, T data) { throw new NotImplementedException(); } - public S VisitSimpleType(SimpleType simpleType, T data) + public virtual S VisitSimpleType(SimpleType simpleType, T data) { throw new NotImplementedException(); } - public S VisitMemberType(MemberType memberType, T data) + public virtual S VisitMemberType(MemberType memberType, T data) { throw new NotImplementedException(); } - public S VisitComposedType(ComposedType composedType, T data) + public virtual S VisitComposedType(ComposedType composedType, T data) { throw new NotImplementedException(); } - public S VisitArraySpecifier(ArraySpecifier arraySpecifier, T data) + public virtual S VisitArraySpecifier(ArraySpecifier arraySpecifier, T data) { throw new NotImplementedException(); } - public S VisitPrimitiveType(PrimitiveType primitiveType, T data) + public virtual S VisitPrimitiveType(PrimitiveType primitiveType, T data) { throw new NotImplementedException(); } - public S VisitComment(Comment comment, T data) + public virtual S VisitComment(Comment comment, T data) { throw new NotImplementedException(); } - public S VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration, T data) + public virtual S VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration, T data) { throw new NotImplementedException(); } - public S VisitConstraint(Constraint constraint, T data) + public virtual S VisitConstraint(Constraint constraint, T data) { throw new NotImplementedException(); } - public S VisitCSharpTokenNode(CSharpTokenNode cSharpTokenNode, T data) + public virtual S VisitCSharpTokenNode(CSharpTokenNode cSharpTokenNode, T data) { throw new NotImplementedException(); } - public S VisitIdentifier(Identifier identifier, T data) + public virtual S VisitIdentifier(Identifier identifier, T data) { throw new NotImplementedException(); }