diff --git a/ILSourceParser.xml b/ILSourceParser.xml
index 5c76dbe..ee9bcd3 100644
--- a/ILSourceParser.xml
+++ b/ILSourceParser.xml
@@ -1638,24 +1638,81 @@
+
+
+ Represents an IL .param directive. This directive is used to apply custom
+ attributes to method parameters.
+
+
+
+
+ The one-based index of the parameter where attributes should be applied. If the
+ value of this property is 0, custom attributes will be applied on the method
+ return type instead.
+
+
+
+
+ Descendant custom attributes of this .param directive.
+
+
+
+
+ Represents information about a parameter modifier in IL code. For example,
+ [in], [out], or [opt].
+
+
+
+
+ Represents the type of parameter modifier as .
+
+
+
+
+ Represents declaration of a method parameter in IL code.
+
+
+
+
+ Specifies parameter modifiers of this parameter. For example, [out], [in],
+ and [opt].
+
+
+
+
+ Specifies the marshalling of this parameter, if specified (e.g. the IL marshal()
+ function).
+
+
+
+
+ Specifies the type of this parameter, such as string or int32.
+
+
+
+
+ Specifies the name of this parameter. In IL code, parameter names are optional, so
+ this could have a value of null.
+
+
Represents the IL .permissionset directive syntax.
@@ -1684,24 +1741,249 @@
The byte array that contains the bytes of the permission set.
+
+
+ Represents the syntax node that specifies the entry point passed to the pinvokeimpl()
+ function. Used by the syntax node .
+
+
+
+
+ The name of the entry point.
+
+
+
+
+ Represents an IL pinvokeimpl() function, typically declared in
+ method flags before the method return type and name.
+
+
+
+
+ Represents the DLL name. In this example:
+
+
+ pinvokeimpl("User32.dll" as "SampleEntryPoint" nomangle lasterr unicode cdecl)
+
+
+ .. the value of this property will be "User32.dll".
+
+
+
+
+ Represents the entry point of the DLL. In this example:
+
+
+ pinvokeimpl("User32.dll" as "SampleEntryPoint" nomangle lasterr unicode cdecl)
+
+
+ .. the value of this property will be "SampleEntryPoint".
+
+
+
+
+ Represents the character set. In this example:
+
+
+ pinvokeimpl("User32.dll" as "SampleEntryPoint" nomangle lasterr unicode cdecl)
+
+
+ .. the value of this property will be due to the unicode flag specified in the pinvokeimpl function.
+
+
+ Remark: If the character set is not specified, the value of this property
+ defaults to .
+
+
+
+
+ Represents the character set as a string. In this example:
+
+
+ pinvokeimpl("User32.dll" as "SampleEntryPoint" nomangle lasterr unicode cdecl)
+
+
+ .. the value of this property will be "unicode".
+
+
+ Remark: To get based
+ on the character set passed to the pinvokeimpl function, use the
+ property instead.
+
+
+
+
+ Specifies whether the last error should be set. In this example:
+
+
+ pinvokeimpl("User32.dll" as "SampleEntryPoint" nomangle lasterr unicode cdecl)
+
+
+ .. the value of this property will be . If we omit the
+ lasterr flag in the pinvokeimpl function, the value of this property will
+ be .
+
+
+
+
+ Specifies the calling convention. In this example:
+
+
+ pinvokeimpl("User32.dll" as "SampleEntryPoint" nomangle lasterr unicode cdecl)
+
+
+ .. the value of this property will be because
+ of the cdecl flag in the pinvokeimpl() function.
+
+
+
+
+ Represents the calling convention as a string. In this example:
+
+
+ pinvokeimpl("User32.dll" as "SampleEntryPoint" nomangle lasterr unicode cdecl)
+
+
+ .. the value of this property will be "cdecl".
+
+
+ Remark: To get based
+ on the calling convention passed to the pinvokeimpl function, use the
+ property instead.
+
+
+
+
+ Specifies whether exact spelling is specified. In this example:
+
+
+ pinvokeimpl("User32.dll" as "SampleEntryPoint" nomangle lasterr unicode cdecl)
+
+
+ .. the value of this property will be because of the nomangle
+ flag. If we omit this flag, the value of this property will be .
+
+
+
+
+ Represents a syntax node for predefined types. Those include:
+
+ - int8
+ - int16
+ - int32
+ - int64
+ - uint8
+ - uint16
+ - uint32
+ - uint64
+ - float32
+ - float64
+
+ This syntax node also specifies values passed to these types as functions. For
+ example, int32(48) is perfectly valid in IL code and such will result in
+ , which will also specify 48 passed to the
+ int32 function.
+
+
+
+
+ Represents the name of the type as a string. In this example: int32(48),
+ the value of this property will be 48 as a string.
+
+
+
+
+ Represents the predefined type as .
+
+
+
+
+ Represents the value passed to the function of the predefined type. For example,
+ int32(48) is valid in IL code, and parsing that will result in this property
+ having a value of 48. However, if it is just the int32 keyword and not a function,
+ this property will have a value of .
+
+
+
+
+ Represents a declaration of a property, e.g. the IL .property directive.
+
+
+
+
+ The type of the property, for example, a string or int32.
+
+
+
+
+ Is this property static? For example, has the instance keyword:
+
+ // vvvvvvvv <--------- HERE
+ .property instance string MyProperty()
+ {
+ }
+
+
+
+
+
+ Represents the name of the property.
+
+
+
+
+ Specifies the information about the .get accessor defined in this property. If
+ this accessor is omitted, the value of this property is
+ .
+
+
+
+
+ Specifies the information about the .set accessor defined in this property. If
+ this accessor is omitted, the value of this property is
+ .
+
+
+
+
+ Represents custom attributes defined in this property. In this example:
+
+
+ .property instance string MyProperty()
+ {
+ .custom instance void [MyAssembly]MyNamespace.MyAttribute::.ctor() = (
+ 01 00 00 00
+ )
+ .custom instance void [System.Runtime]System.Runtime.CompilerServices.NullableAttribute::.ctor() = (
+ 01 00 00 00
+ )
+ .get instance string get_MyProperty()
+ .set instance void set_MyProperty(string)
+ }
+
+
+ .. the first two .custom directives inside the property will be defined
+ in this property.
+
+
Represents the IL .removeon accessor, similar to C#'s event remove accessor.
@@ -1726,30 +2008,163 @@
the implementation of the accessor.
+
+
+ Represents an IL .size directive.
+
+
+
+
+ The value of the directive as a string, which specifies the size passed to the directive.
+
+
+
+
+ Represents an IL .stackreserve directive.
+
+
+
+
+ The number that specifies the stack reserve.
+
+
+
+
+ Represents an IL string literal, such as "this!\n".
+
+
+
+
+ Represents the value of the string literal, including unescaped escape characters.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Represents either the string keyword or the string literal.
+
+
+
+
+ Represents the value of the string literal, if specified.
+
+
+
+
+ Is the string type just the string keyword and not the string literal?
+
+
+
+
+ Represents an IL .subsystem directive.
+
+
+
+
+ A number that specifies the subsystem.
+
+
+
+
+ Represents parameter of the IL switch instruction.
+
+
+
+
+ A collection of labels to jump to based on the last number from stack.
+
+
+
+
+ Represents a base class for each syntax node defined.
+
+
+
+
+ Represents leading trivia - e.g. syntax trivias appearing before the
+ syntax node.
+
+
+
+
+ Represents trailing trivia - e.g. syntax trivias appearing after the
+ syntax node.
+
+
Represents an IL .try block.
@@ -1760,15 +2175,31 @@
Descendant nodes of the block.
-
-
+
+
+ Represents an IL .try followed by finally block.
+
-
-
+
+
+ The information about the .try block.
+
+
+
+
+ The information about the finally block.
+
+
+
+
+ Represents a base class for most types.
+
- This node is associated with the following kinds:
+ Represents an IL directive that represents the reference to an existing type,
+ such as [System.Runtime]System.Console. This node is associated with the
+ following types:
-
@@ -1779,24 +2210,108 @@
+
+
+ Represents a base node for every other syntax node that specifies a type. This syntax
+ node is associated with the following nodes:
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+
+
+ Represents invocation of an IL unmanaged function pointer.
+
+
+
+
+ The return type of the unmanaged function pointer.
+
+
+
+
+ Parameters passed to the unmanaged function pointer.
+
+
+
+
+ The calling convention of the unmanaged function pointer being invoked.
+
+
+
+
+ Represents an IL .ver directive. This directive specifies the version of
+ the assembly, similar to .
+
+
+
+
+ Specifies the major version. In this example: .ver 1 : 2 : 3 : 4, 1 is the major version.
+
+
+
+
+ Specifies the minor version. In this example: .ver 1 : 2 : 3 : 4, 2 is the minor version.
+
+
+
+
+ Specifies the build version. In this example: .ver 1 : 2 : 3 : 4, 3 is the build version.
+
+
+
+
+ Specifies the revision. In this example: .ver 1 : 2 : 3 : 4, 4 is the revision.
+
+
+
+
+ Represents an IL .vtentry directive.
+
+
+
+
+ The entry number. In this example: .vtentry 1 : 2, 1 is the entry number.
+
+
+
+
+ The slot number. In this example: .vtentry 1 : 2, 2 is the slot number.
+
+
Represents a single extension method that provides the method
@@ -1822,6 +2337,18 @@
The input type of marshal to process.
An output marshal.
+
+
+ Represents a single extension that provides the method to .
+
+
+
+
+ Converts values of the .ver directive into .
+
+ The information about the .ver IL directive.
+ A new instance of .
+
A bunch of extension methods that retrieve names of assemblies from
@@ -1938,6 +2465,19 @@
The input boolean literal.
A boolean from the boolean literal.
+
+
+ Represents an extension that provides the method to the
+ syntax node .
+
+
+
+
+ Returns the full name of the given type reference.
+
+ The syntax node that contains the type reference.
+ Full name of the type being referenced.
+
A bunch of extension methods that return a byte array or enumerable