// ----------------------------------------------------------------------------
// <auto-generated>
// This is autogenerated code by CppSharp.
// Do not edit this file or all your changes will be lost after re-generation.
// </auto-generated>
// ----------------------------------------------------------------------------
#pragma once

#include "CppSharp.h"
#include <Expr.h>
#include "Sources.h"
#include "Stmt.h"

namespace CppSharp
{
    namespace Parser
    {
        ref class SourceRange;
        namespace AST
        {
            enum class BinaryOperatorKind;
            enum class CastKind;
            enum class ObjCBridgeCastKind;
            enum class OverloadedOperatorKind;
            enum class StmtClass;
            enum class UnaryExprOrTypeTrait;
            enum class UnaryOperatorKind;
            ref class AbstractConditionalOperator;
            ref class AddrLabelExpr;
            ref class ArrayInitIndexExpr;
            ref class ArrayInitLoopExpr;
            ref class ArraySubscriptExpr;
            ref class ArrayTypeTraitExpr;
            ref class AsTypeExpr;
            ref class AtomicExpr;
            ref class BinaryConditionalOperator;
            ref class BinaryOperator;
            ref class BlockExpr;
            ref class CStyleCastExpr;
            ref class CUDAKernelCallExpr;
            ref class CXXBindTemporaryExpr;
            ref class CXXBoolLiteralExpr;
            ref class CXXConstCastExpr;
            ref class CXXConstructExpr;
            ref class CXXDefaultArgExpr;
            ref class CXXDefaultInitExpr;
            ref class CXXDeleteExpr;
            ref class CXXDependentScopeMemberExpr;
            ref class CXXDynamicCastExpr;
            ref class CXXFoldExpr;
            ref class CXXFunctionalCastExpr;
            ref class CXXInheritedCtorInitExpr;
            ref class CXXMemberCallExpr;
            ref class CXXNamedCastExpr;
            ref class CXXNewExpr;
            ref class CXXNoexceptExpr;
            ref class CXXNullPtrLiteralExpr;
            ref class CXXOperatorCallExpr;
            ref class CXXPseudoDestructorExpr;
            ref class CXXReinterpretCastExpr;
            ref class CXXScalarValueInitExpr;
            ref class CXXStaticCastExpr;
            ref class CXXStdInitializerListExpr;
            ref class CXXTemporaryObjectExpr;
            ref class CXXThisExpr;
            ref class CXXThrowExpr;
            ref class CXXTypeidExpr;
            ref class CXXUnresolvedConstructExpr;
            ref class CXXUuidofExpr;
            ref class CallExpr;
            ref class CastExpr;
            ref class CharacterLiteral;
            ref class ChooseExpr;
            ref class CoawaitExpr;
            ref class CompoundAssignOperator;
            ref class CompoundLiteralExpr;
            ref class CompoundStmt;
            ref class ConditionalOperator;
            ref class ConstantExpr;
            ref class ConvertVectorExpr;
            ref class CoroutineSuspendExpr;
            ref class CoyieldExpr;
            ref class DeclRefExpr;
            ref class Declaration;
            ref class DependentCoawaitExpr;
            ref class DependentScopeDeclRefExpr;
            ref class DesignatedInitExpr;
            ref class DesignatedInitUpdateExpr;
            ref class ExplicitCastExpr;
            ref class Expr;
            ref class ExprWithCleanups;
            ref class ExpressionTraitExpr;
            ref class ExtVectorElementExpr;
            ref class Field;
            ref class FixedPointLiteral;
            ref class FloatingLiteral;
            ref class FullExpr;
            ref class Function;
            ref class FunctionParmPackExpr;
            ref class GNUNullExpr;
            ref class GenericSelectionExpr;
            ref class ImaginaryLiteral;
            ref class ImplicitCastExpr;
            ref class ImplicitValueInitExpr;
            ref class InitListExpr;
            ref class IntegerLiteral;
            ref class LambdaExpr;
            ref class MSPropertyRefExpr;
            ref class MSPropertySubscriptExpr;
            ref class MaterializeTemporaryExpr;
            ref class MemberExpr;
            ref class Method;
            ref class NoInitExpr;
            ref class OffsetOfExpr;
            ref class OpaqueValueExpr;
            ref class OverloadExpr;
            ref class PackExpansionExpr;
            ref class ParenExpr;
            ref class ParenListExpr;
            ref class PredefinedExpr;
            ref class PseudoObjectExpr;
            ref class QualifiedType;
            ref class ShuffleVectorExpr;
            ref class SizeOfPackExpr;
            ref class StmtExpr;
            ref class StringLiteral;
            ref class SubstNonTypeTemplateParmExpr;
            ref class SubstNonTypeTemplateParmPackExpr;
            ref class TemplateArgument;
            ref class TypeTraitExpr;
            ref class TypoExpr;
            ref class UnaryExprOrTypeTraitExpr;
            ref class UnaryOperator;
            ref class UnresolvedLookupExpr;
            ref class UnresolvedMemberExpr;
            ref class UserDefinedLiteral;
            ref class VAArgExpr;
        }
    }
}

namespace CppSharp
{
    namespace Parser
    {
        namespace AST
        {
            public enum class CastKind
            {
                Dependent = 0,
                BitCast = 1,
                LValueBitCast = 2,
                LValueToRValue = 3,
                NoOp = 4,
                BaseToDerived = 5,
                DerivedToBase = 6,
                UncheckedDerivedToBase = 7,
                Dynamic = 8,
                ToUnion = 9,
                ArrayToPointerDecay = 10,
                FunctionToPointerDecay = 11,
                NullToPointer = 12,
                NullToMemberPointer = 13,
                BaseToDerivedMemberPointer = 14,
                DerivedToBaseMemberPointer = 15,
                MemberPointerToBoolean = 16,
                ReinterpretMemberPointer = 17,
                UserDefinedConversion = 18,
                ConstructorConversion = 19,
                IntegralToPointer = 20,
                PointerToIntegral = 21,
                PointerToBoolean = 22,
                ToVoid = 23,
                VectorSplat = 24,
                IntegralCast = 25,
                IntegralToBoolean = 26,
                IntegralToFloating = 27,
                FixedPointCast = 28,
                FixedPointToBoolean = 29,
                FloatingToIntegral = 30,
                FloatingToBoolean = 31,
                BooleanToSignedIntegral = 32,
                FloatingCast = 33,
                CPointerToObjCPointerCast = 34,
                BlockPointerToObjCPointerCast = 35,
                AnyPointerToBlockPointerCast = 36,
                ObjCObjectLValueCast = 37,
                FloatingRealToComplex = 38,
                FloatingComplexToReal = 39,
                FloatingComplexToBoolean = 40,
                FloatingComplexCast = 41,
                FloatingComplexToIntegralComplex = 42,
                IntegralRealToComplex = 43,
                IntegralComplexToReal = 44,
                IntegralComplexToBoolean = 45,
                IntegralComplexCast = 46,
                IntegralComplexToFloatingComplex = 47,
                ARCProduceObject = 48,
                ARCConsumeObject = 49,
                ARCReclaimReturnedObject = 50,
                ARCExtendBlockObject = 51,
                AtomicToNonAtomic = 52,
                NonAtomicToAtomic = 53,
                CopyAndAutoreleaseBlockObject = 54,
                BuiltinFnToFnPtr = 55,
                ZeroToOCLOpaqueType = 56,
                AddressSpaceConversion = 57,
                IntToOCLSampler = 58
            };

            public enum class BinaryOperatorKind
            {
                PtrMemD = 0,
                PtrMemI = 1,
                Mul = 2,
                Div = 3,
                Rem = 4,
                Add = 5,
                Sub = 6,
                Shl = 7,
                Shr = 8,
                Cmp = 9,
                LT = 10,
                GT = 11,
                LE = 12,
                GE = 13,
                EQ = 14,
                NE = 15,
                And = 16,
                Xor = 17,
                Or = 18,
                LAnd = 19,
                LOr = 20,
                Assign = 21,
                MulAssign = 22,
                DivAssign = 23,
                RemAssign = 24,
                AddAssign = 25,
                SubAssign = 26,
                ShlAssign = 27,
                ShrAssign = 28,
                AndAssign = 29,
                XorAssign = 30,
                OrAssign = 31,
                Comma = 32
            };

            public enum class UnaryOperatorKind
            {
                PostInc = 0,
                PostDec = 1,
                PreInc = 2,
                PreDec = 3,
                AddrOf = 4,
                Deref = 5,
                Plus = 6,
                Minus = 7,
                Not = 8,
                LNot = 9,
                Real = 10,
                Imag = 11,
                Extension = 12,
                Coawait = 13
            };

            public enum class ObjCBridgeCastKind
            {
                Bridge = 0,
                BridgeTransfer = 1,
                BridgeRetained = 2
            };

            public enum class OverloadedOperatorKind
            {
                None = 0,
                New = 1,
                Delete = 2,
                ArrayNew = 3,
                ArrayDelete = 4,
                Plus = 5,
                Minus = 6,
                Star = 7,
                Slash = 8,
                Percent = 9,
                Caret = 10,
                Amp = 11,
                Pipe = 12,
                Tilde = 13,
                Exclaim = 14,
                Equal = 15,
                Less = 16,
                Greater = 17,
                PlusEqual = 18,
                MinusEqual = 19,
                StarEqual = 20,
                SlashEqual = 21,
                PercentEqual = 22,
                CaretEqual = 23,
                AmpEqual = 24,
                PipeEqual = 25,
                LessLess = 26,
                GreaterGreater = 27,
                LessLessEqual = 28,
                GreaterGreaterEqual = 29,
                EqualEqual = 30,
                ExclaimEqual = 31,
                LessEqual = 32,
                GreaterEqual = 33,
                Spaceship = 34,
                AmpAmp = 35,
                PipePipe = 36,
                PlusPlus = 37,
                MinusMinus = 38,
                Comma = 39,
                ArrowStar = 40,
                Arrow = 41,
                Call = 42,
                Subscript = 43,
                Conditional = 44,
                Coawait = 45
            };

            public enum class UnaryExprOrTypeTrait
            {
                SizeOf = 0,
                AlignOf = 1,
                VecStep = 2,
                OpenMPRequiredSimdAlign = 3,
                PreferredAlignOf = 4
            };

            public ref class Expr : CppSharp::Parser::AST::Stmt
            {
            public:

                enum class LValueClassification
                {
                    Valid = 0,
                    NotObjectType = 1,
                    IncompleteVoidType = 2,
                    DuplicateVectorComponents = 3,
                    InvalidExpression = 4,
                    InvalidMessageExpression = 5,
                    MemberFunction = 6,
                    SubObjCPropertySetting = 7,
                    ClassTemporary = 8,
                    ArrayTemporary = 9
                };

                enum class IsModifiableLvalueResult
                {
                    Valid = 0,
                    NotObjectType = 1,
                    IncompleteVoidType = 2,
                    DuplicateVectorComponents = 3,
                    InvalidExpression = 4,
                    LValueCast = 5,
                    IncompleteType = 6,
                    ConstQualified = 7,
                    ConstQualifiedField = 8,
                    ConstAddrSpace = 9,
                    ArrayType = 10,
                    NoSetterProperty = 11,
                    MemberFunction = 12,
                    SubObjCPropertySetting = 13,
                    InvalidMessageExpression = 14,
                    ClassTemporary = 15,
                    ArrayTemporary = 16
                };

                enum class SideEffectsKind
                {
                    NoSideEffects = 0,
                    AllowUndefinedBehavior = 1,
                    AllowSideEffects = 2
                };

                enum class ConstExprUsage
                {
                    EvaluateForCodeGen = 0,
                    EvaluateForMangling = 1
                };

                enum class NullPointerConstantKind
                {
                    NotNull = 0,
                    ZeroExpression = 1,
                    ZeroLiteral = 2,
                    CXX11_nullptr = 3,
                    GNUNull = 4
                };

                enum class NullPointerConstantValueDependence
                {
                    NeverValueDependent = 0,
                    ValueDependentIsNull = 1,
                    ValueDependentIsNotNull = 2
                };

                ref class Classification : ICppInstance
                {
                public:

                    enum class Kinds
                    {
                        LValue = 0,
                        XValue = 1,
                        Function = 2,
                        Void = 3,
                        AddressableVoid = 4,
                        DuplicateVectorComponents = 5,
                        MemberFunction = 6,
                        SubObjCPropertySetting = 7,
                        ClassTemporary = 8,
                        ArrayTemporary = 9,
                        ObjCMessageRValue = 10,
                        PRValue = 11
                    };

                    enum class ModifiableType
                    {
                        Untested = 0,
                        Modifiable = 1,
                        RValue = 2,
                        Function = 3,
                        LValueCast = 4,
                        NoSetterProperty = 5,
                        ConstQualified = 6,
                        ConstQualifiedField = 7,
                        ConstAddrSpace = 8,
                        ArrayType = 9,
                        IncompleteType = 10
                    };

                    property ::CppSharp::CppParser::AST::Expr::Classification* NativePtr;
                    property System::IntPtr __Instance
                    {
                        virtual System::IntPtr get();
                        virtual void set(System::IntPtr instance);
                    }

                    Classification(::CppSharp::CppParser::AST::Expr::Classification* native);
                    Classification(::CppSharp::CppParser::AST::Expr::Classification* native, bool ownNativeInstance);
                    static Classification^ __CreateInstance(::System::IntPtr native);
                    static Classification^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                    Classification();

                    Classification(CppSharp::Parser::AST::Expr::Classification^ _0);

                    ~Classification();

                    property CppSharp::Parser::AST::Expr::Classification::Kinds Kind
                    {
                        CppSharp::Parser::AST::Expr::Classification::Kinds get();
                        void set(CppSharp::Parser::AST::Expr::Classification::Kinds);
                    }

                    property CppSharp::Parser::AST::Expr::Classification::ModifiableType Modifiable
                    {
                        CppSharp::Parser::AST::Expr::Classification::ModifiableType get();
                        void set(CppSharp::Parser::AST::Expr::Classification::ModifiableType);
                    }

                    property bool IsLValue
                    {
                        bool get();
                        void set(bool);
                    }

                    property bool IsXValue
                    {
                        bool get();
                        void set(bool);
                    }

                    property bool IsGLValue
                    {
                        bool get();
                        void set(bool);
                    }

                    property bool IsPRValue
                    {
                        bool get();
                        void set(bool);
                    }

                    property bool IsRValue
                    {
                        bool get();
                        void set(bool);
                    }

                    property bool IsModifiable
                    {
                        bool get();
                        void set(bool);
                    }

                protected:
                    bool __ownsNativeInstance;
                };

                Expr(::CppSharp::CppParser::AST::Expr* native);
                Expr(::CppSharp::CppParser::AST::Expr* native, bool ownNativeInstance);
                static Expr^ __CreateInstance(::System::IntPtr native);
                static Expr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                Expr();

                Expr(CppSharp::Parser::AST::StmtClass klass);

                Expr(CppSharp::Parser::AST::Expr^ _0);

                ~Expr();

                property CppSharp::Parser::AST::QualifiedType^ Type
                {
                    CppSharp::Parser::AST::QualifiedType^ get();
                    void set(CppSharp::Parser::AST::QualifiedType^);
                }

                property bool ValueDependent
                {
                    bool get();
                    void set(bool);
                }

                property bool TypeDependent
                {
                    bool get();
                    void set(bool);
                }

                property bool InstantiationDependent
                {
                    bool get();
                    void set(bool);
                }

                property bool ContainsUnexpandedParameterPack
                {
                    bool get();
                    void set(bool);
                }

                property CppSharp::Parser::SourceLocation ExprLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property bool IsLValue
                {
                    bool get();
                    void set(bool);
                }

                property bool IsRValue
                {
                    bool get();
                    void set(bool);
                }

                property bool IsXValue
                {
                    bool get();
                    void set(bool);
                }

                property bool IsGLValue
                {
                    bool get();
                    void set(bool);
                }

                property bool IsOrdinaryOrBitFieldObject
                {
                    bool get();
                    void set(bool);
                }

                property CppSharp::Parser::AST::Field^ SourceBitField
                {
                    CppSharp::Parser::AST::Field^ get();
                    void set(CppSharp::Parser::AST::Field^);
                }

                property CppSharp::Parser::AST::Declaration^ ReferencedDeclOfCallee
                {
                    CppSharp::Parser::AST::Declaration^ get();
                    void set(CppSharp::Parser::AST::Declaration^);
                }

                property bool HasPlaceholderType
                {
                    bool get();
                    void set(bool);
                }

                static operator CppSharp::Parser::AST::Expr^(CppSharp::Parser::AST::StmtClass klass);
            };

            public ref class FullExpr : CppSharp::Parser::AST::Expr
            {
            public:

                FullExpr(::CppSharp::CppParser::AST::FullExpr* native);
                FullExpr(::CppSharp::CppParser::AST::FullExpr* native, bool ownNativeInstance);
                static FullExpr^ __CreateInstance(::System::IntPtr native);
                static FullExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                FullExpr();

                FullExpr(CppSharp::Parser::AST::StmtClass klass);

                FullExpr(CppSharp::Parser::AST::FullExpr^ _0);

                ~FullExpr();

                property CppSharp::Parser::AST::Expr^ SubExpr
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                static operator CppSharp::Parser::AST::FullExpr^(CppSharp::Parser::AST::StmtClass klass);
            };

            public ref class ConstantExpr : CppSharp::Parser::AST::FullExpr
            {
            public:

                ConstantExpr(::CppSharp::CppParser::AST::ConstantExpr* native);
                ConstantExpr(::CppSharp::CppParser::AST::ConstantExpr* native, bool ownNativeInstance);
                static ConstantExpr^ __CreateInstance(::System::IntPtr native);
                static ConstantExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                ConstantExpr();

                ConstantExpr(CppSharp::Parser::AST::ConstantExpr^ _0);

                ~ConstantExpr();
            };

            public ref class OpaqueValueExpr : CppSharp::Parser::AST::Expr
            {
            public:

                OpaqueValueExpr(::CppSharp::CppParser::AST::OpaqueValueExpr* native);
                OpaqueValueExpr(::CppSharp::CppParser::AST::OpaqueValueExpr* native, bool ownNativeInstance);
                static OpaqueValueExpr^ __CreateInstance(::System::IntPtr native);
                static OpaqueValueExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                OpaqueValueExpr();

                OpaqueValueExpr(CppSharp::Parser::AST::OpaqueValueExpr^ _0);

                ~OpaqueValueExpr();

                property bool IsUnique
                {
                    bool get();
                    void set(bool);
                }

                property CppSharp::Parser::SourceLocation Location
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::AST::Expr^ SourceExpr
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }
            };

            public ref class DeclRefExpr : CppSharp::Parser::AST::Expr
            {
            public:

                DeclRefExpr(::CppSharp::CppParser::AST::DeclRefExpr* native);
                DeclRefExpr(::CppSharp::CppParser::AST::DeclRefExpr* native, bool ownNativeInstance);
                static DeclRefExpr^ __CreateInstance(::System::IntPtr native);
                static DeclRefExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                DeclRefExpr();

                DeclRefExpr(CppSharp::Parser::AST::DeclRefExpr^ _0);

                ~DeclRefExpr();

                property CppSharp::Parser::SourceLocation Location
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property bool HadMultipleCandidates
                {
                    bool get();
                    void set(bool);
                }

                property bool HasQualifier
                {
                    bool get();
                    void set(bool);
                }

                property CppSharp::Parser::AST::Declaration^ FoundDecl
                {
                    CppSharp::Parser::AST::Declaration^ get();
                    void set(CppSharp::Parser::AST::Declaration^);
                }

                property bool HasTemplateKWAndArgsInfo
                {
                    bool get();
                    void set(bool);
                }

                property CppSharp::Parser::SourceLocation TemplateKeywordLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation LAngleLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation RAngleLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property bool HasTemplateKeyword
                {
                    bool get();
                    void set(bool);
                }

                property bool HasExplicitTemplateArgs
                {
                    bool get();
                    void set(bool);
                }

                property unsigned int NumTemplateArgs
                {
                    unsigned int get();
                    void set(unsigned int);
                }

                property bool RefersToEnclosingVariableOrCapture
                {
                    bool get();
                    void set(bool);
                }
            };

            public ref class IntegerLiteral : CppSharp::Parser::AST::Expr
            {
            public:

                IntegerLiteral(::CppSharp::CppParser::AST::IntegerLiteral* native);
                IntegerLiteral(::CppSharp::CppParser::AST::IntegerLiteral* native, bool ownNativeInstance);
                static IntegerLiteral^ __CreateInstance(::System::IntPtr native);
                static IntegerLiteral^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                IntegerLiteral();

                IntegerLiteral(CppSharp::Parser::AST::IntegerLiteral^ _0);

                ~IntegerLiteral();

                property CppSharp::Parser::SourceLocation Location
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property unsigned long long Value
                {
                    unsigned long long get();
                    void set(unsigned long long);
                }
            };

            public ref class FixedPointLiteral : CppSharp::Parser::AST::Expr
            {
            public:

                FixedPointLiteral(::CppSharp::CppParser::AST::FixedPointLiteral* native);
                FixedPointLiteral(::CppSharp::CppParser::AST::FixedPointLiteral* native, bool ownNativeInstance);
                static FixedPointLiteral^ __CreateInstance(::System::IntPtr native);
                static FixedPointLiteral^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                FixedPointLiteral();

                FixedPointLiteral(CppSharp::Parser::AST::FixedPointLiteral^ _0);

                ~FixedPointLiteral();

                property CppSharp::Parser::SourceLocation Location
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property unsigned long long Value
                {
                    unsigned long long get();
                    void set(unsigned long long);
                }
            };

            public ref class CharacterLiteral : CppSharp::Parser::AST::Expr
            {
            public:

                enum class CharacterKind
                {
                    Ascii = 0,
                    Wide = 1,
                    UTF8 = 2,
                    UTF16 = 3,
                    UTF32 = 4
                };

                CharacterLiteral(::CppSharp::CppParser::AST::CharacterLiteral* native);
                CharacterLiteral(::CppSharp::CppParser::AST::CharacterLiteral* native, bool ownNativeInstance);
                static CharacterLiteral^ __CreateInstance(::System::IntPtr native);
                static CharacterLiteral^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CharacterLiteral();

                CharacterLiteral(CppSharp::Parser::AST::CharacterLiteral^ _0);

                ~CharacterLiteral();

                property CppSharp::Parser::SourceLocation Location
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::AST::CharacterLiteral::CharacterKind Kind
                {
                    CppSharp::Parser::AST::CharacterLiteral::CharacterKind get();
                    void set(CppSharp::Parser::AST::CharacterLiteral::CharacterKind);
                }

                property unsigned int Value
                {
                    unsigned int get();
                    void set(unsigned int);
                }
            };

            public ref class FloatingLiteral : CppSharp::Parser::AST::Expr
            {
            public:

                FloatingLiteral(::CppSharp::CppParser::AST::FloatingLiteral* native);
                FloatingLiteral(::CppSharp::CppParser::AST::FloatingLiteral* native, bool ownNativeInstance);
                static FloatingLiteral^ __CreateInstance(::System::IntPtr native);
                static FloatingLiteral^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                FloatingLiteral();

                FloatingLiteral(CppSharp::Parser::AST::FloatingLiteral^ _0);

                ~FloatingLiteral();

                property bool Exact
                {
                    bool get();
                    void set(bool);
                }

                property CppSharp::Parser::SourceLocation Location
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property double ValueAsApproximateDouble
                {
                    double get();
                    void set(double);
                }
            };

            public ref class ImaginaryLiteral : CppSharp::Parser::AST::Expr
            {
            public:

                ImaginaryLiteral(::CppSharp::CppParser::AST::ImaginaryLiteral* native);
                ImaginaryLiteral(::CppSharp::CppParser::AST::ImaginaryLiteral* native, bool ownNativeInstance);
                static ImaginaryLiteral^ __CreateInstance(::System::IntPtr native);
                static ImaginaryLiteral^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                ImaginaryLiteral();

                ImaginaryLiteral(CppSharp::Parser::AST::ImaginaryLiteral^ _0);

                ~ImaginaryLiteral();

                property CppSharp::Parser::AST::Expr^ SubExpr
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }
            };

            public ref class StringLiteral : CppSharp::Parser::AST::Expr
            {
            public:

                enum class StringKind
                {
                    Ascii = 0,
                    Wide = 1,
                    UTF8 = 2,
                    UTF16 = 3,
                    UTF32 = 4
                };

                StringLiteral(::CppSharp::CppParser::AST::StringLiteral* native);
                StringLiteral(::CppSharp::CppParser::AST::StringLiteral* native, bool ownNativeInstance);
                static StringLiteral^ __CreateInstance(::System::IntPtr native);
                static StringLiteral^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                StringLiteral();

                StringLiteral(CppSharp::Parser::AST::StringLiteral^ _0);

                ~StringLiteral();

                property System::String^ String
                {
                    System::String^ get();
                    void set(System::String^);
                }

                property System::String^ Bytes
                {
                    System::String^ get();
                    void set(System::String^);
                }

                property unsigned int ByteLength
                {
                    unsigned int get();
                    void set(unsigned int);
                }

                property unsigned int Length
                {
                    unsigned int get();
                    void set(unsigned int);
                }

                property unsigned int CharByteWidth
                {
                    unsigned int get();
                    void set(unsigned int);
                }

                property CppSharp::Parser::AST::StringLiteral::StringKind Kind
                {
                    CppSharp::Parser::AST::StringLiteral::StringKind get();
                    void set(CppSharp::Parser::AST::StringLiteral::StringKind);
                }

                property bool IsAscii
                {
                    bool get();
                    void set(bool);
                }

                property bool IsWide
                {
                    bool get();
                    void set(bool);
                }

                property bool IsUTF8
                {
                    bool get();
                    void set(bool);
                }

                property bool IsUTF16
                {
                    bool get();
                    void set(bool);
                }

                property bool IsUTF32
                {
                    bool get();
                    void set(bool);
                }

                property bool IsPascal
                {
                    bool get();
                    void set(bool);
                }

                property bool ContainsNonAscii
                {
                    bool get();
                    void set(bool);
                }

                property bool ContainsNonAsciiOrNull
                {
                    bool get();
                    void set(bool);
                }

                property unsigned int NumConcatenated
                {
                    unsigned int get();
                    void set(unsigned int);
                }
            };

            public ref class PredefinedExpr : CppSharp::Parser::AST::Expr
            {
            public:

                enum class IdentKind
                {
                    Func = 0,
                    Function = 1,
                    LFunction = 2,
                    FuncDName = 3,
                    FuncSig = 4,
                    LFuncSig = 5,
                    PrettyFunction = 6,
                    PrettyFunctionNoVirtual = 7
                };

                PredefinedExpr(::CppSharp::CppParser::AST::PredefinedExpr* native);
                PredefinedExpr(::CppSharp::CppParser::AST::PredefinedExpr* native, bool ownNativeInstance);
                static PredefinedExpr^ __CreateInstance(::System::IntPtr native);
                static PredefinedExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                PredefinedExpr();

                PredefinedExpr(CppSharp::Parser::AST::PredefinedExpr^ _0);

                ~PredefinedExpr();

                property CppSharp::Parser::SourceLocation Location
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::AST::PredefinedExpr::IdentKind identKind
                {
                    CppSharp::Parser::AST::PredefinedExpr::IdentKind get();
                    void set(CppSharp::Parser::AST::PredefinedExpr::IdentKind);
                }
            };

            public ref class ParenExpr : CppSharp::Parser::AST::Expr
            {
            public:

                ParenExpr(::CppSharp::CppParser::AST::ParenExpr* native);
                ParenExpr(::CppSharp::CppParser::AST::ParenExpr* native, bool ownNativeInstance);
                static ParenExpr^ __CreateInstance(::System::IntPtr native);
                static ParenExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                ParenExpr();

                ParenExpr(CppSharp::Parser::AST::ParenExpr^ _0);

                ~ParenExpr();

                property CppSharp::Parser::AST::Expr^ SubExpr
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::SourceLocation LParen
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation RParen
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }
            };

            public ref class UnaryOperator : CppSharp::Parser::AST::Expr
            {
            public:

                UnaryOperator(::CppSharp::CppParser::AST::UnaryOperator* native);
                UnaryOperator(::CppSharp::CppParser::AST::UnaryOperator* native, bool ownNativeInstance);
                static UnaryOperator^ __CreateInstance(::System::IntPtr native);
                static UnaryOperator^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                UnaryOperator();

                UnaryOperator(CppSharp::Parser::AST::UnaryOperator^ _0);

                ~UnaryOperator();

                property CppSharp::Parser::AST::UnaryOperatorKind Opcode
                {
                    CppSharp::Parser::AST::UnaryOperatorKind get();
                    void set(CppSharp::Parser::AST::UnaryOperatorKind);
                }

                property CppSharp::Parser::AST::Expr^ SubExpr
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::SourceLocation OperatorLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property bool CanOverflow
                {
                    bool get();
                    void set(bool);
                }

                property bool IsPrefix
                {
                    bool get();
                    void set(bool);
                }

                property bool IsPostfix
                {
                    bool get();
                    void set(bool);
                }

                property bool IsIncrementOp
                {
                    bool get();
                    void set(bool);
                }

                property bool IsDecrementOp
                {
                    bool get();
                    void set(bool);
                }

                property bool IsIncrementDecrementOp
                {
                    bool get();
                    void set(bool);
                }

                property bool IsArithmeticOp
                {
                    bool get();
                    void set(bool);
                }
            };

            public ref class OffsetOfExpr : CppSharp::Parser::AST::Expr
            {
            public:

                OffsetOfExpr(::CppSharp::CppParser::AST::OffsetOfExpr* native);
                OffsetOfExpr(::CppSharp::CppParser::AST::OffsetOfExpr* native, bool ownNativeInstance);
                static OffsetOfExpr^ __CreateInstance(::System::IntPtr native);
                static OffsetOfExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                OffsetOfExpr();

                OffsetOfExpr(CppSharp::Parser::AST::OffsetOfExpr^ _0);

                ~OffsetOfExpr();

                property CppSharp::Parser::SourceLocation OperatorLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation RParenLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property unsigned int NumComponents
                {
                    unsigned int get();
                    void set(unsigned int);
                }

                property unsigned int NumExpressions
                {
                    unsigned int get();
                    void set(unsigned int);
                }
            };

            public ref class UnaryExprOrTypeTraitExpr : CppSharp::Parser::AST::Expr
            {
            public:

                UnaryExprOrTypeTraitExpr(::CppSharp::CppParser::AST::UnaryExprOrTypeTraitExpr* native);
                UnaryExprOrTypeTraitExpr(::CppSharp::CppParser::AST::UnaryExprOrTypeTraitExpr* native, bool ownNativeInstance);
                static UnaryExprOrTypeTraitExpr^ __CreateInstance(::System::IntPtr native);
                static UnaryExprOrTypeTraitExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                UnaryExprOrTypeTraitExpr();

                UnaryExprOrTypeTraitExpr(CppSharp::Parser::AST::UnaryExprOrTypeTraitExpr^ _0);

                ~UnaryExprOrTypeTraitExpr();

                property CppSharp::Parser::AST::UnaryExprOrTypeTrait Kind
                {
                    CppSharp::Parser::AST::UnaryExprOrTypeTrait get();
                    void set(CppSharp::Parser::AST::UnaryExprOrTypeTrait);
                }

                property CppSharp::Parser::SourceLocation OperatorLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation RParenLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property bool IsArgumentType
                {
                    bool get();
                    void set(bool);
                }

                property CppSharp::Parser::AST::QualifiedType^ ArgumentType
                {
                    CppSharp::Parser::AST::QualifiedType^ get();
                    void set(CppSharp::Parser::AST::QualifiedType^);
                }

                property CppSharp::Parser::AST::Expr^ ArgumentExpr
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::AST::QualifiedType^ TypeOfArgument
                {
                    CppSharp::Parser::AST::QualifiedType^ get();
                    void set(CppSharp::Parser::AST::QualifiedType^);
                }
            };

            public ref class ArraySubscriptExpr : CppSharp::Parser::AST::Expr
            {
            public:

                ArraySubscriptExpr(::CppSharp::CppParser::AST::ArraySubscriptExpr* native);
                ArraySubscriptExpr(::CppSharp::CppParser::AST::ArraySubscriptExpr* native, bool ownNativeInstance);
                static ArraySubscriptExpr^ __CreateInstance(::System::IntPtr native);
                static ArraySubscriptExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                ArraySubscriptExpr();

                ArraySubscriptExpr(CppSharp::Parser::AST::ArraySubscriptExpr^ _0);

                ~ArraySubscriptExpr();

                property CppSharp::Parser::AST::Expr^ LHS
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::AST::Expr^ RHS
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::SourceLocation RBracketLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::AST::Expr^ Base
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::AST::Expr^ Idx
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }
            };

            public ref class CallExpr : CppSharp::Parser::AST::Expr
            {
            public:

                CallExpr(::CppSharp::CppParser::AST::CallExpr* native);
                CallExpr(::CppSharp::CppParser::AST::CallExpr* native, bool ownNativeInstance);
                static CallExpr^ __CreateInstance(::System::IntPtr native);
                static CallExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CallExpr();

                CallExpr(CppSharp::Parser::AST::StmtClass klass);

                CallExpr(CppSharp::Parser::AST::CallExpr^ _0);

                ~CallExpr();

                property System::Collections::Generic::List<CppSharp::Parser::AST::Expr^>^ Arguments
                {
                    System::Collections::Generic::List<CppSharp::Parser::AST::Expr^>^ get();
                    void set(System::Collections::Generic::List<CppSharp::Parser::AST::Expr^>^);
                }

                property CppSharp::Parser::AST::Expr^ Callee
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::SourceLocation RParenLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::AST::Declaration^ CalleeDecl
                {
                    CppSharp::Parser::AST::Declaration^ get();
                    void set(CppSharp::Parser::AST::Declaration^);
                }

                property CppSharp::Parser::AST::Function^ DirectCallee
                {
                    CppSharp::Parser::AST::Function^ get();
                    void set(CppSharp::Parser::AST::Function^);
                }

                property unsigned int NumArgs
                {
                    unsigned int get();
                    void set(unsigned int);
                }

                property unsigned int NumCommas
                {
                    unsigned int get();
                    void set(unsigned int);
                }

                property unsigned int BuiltinCallee
                {
                    unsigned int get();
                    void set(unsigned int);
                }

                property bool IsCallToStdMove
                {
                    bool get();
                    void set(bool);
                }

                property unsigned int GetargumentsCount
                {
                    unsigned int get();
                }

                CppSharp::Parser::AST::Expr^ Getarguments(unsigned int i);

                void Addarguments(CppSharp::Parser::AST::Expr^ s);

                void Cleararguments();

                static operator CppSharp::Parser::AST::CallExpr^(CppSharp::Parser::AST::StmtClass klass);
            };

            public ref class MemberExpr : CppSharp::Parser::AST::Expr
            {
            public:

                MemberExpr(::CppSharp::CppParser::AST::MemberExpr* native);
                MemberExpr(::CppSharp::CppParser::AST::MemberExpr* native, bool ownNativeInstance);
                static MemberExpr^ __CreateInstance(::System::IntPtr native);
                static MemberExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                MemberExpr();

                MemberExpr(CppSharp::Parser::AST::MemberExpr^ _0);

                ~MemberExpr();

                property CppSharp::Parser::AST::Expr^ Base
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property bool Arrow
                {
                    bool get();
                    void set(bool);
                }

                property CppSharp::Parser::SourceLocation MemberLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property bool HadMultipleCandidates
                {
                    bool get();
                    void set(bool);
                }

                property bool HasQualifier
                {
                    bool get();
                    void set(bool);
                }

                property CppSharp::Parser::SourceLocation TemplateKeywordLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation LAngleLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation RAngleLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property bool HasTemplateKeyword
                {
                    bool get();
                    void set(bool);
                }

                property bool HasExplicitTemplateArgs
                {
                    bool get();
                    void set(bool);
                }

                property unsigned int NumTemplateArgs
                {
                    unsigned int get();
                    void set(unsigned int);
                }

                property CppSharp::Parser::SourceLocation OperatorLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property bool IsImplicitAccess
                {
                    bool get();
                    void set(bool);
                }
            };

            public ref class CompoundLiteralExpr : CppSharp::Parser::AST::Expr
            {
            public:

                CompoundLiteralExpr(::CppSharp::CppParser::AST::CompoundLiteralExpr* native);
                CompoundLiteralExpr(::CppSharp::CppParser::AST::CompoundLiteralExpr* native, bool ownNativeInstance);
                static CompoundLiteralExpr^ __CreateInstance(::System::IntPtr native);
                static CompoundLiteralExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CompoundLiteralExpr();

                CompoundLiteralExpr(CppSharp::Parser::AST::CompoundLiteralExpr^ _0);

                ~CompoundLiteralExpr();

                property CppSharp::Parser::AST::Expr^ Initializer
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property bool FileScope
                {
                    bool get();
                    void set(bool);
                }

                property CppSharp::Parser::SourceLocation LParenLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }
            };

            public ref class CastExpr : CppSharp::Parser::AST::Expr
            {
            public:

                CastExpr(::CppSharp::CppParser::AST::CastExpr* native);
                CastExpr(::CppSharp::CppParser::AST::CastExpr* native, bool ownNativeInstance);
                static CastExpr^ __CreateInstance(::System::IntPtr native);
                static CastExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CastExpr();

                CastExpr(CppSharp::Parser::AST::StmtClass klass);

                CastExpr(CppSharp::Parser::AST::CastExpr^ _0);

                ~CastExpr();

                property CppSharp::Parser::AST::CastKind CastKind
                {
                    CppSharp::Parser::AST::CastKind get();
                    void set(CppSharp::Parser::AST::CastKind);
                }

                property CppSharp::Parser::AST::Expr^ SubExpr
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property System::String^ CastKindName
                {
                    System::String^ get();
                    void set(System::String^);
                }

                property CppSharp::Parser::AST::Expr^ SubExprAsWritten
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::AST::Declaration^ ConversionFunction
                {
                    CppSharp::Parser::AST::Declaration^ get();
                    void set(CppSharp::Parser::AST::Declaration^);
                }

                property bool PathEmpty
                {
                    bool get();
                    void set(bool);
                }

                property unsigned int PathSize
                {
                    unsigned int get();
                    void set(unsigned int);
                }

                static operator CppSharp::Parser::AST::CastExpr^(CppSharp::Parser::AST::StmtClass klass);
            };

            public ref class ImplicitCastExpr : CppSharp::Parser::AST::CastExpr
            {
            public:

                enum class OnStack_t
                {
                    OnStack = 0
                };

                ImplicitCastExpr(::CppSharp::CppParser::AST::ImplicitCastExpr* native);
                ImplicitCastExpr(::CppSharp::CppParser::AST::ImplicitCastExpr* native, bool ownNativeInstance);
                static ImplicitCastExpr^ __CreateInstance(::System::IntPtr native);
                static ImplicitCastExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                ImplicitCastExpr();

                ImplicitCastExpr(CppSharp::Parser::AST::ImplicitCastExpr^ _0);

                ~ImplicitCastExpr();

                property bool IsPartOfExplicitCast
                {
                    bool get();
                    void set(bool);
                }
            };

            public ref class ExplicitCastExpr : CppSharp::Parser::AST::CastExpr
            {
            public:

                ExplicitCastExpr(::CppSharp::CppParser::AST::ExplicitCastExpr* native);
                ExplicitCastExpr(::CppSharp::CppParser::AST::ExplicitCastExpr* native, bool ownNativeInstance);
                static ExplicitCastExpr^ __CreateInstance(::System::IntPtr native);
                static ExplicitCastExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                ExplicitCastExpr();

                ExplicitCastExpr(CppSharp::Parser::AST::StmtClass klass);

                ExplicitCastExpr(CppSharp::Parser::AST::ExplicitCastExpr^ _0);

                ~ExplicitCastExpr();

                property CppSharp::Parser::AST::QualifiedType^ TypeAsWritten
                {
                    CppSharp::Parser::AST::QualifiedType^ get();
                    void set(CppSharp::Parser::AST::QualifiedType^);
                }

                static operator CppSharp::Parser::AST::ExplicitCastExpr^(CppSharp::Parser::AST::StmtClass klass);
            };

            public ref class CStyleCastExpr : CppSharp::Parser::AST::ExplicitCastExpr
            {
            public:

                CStyleCastExpr(::CppSharp::CppParser::AST::CStyleCastExpr* native);
                CStyleCastExpr(::CppSharp::CppParser::AST::CStyleCastExpr* native, bool ownNativeInstance);
                static CStyleCastExpr^ __CreateInstance(::System::IntPtr native);
                static CStyleCastExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CStyleCastExpr();

                CStyleCastExpr(CppSharp::Parser::AST::CStyleCastExpr^ _0);

                ~CStyleCastExpr();

                property CppSharp::Parser::SourceLocation LParenLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation RParenLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }
            };

            public ref class BinaryOperator : CppSharp::Parser::AST::Expr
            {
            public:

                BinaryOperator(::CppSharp::CppParser::AST::BinaryOperator* native);
                BinaryOperator(::CppSharp::CppParser::AST::BinaryOperator* native, bool ownNativeInstance);
                static BinaryOperator^ __CreateInstance(::System::IntPtr native);
                static BinaryOperator^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                BinaryOperator();

                BinaryOperator(CppSharp::Parser::AST::StmtClass klass);

                BinaryOperator(CppSharp::Parser::AST::BinaryOperator^ _0);

                ~BinaryOperator();

                property CppSharp::Parser::SourceLocation OperatorLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::AST::BinaryOperatorKind Opcode
                {
                    CppSharp::Parser::AST::BinaryOperatorKind get();
                    void set(CppSharp::Parser::AST::BinaryOperatorKind);
                }

                property CppSharp::Parser::AST::Expr^ LHS
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::AST::Expr^ RHS
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property System::String^ OpcodeStr
                {
                    System::String^ get();
                    void set(System::String^);
                }

                property bool IsPtrMemOp
                {
                    bool get();
                    void set(bool);
                }

                property bool IsMultiplicativeOp
                {
                    bool get();
                    void set(bool);
                }

                property bool IsAdditiveOp
                {
                    bool get();
                    void set(bool);
                }

                property bool IsShiftOp
                {
                    bool get();
                    void set(bool);
                }

                property bool IsBitwiseOp
                {
                    bool get();
                    void set(bool);
                }

                property bool IsRelationalOp
                {
                    bool get();
                    void set(bool);
                }

                property bool IsEqualityOp
                {
                    bool get();
                    void set(bool);
                }

                property bool IsComparisonOp
                {
                    bool get();
                    void set(bool);
                }

                property bool IsLogicalOp
                {
                    bool get();
                    void set(bool);
                }

                property bool IsAssignmentOp
                {
                    bool get();
                    void set(bool);
                }

                property bool IsCompoundAssignmentOp
                {
                    bool get();
                    void set(bool);
                }

                property bool IsShiftAssignOp
                {
                    bool get();
                    void set(bool);
                }

                property bool IsFPContractableWithinStatement
                {
                    bool get();
                    void set(bool);
                }

                property bool IsFEnvAccessOn
                {
                    bool get();
                    void set(bool);
                }

                static operator CppSharp::Parser::AST::BinaryOperator^(CppSharp::Parser::AST::StmtClass klass);
            };

            public ref class CompoundAssignOperator : CppSharp::Parser::AST::BinaryOperator
            {
            public:

                CompoundAssignOperator(::CppSharp::CppParser::AST::CompoundAssignOperator* native);
                CompoundAssignOperator(::CppSharp::CppParser::AST::CompoundAssignOperator* native, bool ownNativeInstance);
                static CompoundAssignOperator^ __CreateInstance(::System::IntPtr native);
                static CompoundAssignOperator^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CompoundAssignOperator();

                CompoundAssignOperator(CppSharp::Parser::AST::CompoundAssignOperator^ _0);

                ~CompoundAssignOperator();

                property CppSharp::Parser::AST::QualifiedType^ ComputationLHSType
                {
                    CppSharp::Parser::AST::QualifiedType^ get();
                    void set(CppSharp::Parser::AST::QualifiedType^);
                }

                property CppSharp::Parser::AST::QualifiedType^ ComputationResultType
                {
                    CppSharp::Parser::AST::QualifiedType^ get();
                    void set(CppSharp::Parser::AST::QualifiedType^);
                }
            };

            public ref class AbstractConditionalOperator : CppSharp::Parser::AST::Expr
            {
            public:

                AbstractConditionalOperator(::CppSharp::CppParser::AST::AbstractConditionalOperator* native);
                AbstractConditionalOperator(::CppSharp::CppParser::AST::AbstractConditionalOperator* native, bool ownNativeInstance);
                static AbstractConditionalOperator^ __CreateInstance(::System::IntPtr native);
                static AbstractConditionalOperator^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                AbstractConditionalOperator();

                AbstractConditionalOperator(CppSharp::Parser::AST::StmtClass klass);

                AbstractConditionalOperator(CppSharp::Parser::AST::AbstractConditionalOperator^ _0);

                ~AbstractConditionalOperator();

                property CppSharp::Parser::AST::Expr^ Cond
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::AST::Expr^ TrueExpr
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::AST::Expr^ FalseExpr
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::SourceLocation QuestionLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation ColonLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                static operator CppSharp::Parser::AST::AbstractConditionalOperator^(CppSharp::Parser::AST::StmtClass klass);
            };

            public ref class ConditionalOperator : CppSharp::Parser::AST::AbstractConditionalOperator
            {
            public:

                ConditionalOperator(::CppSharp::CppParser::AST::ConditionalOperator* native);
                ConditionalOperator(::CppSharp::CppParser::AST::ConditionalOperator* native, bool ownNativeInstance);
                static ConditionalOperator^ __CreateInstance(::System::IntPtr native);
                static ConditionalOperator^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                ConditionalOperator();

                ConditionalOperator(CppSharp::Parser::AST::ConditionalOperator^ _0);

                ~ConditionalOperator();

                property CppSharp::Parser::AST::Expr^ LHS
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::AST::Expr^ RHS
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }
            };

            public ref class BinaryConditionalOperator : CppSharp::Parser::AST::AbstractConditionalOperator
            {
            public:

                BinaryConditionalOperator(::CppSharp::CppParser::AST::BinaryConditionalOperator* native);
                BinaryConditionalOperator(::CppSharp::CppParser::AST::BinaryConditionalOperator* native, bool ownNativeInstance);
                static BinaryConditionalOperator^ __CreateInstance(::System::IntPtr native);
                static BinaryConditionalOperator^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                BinaryConditionalOperator();

                BinaryConditionalOperator(CppSharp::Parser::AST::BinaryConditionalOperator^ _0);

                ~BinaryConditionalOperator();

                property CppSharp::Parser::AST::Expr^ Common
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::AST::OpaqueValueExpr^ OpaqueValue
                {
                    CppSharp::Parser::AST::OpaqueValueExpr^ get();
                    void set(CppSharp::Parser::AST::OpaqueValueExpr^);
                }
            };

            public ref class AddrLabelExpr : CppSharp::Parser::AST::Expr
            {
            public:

                AddrLabelExpr(::CppSharp::CppParser::AST::AddrLabelExpr* native);
                AddrLabelExpr(::CppSharp::CppParser::AST::AddrLabelExpr* native, bool ownNativeInstance);
                static AddrLabelExpr^ __CreateInstance(::System::IntPtr native);
                static AddrLabelExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                AddrLabelExpr();

                AddrLabelExpr(CppSharp::Parser::AST::AddrLabelExpr^ _0);

                ~AddrLabelExpr();

                property CppSharp::Parser::SourceLocation AmpAmpLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation LabelLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }
            };

            public ref class StmtExpr : CppSharp::Parser::AST::Expr
            {
            public:

                StmtExpr(::CppSharp::CppParser::AST::StmtExpr* native);
                StmtExpr(::CppSharp::CppParser::AST::StmtExpr* native, bool ownNativeInstance);
                static StmtExpr^ __CreateInstance(::System::IntPtr native);
                static StmtExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                StmtExpr();

                StmtExpr(CppSharp::Parser::AST::StmtExpr^ _0);

                ~StmtExpr();

                property CppSharp::Parser::AST::CompoundStmt^ SubStmt
                {
                    CppSharp::Parser::AST::CompoundStmt^ get();
                    void set(CppSharp::Parser::AST::CompoundStmt^);
                }

                property CppSharp::Parser::SourceLocation LParenLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation RParenLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }
            };

            public ref class ShuffleVectorExpr : CppSharp::Parser::AST::Expr
            {
            public:

                ShuffleVectorExpr(::CppSharp::CppParser::AST::ShuffleVectorExpr* native);
                ShuffleVectorExpr(::CppSharp::CppParser::AST::ShuffleVectorExpr* native, bool ownNativeInstance);
                static ShuffleVectorExpr^ __CreateInstance(::System::IntPtr native);
                static ShuffleVectorExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                ShuffleVectorExpr();

                ShuffleVectorExpr(CppSharp::Parser::AST::ShuffleVectorExpr^ _0);

                ~ShuffleVectorExpr();

                property CppSharp::Parser::SourceLocation BuiltinLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation RParenLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property unsigned int NumSubExprs
                {
                    unsigned int get();
                    void set(unsigned int);
                }
            };

            public ref class ConvertVectorExpr : CppSharp::Parser::AST::Expr
            {
            public:

                ConvertVectorExpr(::CppSharp::CppParser::AST::ConvertVectorExpr* native);
                ConvertVectorExpr(::CppSharp::CppParser::AST::ConvertVectorExpr* native, bool ownNativeInstance);
                static ConvertVectorExpr^ __CreateInstance(::System::IntPtr native);
                static ConvertVectorExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                ConvertVectorExpr();

                ConvertVectorExpr(CppSharp::Parser::AST::ConvertVectorExpr^ _0);

                ~ConvertVectorExpr();

                property CppSharp::Parser::AST::Expr^ SrcExpr
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::SourceLocation BuiltinLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation RParenLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }
            };

            public ref class ChooseExpr : CppSharp::Parser::AST::Expr
            {
            public:

                ChooseExpr(::CppSharp::CppParser::AST::ChooseExpr* native);
                ChooseExpr(::CppSharp::CppParser::AST::ChooseExpr* native, bool ownNativeInstance);
                static ChooseExpr^ __CreateInstance(::System::IntPtr native);
                static ChooseExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                ChooseExpr();

                ChooseExpr(CppSharp::Parser::AST::ChooseExpr^ _0);

                ~ChooseExpr();

                property bool IsConditionTrue
                {
                    bool get();
                    void set(bool);
                }

                property CppSharp::Parser::AST::Expr^ Cond
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::AST::Expr^ LHS
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::AST::Expr^ RHS
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::SourceLocation BuiltinLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation RParenLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property bool IsConditionDependent
                {
                    bool get();
                    void set(bool);
                }

                property CppSharp::Parser::AST::Expr^ ChosenSubExpr
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }
            };

            public ref class GNUNullExpr : CppSharp::Parser::AST::Expr
            {
            public:

                GNUNullExpr(::CppSharp::CppParser::AST::GNUNullExpr* native);
                GNUNullExpr(::CppSharp::CppParser::AST::GNUNullExpr* native, bool ownNativeInstance);
                static GNUNullExpr^ __CreateInstance(::System::IntPtr native);
                static GNUNullExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                GNUNullExpr();

                GNUNullExpr(CppSharp::Parser::AST::GNUNullExpr^ _0);

                ~GNUNullExpr();

                property CppSharp::Parser::SourceLocation TokenLocation
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }
            };

            public ref class VAArgExpr : CppSharp::Parser::AST::Expr
            {
            public:

                VAArgExpr(::CppSharp::CppParser::AST::VAArgExpr* native);
                VAArgExpr(::CppSharp::CppParser::AST::VAArgExpr* native, bool ownNativeInstance);
                static VAArgExpr^ __CreateInstance(::System::IntPtr native);
                static VAArgExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                VAArgExpr();

                VAArgExpr(CppSharp::Parser::AST::VAArgExpr^ _0);

                ~VAArgExpr();

                property CppSharp::Parser::AST::Expr^ SubExpr
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property bool IsMicrosoftABI
                {
                    bool get();
                    void set(bool);
                }

                property CppSharp::Parser::SourceLocation BuiltinLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation RParenLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }
            };

            public ref class InitListExpr : CppSharp::Parser::AST::Expr
            {
            public:

                InitListExpr(::CppSharp::CppParser::AST::InitListExpr* native);
                InitListExpr(::CppSharp::CppParser::AST::InitListExpr* native, bool ownNativeInstance);
                static InitListExpr^ __CreateInstance(::System::IntPtr native);
                static InitListExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                InitListExpr();

                InitListExpr(CppSharp::Parser::AST::InitListExpr^ _0);

                ~InitListExpr();

                property CppSharp::Parser::AST::Expr^ ArrayFiller
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::SourceLocation LBraceLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation RBraceLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::AST::InitListExpr^ SyntacticForm
                {
                    CppSharp::Parser::AST::InitListExpr^ get();
                    void set(CppSharp::Parser::AST::InitListExpr^);
                }

                property unsigned int NumInits
                {
                    unsigned int get();
                    void set(unsigned int);
                }

                property bool HasArrayFiller
                {
                    bool get();
                    void set(bool);
                }

                property bool IsExplicit
                {
                    bool get();
                    void set(bool);
                }

                property bool IsStringLiteralInit
                {
                    bool get();
                    void set(bool);
                }

                property bool IsTransparent
                {
                    bool get();
                    void set(bool);
                }

                property bool IsSemanticForm
                {
                    bool get();
                    void set(bool);
                }

                property CppSharp::Parser::AST::InitListExpr^ SemanticForm
                {
                    CppSharp::Parser::AST::InitListExpr^ get();
                    void set(CppSharp::Parser::AST::InitListExpr^);
                }

                property bool IsSyntacticForm
                {
                    bool get();
                    void set(bool);
                }
            };

            public ref class DesignatedInitExpr : CppSharp::Parser::AST::Expr
            {
            public:

                ref class Designator : ICppInstance
                {
                public:

                    property ::CppSharp::CppParser::AST::DesignatedInitExpr::Designator* NativePtr;
                    property System::IntPtr __Instance
                    {
                        virtual System::IntPtr get();
                        virtual void set(System::IntPtr instance);
                    }

                    Designator(::CppSharp::CppParser::AST::DesignatedInitExpr::Designator* native);
                    Designator(::CppSharp::CppParser::AST::DesignatedInitExpr::Designator* native, bool ownNativeInstance);
                    static Designator^ __CreateInstance(::System::IntPtr native);
                    static Designator^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                    Designator();

                    Designator(CppSharp::Parser::AST::DesignatedInitExpr::Designator^ _0);

                    ~Designator();

                    property CppSharp::Parser::AST::Field^ Field
                    {
                        CppSharp::Parser::AST::Field^ get();
                        void set(CppSharp::Parser::AST::Field^);
                    }

                    property bool IsFieldDesignator
                    {
                        bool get();
                        void set(bool);
                    }

                    property bool IsArrayDesignator
                    {
                        bool get();
                        void set(bool);
                    }

                    property bool IsArrayRangeDesignator
                    {
                        bool get();
                        void set(bool);
                    }

                    property CppSharp::Parser::SourceLocation DotLoc
                    {
                        CppSharp::Parser::SourceLocation get();
                        void set(CppSharp::Parser::SourceLocation);
                    }

                    property CppSharp::Parser::SourceLocation FieldLoc
                    {
                        CppSharp::Parser::SourceLocation get();
                        void set(CppSharp::Parser::SourceLocation);
                    }

                    property CppSharp::Parser::SourceLocation LBracketLoc
                    {
                        CppSharp::Parser::SourceLocation get();
                        void set(CppSharp::Parser::SourceLocation);
                    }

                    property CppSharp::Parser::SourceLocation RBracketLoc
                    {
                        CppSharp::Parser::SourceLocation get();
                        void set(CppSharp::Parser::SourceLocation);
                    }

                    property CppSharp::Parser::SourceLocation EllipsisLoc
                    {
                        CppSharp::Parser::SourceLocation get();
                        void set(CppSharp::Parser::SourceLocation);
                    }

                    property unsigned int FirstExprIndex
                    {
                        unsigned int get();
                        void set(unsigned int);
                    }

                    property CppSharp::Parser::SourceRange^ SourceRange
                    {
                        CppSharp::Parser::SourceRange^ get();
                        void set(CppSharp::Parser::SourceRange^);
                    }

                protected:
                    bool __ownsNativeInstance;
                };

                ref class FieldDesignator : ICppInstance
                {
                public:

                    property ::CppSharp::CppParser::AST::DesignatedInitExpr::FieldDesignator* NativePtr;
                    property System::IntPtr __Instance
                    {
                        virtual System::IntPtr get();
                        virtual void set(System::IntPtr instance);
                    }

                    FieldDesignator(::CppSharp::CppParser::AST::DesignatedInitExpr::FieldDesignator* native);
                    FieldDesignator(::CppSharp::CppParser::AST::DesignatedInitExpr::FieldDesignator* native, bool ownNativeInstance);
                    static FieldDesignator^ __CreateInstance(::System::IntPtr native);
                    static FieldDesignator^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                    FieldDesignator();

                    FieldDesignator(CppSharp::Parser::AST::DesignatedInitExpr::FieldDesignator^ _0);

                    ~FieldDesignator();

                protected:
                    bool __ownsNativeInstance;
                };

                ref class ArrayOrRangeDesignator : ICppInstance
                {
                public:

                    property ::CppSharp::CppParser::AST::DesignatedInitExpr::ArrayOrRangeDesignator* NativePtr;
                    property System::IntPtr __Instance
                    {
                        virtual System::IntPtr get();
                        virtual void set(System::IntPtr instance);
                    }

                    ArrayOrRangeDesignator(::CppSharp::CppParser::AST::DesignatedInitExpr::ArrayOrRangeDesignator* native);
                    ArrayOrRangeDesignator(::CppSharp::CppParser::AST::DesignatedInitExpr::ArrayOrRangeDesignator* native, bool ownNativeInstance);
                    static ArrayOrRangeDesignator^ __CreateInstance(::System::IntPtr native);
                    static ArrayOrRangeDesignator^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                    ArrayOrRangeDesignator();

                    ArrayOrRangeDesignator(CppSharp::Parser::AST::DesignatedInitExpr::ArrayOrRangeDesignator^ _0);

                    ~ArrayOrRangeDesignator();

                protected:
                    bool __ownsNativeInstance;
                };

                DesignatedInitExpr(::CppSharp::CppParser::AST::DesignatedInitExpr* native);
                DesignatedInitExpr(::CppSharp::CppParser::AST::DesignatedInitExpr* native, bool ownNativeInstance);
                static DesignatedInitExpr^ __CreateInstance(::System::IntPtr native);
                static DesignatedInitExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                DesignatedInitExpr();

                DesignatedInitExpr(CppSharp::Parser::AST::DesignatedInitExpr^ _0);

                ~DesignatedInitExpr();

                property CppSharp::Parser::SourceLocation EqualOrColonLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::AST::Expr^ Init
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property unsigned int Size
                {
                    unsigned int get();
                    void set(unsigned int);
                }

                property bool UsesGNUSyntax
                {
                    bool get();
                    void set(bool);
                }

                property unsigned int NumSubExprs
                {
                    unsigned int get();
                    void set(unsigned int);
                }

                property CppSharp::Parser::SourceRange^ DesignatorsSourceRange
                {
                    CppSharp::Parser::SourceRange^ get();
                    void set(CppSharp::Parser::SourceRange^);
                }
            };

            public ref class NoInitExpr : CppSharp::Parser::AST::Expr
            {
            public:

                NoInitExpr(::CppSharp::CppParser::AST::NoInitExpr* native);
                NoInitExpr(::CppSharp::CppParser::AST::NoInitExpr* native, bool ownNativeInstance);
                static NoInitExpr^ __CreateInstance(::System::IntPtr native);
                static NoInitExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                NoInitExpr();

                NoInitExpr(CppSharp::Parser::AST::NoInitExpr^ _0);

                ~NoInitExpr();
            };

            public ref class DesignatedInitUpdateExpr : CppSharp::Parser::AST::Expr
            {
            public:

                DesignatedInitUpdateExpr(::CppSharp::CppParser::AST::DesignatedInitUpdateExpr* native);
                DesignatedInitUpdateExpr(::CppSharp::CppParser::AST::DesignatedInitUpdateExpr* native, bool ownNativeInstance);
                static DesignatedInitUpdateExpr^ __CreateInstance(::System::IntPtr native);
                static DesignatedInitUpdateExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                DesignatedInitUpdateExpr();

                DesignatedInitUpdateExpr(CppSharp::Parser::AST::DesignatedInitUpdateExpr^ _0);

                ~DesignatedInitUpdateExpr();

                property CppSharp::Parser::AST::Expr^ Base
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::AST::InitListExpr^ Updater
                {
                    CppSharp::Parser::AST::InitListExpr^ get();
                    void set(CppSharp::Parser::AST::InitListExpr^);
                }
            };

            public ref class ArrayInitLoopExpr : CppSharp::Parser::AST::Expr
            {
            public:

                ArrayInitLoopExpr(::CppSharp::CppParser::AST::ArrayInitLoopExpr* native);
                ArrayInitLoopExpr(::CppSharp::CppParser::AST::ArrayInitLoopExpr* native, bool ownNativeInstance);
                static ArrayInitLoopExpr^ __CreateInstance(::System::IntPtr native);
                static ArrayInitLoopExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                ArrayInitLoopExpr();

                ArrayInitLoopExpr(CppSharp::Parser::AST::ArrayInitLoopExpr^ _0);

                ~ArrayInitLoopExpr();

                property CppSharp::Parser::AST::OpaqueValueExpr^ CommonExpr
                {
                    CppSharp::Parser::AST::OpaqueValueExpr^ get();
                    void set(CppSharp::Parser::AST::OpaqueValueExpr^);
                }

                property CppSharp::Parser::AST::Expr^ SubExpr
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }
            };

            public ref class ArrayInitIndexExpr : CppSharp::Parser::AST::Expr
            {
            public:

                ArrayInitIndexExpr(::CppSharp::CppParser::AST::ArrayInitIndexExpr* native);
                ArrayInitIndexExpr(::CppSharp::CppParser::AST::ArrayInitIndexExpr* native, bool ownNativeInstance);
                static ArrayInitIndexExpr^ __CreateInstance(::System::IntPtr native);
                static ArrayInitIndexExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                ArrayInitIndexExpr();

                ArrayInitIndexExpr(CppSharp::Parser::AST::ArrayInitIndexExpr^ _0);

                ~ArrayInitIndexExpr();
            };

            public ref class ImplicitValueInitExpr : CppSharp::Parser::AST::Expr
            {
            public:

                ImplicitValueInitExpr(::CppSharp::CppParser::AST::ImplicitValueInitExpr* native);
                ImplicitValueInitExpr(::CppSharp::CppParser::AST::ImplicitValueInitExpr* native, bool ownNativeInstance);
                static ImplicitValueInitExpr^ __CreateInstance(::System::IntPtr native);
                static ImplicitValueInitExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                ImplicitValueInitExpr();

                ImplicitValueInitExpr(CppSharp::Parser::AST::ImplicitValueInitExpr^ _0);

                ~ImplicitValueInitExpr();
            };

            public ref class ParenListExpr : CppSharp::Parser::AST::Expr
            {
            public:

                ParenListExpr(::CppSharp::CppParser::AST::ParenListExpr* native);
                ParenListExpr(::CppSharp::CppParser::AST::ParenListExpr* native, bool ownNativeInstance);
                static ParenListExpr^ __CreateInstance(::System::IntPtr native);
                static ParenListExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                ParenListExpr();

                ParenListExpr(CppSharp::Parser::AST::ParenListExpr^ _0);

                ~ParenListExpr();

                property unsigned int NumExprs
                {
                    unsigned int get();
                    void set(unsigned int);
                }

                property CppSharp::Parser::SourceLocation LParenLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation RParenLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }
            };

            public ref class GenericSelectionExpr : CppSharp::Parser::AST::Expr
            {
            public:

                GenericSelectionExpr(::CppSharp::CppParser::AST::GenericSelectionExpr* native);
                GenericSelectionExpr(::CppSharp::CppParser::AST::GenericSelectionExpr* native, bool ownNativeInstance);
                static GenericSelectionExpr^ __CreateInstance(::System::IntPtr native);
                static GenericSelectionExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                GenericSelectionExpr();

                GenericSelectionExpr(CppSharp::Parser::AST::GenericSelectionExpr^ _0);

                ~GenericSelectionExpr();

                property unsigned int NumAssocs
                {
                    unsigned int get();
                    void set(unsigned int);
                }

                property CppSharp::Parser::SourceLocation GenericLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation DefaultLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation RParenLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::AST::Expr^ ControllingExpr
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property bool IsResultDependent
                {
                    bool get();
                    void set(bool);
                }

                property unsigned int ResultIndex
                {
                    unsigned int get();
                    void set(unsigned int);
                }

                property CppSharp::Parser::AST::Expr^ ResultExpr
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }
            };

            public ref class ExtVectorElementExpr : CppSharp::Parser::AST::Expr
            {
            public:

                ExtVectorElementExpr(::CppSharp::CppParser::AST::ExtVectorElementExpr* native);
                ExtVectorElementExpr(::CppSharp::CppParser::AST::ExtVectorElementExpr* native, bool ownNativeInstance);
                static ExtVectorElementExpr^ __CreateInstance(::System::IntPtr native);
                static ExtVectorElementExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                ExtVectorElementExpr();

                ExtVectorElementExpr(CppSharp::Parser::AST::ExtVectorElementExpr^ _0);

                ~ExtVectorElementExpr();

                property CppSharp::Parser::AST::Expr^ Base
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::SourceLocation AccessorLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property unsigned int NumElements
                {
                    unsigned int get();
                    void set(unsigned int);
                }

                property bool ContainsDuplicateElements
                {
                    bool get();
                    void set(bool);
                }

                property bool IsArrow
                {
                    bool get();
                    void set(bool);
                }
            };

            public ref class BlockExpr : CppSharp::Parser::AST::Expr
            {
            public:

                BlockExpr(::CppSharp::CppParser::AST::BlockExpr* native);
                BlockExpr(::CppSharp::CppParser::AST::BlockExpr* native, bool ownNativeInstance);
                static BlockExpr^ __CreateInstance(::System::IntPtr native);
                static BlockExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                BlockExpr();

                BlockExpr(CppSharp::Parser::AST::BlockExpr^ _0);

                ~BlockExpr();

                property CppSharp::Parser::SourceLocation CaretLocation
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::AST::Stmt^ Body
                {
                    CppSharp::Parser::AST::Stmt^ get();
                    void set(CppSharp::Parser::AST::Stmt^);
                }
            };

            public ref class AsTypeExpr : CppSharp::Parser::AST::Expr
            {
            public:

                AsTypeExpr(::CppSharp::CppParser::AST::AsTypeExpr* native);
                AsTypeExpr(::CppSharp::CppParser::AST::AsTypeExpr* native, bool ownNativeInstance);
                static AsTypeExpr^ __CreateInstance(::System::IntPtr native);
                static AsTypeExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                AsTypeExpr();

                AsTypeExpr(CppSharp::Parser::AST::AsTypeExpr^ _0);

                ~AsTypeExpr();

                property CppSharp::Parser::AST::Expr^ SrcExpr
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::SourceLocation BuiltinLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation RParenLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }
            };

            public ref class PseudoObjectExpr : CppSharp::Parser::AST::Expr
            {
            public:

                PseudoObjectExpr(::CppSharp::CppParser::AST::PseudoObjectExpr* native);
                PseudoObjectExpr(::CppSharp::CppParser::AST::PseudoObjectExpr* native, bool ownNativeInstance);
                static PseudoObjectExpr^ __CreateInstance(::System::IntPtr native);
                static PseudoObjectExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                PseudoObjectExpr();

                PseudoObjectExpr(CppSharp::Parser::AST::PseudoObjectExpr^ _0);

                ~PseudoObjectExpr();

                property CppSharp::Parser::AST::Expr^ SyntacticForm
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property unsigned int ResultExprIndex
                {
                    unsigned int get();
                    void set(unsigned int);
                }

                property CppSharp::Parser::AST::Expr^ ResultExpr
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property unsigned int NumSemanticExprs
                {
                    unsigned int get();
                    void set(unsigned int);
                }
            };

            public ref class AtomicExpr : CppSharp::Parser::AST::Expr
            {
            public:

                enum class AtomicOp
                {
                    C11AtomicInit = 0,
                    C11AtomicLoad = 1,
                    C11AtomicStore = 2,
                    C11AtomicExchange = 3,
                    C11AtomicCompareExchangeStrong = 4,
                    C11AtomicCompareExchangeWeak = 5,
                    C11AtomicFetchAdd = 6,
                    C11AtomicFetchSub = 7,
                    C11AtomicFetchAnd = 8,
                    C11AtomicFetchOr = 9,
                    C11AtomicFetchXor = 10,
                    AtomicLoad = 11,
                    AtomicLoadN = 12,
                    AtomicStore = 13,
                    AtomicStoreN = 14,
                    AtomicExchange = 15,
                    AtomicExchangeN = 16,
                    AtomicCompareExchange = 17,
                    AtomicCompareExchangeN = 18,
                    AtomicFetchAdd = 19,
                    AtomicFetchSub = 20,
                    AtomicFetchAnd = 21,
                    AtomicFetchOr = 22,
                    AtomicFetchXor = 23,
                    AtomicFetchNand = 24,
                    AtomicAddFetch = 25,
                    AtomicSubFetch = 26,
                    AtomicAndFetch = 27,
                    AtomicOrFetch = 28,
                    AtomicXorFetch = 29,
                    AtomicNandFetch = 30,
                    OpenclAtomicInit = 31,
                    OpenclAtomicLoad = 32,
                    OpenclAtomicStore = 33,
                    OpenclAtomicExchange = 34,
                    OpenclAtomicCompareExchangeStrong = 35,
                    OpenclAtomicCompareExchangeWeak = 36,
                    OpenclAtomicFetchAdd = 37,
                    OpenclAtomicFetchSub = 38,
                    OpenclAtomicFetchAnd = 39,
                    OpenclAtomicFetchOr = 40,
                    OpenclAtomicFetchXor = 41,
                    OpenclAtomicFetchMin = 42,
                    OpenclAtomicFetchMax = 43,
                    AtomicFetchMin = 44,
                    AtomicFetchMax = 45
                };

                AtomicExpr(::CppSharp::CppParser::AST::AtomicExpr* native);
                AtomicExpr(::CppSharp::CppParser::AST::AtomicExpr* native, bool ownNativeInstance);
                static AtomicExpr^ __CreateInstance(::System::IntPtr native);
                static AtomicExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                AtomicExpr();

                AtomicExpr(CppSharp::Parser::AST::AtomicExpr^ _0);

                ~AtomicExpr();

                property CppSharp::Parser::AST::Expr^ Ptr
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::AST::Expr^ Order
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::AST::Expr^ Scope
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::AST::Expr^ Val1
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::AST::Expr^ OrderFail
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::AST::Expr^ Val2
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::AST::Expr^ Weak
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::AST::QualifiedType^ ValueType
                {
                    CppSharp::Parser::AST::QualifiedType^ get();
                    void set(CppSharp::Parser::AST::QualifiedType^);
                }

                property CppSharp::Parser::AST::AtomicExpr::AtomicOp Op
                {
                    CppSharp::Parser::AST::AtomicExpr::AtomicOp get();
                    void set(CppSharp::Parser::AST::AtomicExpr::AtomicOp);
                }

                property unsigned int NumSubExprs
                {
                    unsigned int get();
                    void set(unsigned int);
                }

                property bool IsVolatile
                {
                    bool get();
                    void set(bool);
                }

                property bool IsCmpXChg
                {
                    bool get();
                    void set(bool);
                }

                property bool IsOpenCL
                {
                    bool get();
                    void set(bool);
                }

                property CppSharp::Parser::SourceLocation BuiltinLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation RParenLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }
            };

            public ref class TypoExpr : CppSharp::Parser::AST::Expr
            {
            public:

                TypoExpr(::CppSharp::CppParser::AST::TypoExpr* native);
                TypoExpr(::CppSharp::CppParser::AST::TypoExpr* native, bool ownNativeInstance);
                static TypoExpr^ __CreateInstance(::System::IntPtr native);
                static TypoExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                TypoExpr();

                TypoExpr(CppSharp::Parser::AST::TypoExpr^ _0);

                ~TypoExpr();
            };

            public ref class CXXOperatorCallExpr : CppSharp::Parser::AST::CallExpr
            {
            public:

                CXXOperatorCallExpr(::CppSharp::CppParser::AST::CXXOperatorCallExpr* native);
                CXXOperatorCallExpr(::CppSharp::CppParser::AST::CXXOperatorCallExpr* native, bool ownNativeInstance);
                static CXXOperatorCallExpr^ __CreateInstance(::System::IntPtr native);
                static CXXOperatorCallExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CXXOperatorCallExpr();

                CXXOperatorCallExpr(CppSharp::Parser::AST::CXXOperatorCallExpr^ _0);

                ~CXXOperatorCallExpr();

                property CppSharp::Parser::AST::OverloadedOperatorKind Operator
                {
                    CppSharp::Parser::AST::OverloadedOperatorKind get();
                    void set(CppSharp::Parser::AST::OverloadedOperatorKind);
                }

                property bool IsAssignmentOp
                {
                    bool get();
                    void set(bool);
                }

                property bool IsInfixBinaryOp
                {
                    bool get();
                    void set(bool);
                }

                property CppSharp::Parser::SourceLocation OperatorLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property bool IsFPContractableWithinStatement
                {
                    bool get();
                    void set(bool);
                }
            };

            public ref class CXXMemberCallExpr : CppSharp::Parser::AST::CallExpr
            {
            public:

                CXXMemberCallExpr(::CppSharp::CppParser::AST::CXXMemberCallExpr* native);
                CXXMemberCallExpr(::CppSharp::CppParser::AST::CXXMemberCallExpr* native, bool ownNativeInstance);
                static CXXMemberCallExpr^ __CreateInstance(::System::IntPtr native);
                static CXXMemberCallExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CXXMemberCallExpr();

                CXXMemberCallExpr(CppSharp::Parser::AST::CXXMemberCallExpr^ _0);

                ~CXXMemberCallExpr();

                property CppSharp::Parser::AST::Expr^ ImplicitObjectArgument
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::AST::Method^ MethodDecl
                {
                    CppSharp::Parser::AST::Method^ get();
                    void set(CppSharp::Parser::AST::Method^);
                }
            };

            public ref class CUDAKernelCallExpr : CppSharp::Parser::AST::CallExpr
            {
            public:

                CUDAKernelCallExpr(::CppSharp::CppParser::AST::CUDAKernelCallExpr* native);
                CUDAKernelCallExpr(::CppSharp::CppParser::AST::CUDAKernelCallExpr* native, bool ownNativeInstance);
                static CUDAKernelCallExpr^ __CreateInstance(::System::IntPtr native);
                static CUDAKernelCallExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CUDAKernelCallExpr();

                CUDAKernelCallExpr(CppSharp::Parser::AST::CUDAKernelCallExpr^ _0);

                ~CUDAKernelCallExpr();

                property CppSharp::Parser::AST::CallExpr^ Config
                {
                    CppSharp::Parser::AST::CallExpr^ get();
                    void set(CppSharp::Parser::AST::CallExpr^);
                }
            };

            public ref class CXXNamedCastExpr : CppSharp::Parser::AST::ExplicitCastExpr
            {
            public:

                CXXNamedCastExpr(::CppSharp::CppParser::AST::CXXNamedCastExpr* native);
                CXXNamedCastExpr(::CppSharp::CppParser::AST::CXXNamedCastExpr* native, bool ownNativeInstance);
                static CXXNamedCastExpr^ __CreateInstance(::System::IntPtr native);
                static CXXNamedCastExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CXXNamedCastExpr();

                CXXNamedCastExpr(CppSharp::Parser::AST::StmtClass klass);

                CXXNamedCastExpr(CppSharp::Parser::AST::CXXNamedCastExpr^ _0);

                ~CXXNamedCastExpr();

                property System::String^ CastName
                {
                    System::String^ get();
                    void set(System::String^);
                }

                property CppSharp::Parser::SourceLocation OperatorLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation RParenLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceRange^ AngleBrackets
                {
                    CppSharp::Parser::SourceRange^ get();
                    void set(CppSharp::Parser::SourceRange^);
                }

                static operator CppSharp::Parser::AST::CXXNamedCastExpr^(CppSharp::Parser::AST::StmtClass klass);
            };

            public ref class CXXStaticCastExpr : CppSharp::Parser::AST::CXXNamedCastExpr
            {
            public:

                CXXStaticCastExpr(::CppSharp::CppParser::AST::CXXStaticCastExpr* native);
                CXXStaticCastExpr(::CppSharp::CppParser::AST::CXXStaticCastExpr* native, bool ownNativeInstance);
                static CXXStaticCastExpr^ __CreateInstance(::System::IntPtr native);
                static CXXStaticCastExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CXXStaticCastExpr();

                CXXStaticCastExpr(CppSharp::Parser::AST::CXXStaticCastExpr^ _0);

                ~CXXStaticCastExpr();
            };

            public ref class CXXDynamicCastExpr : CppSharp::Parser::AST::CXXNamedCastExpr
            {
            public:

                CXXDynamicCastExpr(::CppSharp::CppParser::AST::CXXDynamicCastExpr* native);
                CXXDynamicCastExpr(::CppSharp::CppParser::AST::CXXDynamicCastExpr* native, bool ownNativeInstance);
                static CXXDynamicCastExpr^ __CreateInstance(::System::IntPtr native);
                static CXXDynamicCastExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CXXDynamicCastExpr();

                CXXDynamicCastExpr(CppSharp::Parser::AST::CXXDynamicCastExpr^ _0);

                ~CXXDynamicCastExpr();

                property bool IsAlwaysNull
                {
                    bool get();
                    void set(bool);
                }
            };

            public ref class CXXReinterpretCastExpr : CppSharp::Parser::AST::CXXNamedCastExpr
            {
            public:

                CXXReinterpretCastExpr(::CppSharp::CppParser::AST::CXXReinterpretCastExpr* native);
                CXXReinterpretCastExpr(::CppSharp::CppParser::AST::CXXReinterpretCastExpr* native, bool ownNativeInstance);
                static CXXReinterpretCastExpr^ __CreateInstance(::System::IntPtr native);
                static CXXReinterpretCastExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CXXReinterpretCastExpr();

                CXXReinterpretCastExpr(CppSharp::Parser::AST::CXXReinterpretCastExpr^ _0);

                ~CXXReinterpretCastExpr();
            };

            public ref class CXXConstCastExpr : CppSharp::Parser::AST::CXXNamedCastExpr
            {
            public:

                CXXConstCastExpr(::CppSharp::CppParser::AST::CXXConstCastExpr* native);
                CXXConstCastExpr(::CppSharp::CppParser::AST::CXXConstCastExpr* native, bool ownNativeInstance);
                static CXXConstCastExpr^ __CreateInstance(::System::IntPtr native);
                static CXXConstCastExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CXXConstCastExpr();

                CXXConstCastExpr(CppSharp::Parser::AST::CXXConstCastExpr^ _0);

                ~CXXConstCastExpr();
            };

            public ref class UserDefinedLiteral : CppSharp::Parser::AST::CallExpr
            {
            public:

                enum class LiteralOperatorKind
                {
                    Raw = 0,
                    Template = 1,
                    Integer = 2,
                    Floating = 3,
                    String = 4,
                    Character = 5
                };

                UserDefinedLiteral(::CppSharp::CppParser::AST::UserDefinedLiteral* native);
                UserDefinedLiteral(::CppSharp::CppParser::AST::UserDefinedLiteral* native, bool ownNativeInstance);
                static UserDefinedLiteral^ __CreateInstance(::System::IntPtr native);
                static UserDefinedLiteral^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                UserDefinedLiteral();

                UserDefinedLiteral(CppSharp::Parser::AST::UserDefinedLiteral^ _0);

                ~UserDefinedLiteral();

                property CppSharp::Parser::AST::UserDefinedLiteral::LiteralOperatorKind literalOperatorKind
                {
                    CppSharp::Parser::AST::UserDefinedLiteral::LiteralOperatorKind get();
                    void set(CppSharp::Parser::AST::UserDefinedLiteral::LiteralOperatorKind);
                }

                property CppSharp::Parser::AST::Expr^ CookedLiteral
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::SourceLocation UDSuffixLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }
            };

            public ref class CXXBoolLiteralExpr : CppSharp::Parser::AST::Expr
            {
            public:

                CXXBoolLiteralExpr(::CppSharp::CppParser::AST::CXXBoolLiteralExpr* native);
                CXXBoolLiteralExpr(::CppSharp::CppParser::AST::CXXBoolLiteralExpr* native, bool ownNativeInstance);
                static CXXBoolLiteralExpr^ __CreateInstance(::System::IntPtr native);
                static CXXBoolLiteralExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CXXBoolLiteralExpr();

                CXXBoolLiteralExpr(CppSharp::Parser::AST::CXXBoolLiteralExpr^ _0);

                ~CXXBoolLiteralExpr();

                property bool Value
                {
                    bool get();
                    void set(bool);
                }

                property CppSharp::Parser::SourceLocation Location
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }
            };

            public ref class CXXNullPtrLiteralExpr : CppSharp::Parser::AST::Expr
            {
            public:

                CXXNullPtrLiteralExpr(::CppSharp::CppParser::AST::CXXNullPtrLiteralExpr* native);
                CXXNullPtrLiteralExpr(::CppSharp::CppParser::AST::CXXNullPtrLiteralExpr* native, bool ownNativeInstance);
                static CXXNullPtrLiteralExpr^ __CreateInstance(::System::IntPtr native);
                static CXXNullPtrLiteralExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CXXNullPtrLiteralExpr();

                CXXNullPtrLiteralExpr(CppSharp::Parser::AST::CXXNullPtrLiteralExpr^ _0);

                ~CXXNullPtrLiteralExpr();

                property CppSharp::Parser::SourceLocation Location
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }
            };

            public ref class CXXStdInitializerListExpr : CppSharp::Parser::AST::Expr
            {
            public:

                CXXStdInitializerListExpr(::CppSharp::CppParser::AST::CXXStdInitializerListExpr* native);
                CXXStdInitializerListExpr(::CppSharp::CppParser::AST::CXXStdInitializerListExpr* native, bool ownNativeInstance);
                static CXXStdInitializerListExpr^ __CreateInstance(::System::IntPtr native);
                static CXXStdInitializerListExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CXXStdInitializerListExpr();

                CXXStdInitializerListExpr(CppSharp::Parser::AST::CXXStdInitializerListExpr^ _0);

                ~CXXStdInitializerListExpr();

                property CppSharp::Parser::AST::Expr^ SubExpr
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }
            };

            public ref class CXXTypeidExpr : CppSharp::Parser::AST::Expr
            {
            public:

                CXXTypeidExpr(::CppSharp::CppParser::AST::CXXTypeidExpr* native);
                CXXTypeidExpr(::CppSharp::CppParser::AST::CXXTypeidExpr* native, bool ownNativeInstance);
                static CXXTypeidExpr^ __CreateInstance(::System::IntPtr native);
                static CXXTypeidExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CXXTypeidExpr();

                CXXTypeidExpr(CppSharp::Parser::AST::CXXTypeidExpr^ _0);

                ~CXXTypeidExpr();

                property CppSharp::Parser::AST::Expr^ ExprOperand
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property bool IsPotentiallyEvaluated
                {
                    bool get();
                    void set(bool);
                }

                property bool IsTypeOperand
                {
                    bool get();
                    void set(bool);
                }
            };

            public ref class MSPropertyRefExpr : CppSharp::Parser::AST::Expr
            {
            public:

                MSPropertyRefExpr(::CppSharp::CppParser::AST::MSPropertyRefExpr* native);
                MSPropertyRefExpr(::CppSharp::CppParser::AST::MSPropertyRefExpr* native, bool ownNativeInstance);
                static MSPropertyRefExpr^ __CreateInstance(::System::IntPtr native);
                static MSPropertyRefExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                MSPropertyRefExpr();

                MSPropertyRefExpr(CppSharp::Parser::AST::MSPropertyRefExpr^ _0);

                ~MSPropertyRefExpr();

                property bool IsImplicitAccess
                {
                    bool get();
                    void set(bool);
                }

                property CppSharp::Parser::AST::Expr^ BaseExpr
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property bool IsArrow
                {
                    bool get();
                    void set(bool);
                }

                property CppSharp::Parser::SourceLocation MemberLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }
            };

            public ref class MSPropertySubscriptExpr : CppSharp::Parser::AST::Expr
            {
            public:

                MSPropertySubscriptExpr(::CppSharp::CppParser::AST::MSPropertySubscriptExpr* native);
                MSPropertySubscriptExpr(::CppSharp::CppParser::AST::MSPropertySubscriptExpr* native, bool ownNativeInstance);
                static MSPropertySubscriptExpr^ __CreateInstance(::System::IntPtr native);
                static MSPropertySubscriptExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                MSPropertySubscriptExpr();

                MSPropertySubscriptExpr(CppSharp::Parser::AST::MSPropertySubscriptExpr^ _0);

                ~MSPropertySubscriptExpr();

                property CppSharp::Parser::SourceLocation RBracketLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::AST::Expr^ Base
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::AST::Expr^ Idx
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }
            };

            public ref class CXXUuidofExpr : CppSharp::Parser::AST::Expr
            {
            public:

                CXXUuidofExpr(::CppSharp::CppParser::AST::CXXUuidofExpr* native);
                CXXUuidofExpr(::CppSharp::CppParser::AST::CXXUuidofExpr* native, bool ownNativeInstance);
                static CXXUuidofExpr^ __CreateInstance(::System::IntPtr native);
                static CXXUuidofExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CXXUuidofExpr();

                CXXUuidofExpr(CppSharp::Parser::AST::CXXUuidofExpr^ _0);

                ~CXXUuidofExpr();

                property CppSharp::Parser::AST::Expr^ ExprOperand
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property System::String^ UuidStr
                {
                    System::String^ get();
                    void set(System::String^);
                }

                property bool IsTypeOperand
                {
                    bool get();
                    void set(bool);
                }
            };

            public ref class CXXThisExpr : CppSharp::Parser::AST::Expr
            {
            public:

                CXXThisExpr(::CppSharp::CppParser::AST::CXXThisExpr* native);
                CXXThisExpr(::CppSharp::CppParser::AST::CXXThisExpr* native, bool ownNativeInstance);
                static CXXThisExpr^ __CreateInstance(::System::IntPtr native);
                static CXXThisExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CXXThisExpr();

                CXXThisExpr(CppSharp::Parser::AST::CXXThisExpr^ _0);

                ~CXXThisExpr();

                property CppSharp::Parser::SourceLocation Location
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property bool Implicit
                {
                    bool get();
                    void set(bool);
                }
            };

            public ref class CXXThrowExpr : CppSharp::Parser::AST::Expr
            {
            public:

                CXXThrowExpr(::CppSharp::CppParser::AST::CXXThrowExpr* native);
                CXXThrowExpr(::CppSharp::CppParser::AST::CXXThrowExpr* native, bool ownNativeInstance);
                static CXXThrowExpr^ __CreateInstance(::System::IntPtr native);
                static CXXThrowExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CXXThrowExpr();

                CXXThrowExpr(CppSharp::Parser::AST::CXXThrowExpr^ _0);

                ~CXXThrowExpr();

                property CppSharp::Parser::AST::Expr^ SubExpr
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::SourceLocation ThrowLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property bool IsThrownVariableInScope
                {
                    bool get();
                    void set(bool);
                }
            };

            public ref class CXXDefaultArgExpr : CppSharp::Parser::AST::Expr
            {
            public:

                CXXDefaultArgExpr(::CppSharp::CppParser::AST::CXXDefaultArgExpr* native);
                CXXDefaultArgExpr(::CppSharp::CppParser::AST::CXXDefaultArgExpr* native, bool ownNativeInstance);
                static CXXDefaultArgExpr^ __CreateInstance(::System::IntPtr native);
                static CXXDefaultArgExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CXXDefaultArgExpr();

                CXXDefaultArgExpr(CppSharp::Parser::AST::CXXDefaultArgExpr^ _0);

                ~CXXDefaultArgExpr();

                property CppSharp::Parser::AST::Expr^ Expr
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::SourceLocation UsedLocation
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }
            };

            public ref class CXXDefaultInitExpr : CppSharp::Parser::AST::Expr
            {
            public:

                CXXDefaultInitExpr(::CppSharp::CppParser::AST::CXXDefaultInitExpr* native);
                CXXDefaultInitExpr(::CppSharp::CppParser::AST::CXXDefaultInitExpr* native, bool ownNativeInstance);
                static CXXDefaultInitExpr^ __CreateInstance(::System::IntPtr native);
                static CXXDefaultInitExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CXXDefaultInitExpr();

                CXXDefaultInitExpr(CppSharp::Parser::AST::CXXDefaultInitExpr^ _0);

                ~CXXDefaultInitExpr();

                property CppSharp::Parser::AST::Field^ Field
                {
                    CppSharp::Parser::AST::Field^ get();
                    void set(CppSharp::Parser::AST::Field^);
                }

                property CppSharp::Parser::AST::Expr^ Expr
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }
            };

            public ref class CXXBindTemporaryExpr : CppSharp::Parser::AST::Expr
            {
            public:

                CXXBindTemporaryExpr(::CppSharp::CppParser::AST::CXXBindTemporaryExpr* native);
                CXXBindTemporaryExpr(::CppSharp::CppParser::AST::CXXBindTemporaryExpr* native, bool ownNativeInstance);
                static CXXBindTemporaryExpr^ __CreateInstance(::System::IntPtr native);
                static CXXBindTemporaryExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CXXBindTemporaryExpr();

                CXXBindTemporaryExpr(CppSharp::Parser::AST::CXXBindTemporaryExpr^ _0);

                ~CXXBindTemporaryExpr();

                property CppSharp::Parser::AST::Expr^ SubExpr
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }
            };

            public ref class CXXConstructExpr : CppSharp::Parser::AST::Expr
            {
            public:

                enum class ConstructionKind
                {
                    Complete = 0,
                    NonVirtualBase = 1,
                    VirtualBase = 2,
                    Delegating = 3
                };

                CXXConstructExpr(::CppSharp::CppParser::AST::CXXConstructExpr* native);
                CXXConstructExpr(::CppSharp::CppParser::AST::CXXConstructExpr* native, bool ownNativeInstance);
                static CXXConstructExpr^ __CreateInstance(::System::IntPtr native);
                static CXXConstructExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CXXConstructExpr();

                CXXConstructExpr(CppSharp::Parser::AST::StmtClass klass);

                CXXConstructExpr(CppSharp::Parser::AST::CXXConstructExpr^ _0);

                ~CXXConstructExpr();

                property System::Collections::Generic::List<CppSharp::Parser::AST::Expr^>^ Arguments
                {
                    System::Collections::Generic::List<CppSharp::Parser::AST::Expr^>^ get();
                    void set(System::Collections::Generic::List<CppSharp::Parser::AST::Expr^>^);
                }

                property CppSharp::Parser::SourceLocation Location
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property bool Elidable
                {
                    bool get();
                    void set(bool);
                }

                property bool HadMultipleCandidates
                {
                    bool get();
                    void set(bool);
                }

                property bool ListInitialization
                {
                    bool get();
                    void set(bool);
                }

                property bool StdInitListInitialization
                {
                    bool get();
                    void set(bool);
                }

                property bool RequiresZeroInitialization
                {
                    bool get();
                    void set(bool);
                }

                property CppSharp::Parser::SourceRange^ ParenOrBraceRange
                {
                    CppSharp::Parser::SourceRange^ get();
                    void set(CppSharp::Parser::SourceRange^);
                }

                property unsigned int NumArgs
                {
                    unsigned int get();
                    void set(unsigned int);
                }

                property unsigned int GetargumentsCount
                {
                    unsigned int get();
                }

                CppSharp::Parser::AST::Expr^ Getarguments(unsigned int i);

                void Addarguments(CppSharp::Parser::AST::Expr^ s);

                void Cleararguments();

                static operator CppSharp::Parser::AST::CXXConstructExpr^(CppSharp::Parser::AST::StmtClass klass);
            };

            public ref class CXXInheritedCtorInitExpr : CppSharp::Parser::AST::Expr
            {
            public:

                CXXInheritedCtorInitExpr(::CppSharp::CppParser::AST::CXXInheritedCtorInitExpr* native);
                CXXInheritedCtorInitExpr(::CppSharp::CppParser::AST::CXXInheritedCtorInitExpr* native, bool ownNativeInstance);
                static CXXInheritedCtorInitExpr^ __CreateInstance(::System::IntPtr native);
                static CXXInheritedCtorInitExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CXXInheritedCtorInitExpr();

                CXXInheritedCtorInitExpr(CppSharp::Parser::AST::CXXInheritedCtorInitExpr^ _0);

                ~CXXInheritedCtorInitExpr();

                property bool ConstructsVBase
                {
                    bool get();
                    void set(bool);
                }

                property bool InheritedFromVBase
                {
                    bool get();
                    void set(bool);
                }

                property CppSharp::Parser::SourceLocation Location
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }
            };

            public ref class CXXFunctionalCastExpr : CppSharp::Parser::AST::ExplicitCastExpr
            {
            public:

                CXXFunctionalCastExpr(::CppSharp::CppParser::AST::CXXFunctionalCastExpr* native);
                CXXFunctionalCastExpr(::CppSharp::CppParser::AST::CXXFunctionalCastExpr* native, bool ownNativeInstance);
                static CXXFunctionalCastExpr^ __CreateInstance(::System::IntPtr native);
                static CXXFunctionalCastExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CXXFunctionalCastExpr();

                CXXFunctionalCastExpr(CppSharp::Parser::AST::CXXFunctionalCastExpr^ _0);

                ~CXXFunctionalCastExpr();

                property CppSharp::Parser::SourceLocation LParenLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation RParenLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property bool IsListInitialization
                {
                    bool get();
                    void set(bool);
                }
            };

            public ref class CXXTemporaryObjectExpr : CppSharp::Parser::AST::CXXConstructExpr
            {
            public:

                CXXTemporaryObjectExpr(::CppSharp::CppParser::AST::CXXTemporaryObjectExpr* native);
                CXXTemporaryObjectExpr(::CppSharp::CppParser::AST::CXXTemporaryObjectExpr* native, bool ownNativeInstance);
                static CXXTemporaryObjectExpr^ __CreateInstance(::System::IntPtr native);
                static CXXTemporaryObjectExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CXXTemporaryObjectExpr();

                CXXTemporaryObjectExpr(CppSharp::Parser::AST::CXXTemporaryObjectExpr^ _0);

                ~CXXTemporaryObjectExpr();
            };

            public ref class LambdaExpr : CppSharp::Parser::AST::Expr
            {
            public:

                LambdaExpr(::CppSharp::CppParser::AST::LambdaExpr* native);
                LambdaExpr(::CppSharp::CppParser::AST::LambdaExpr* native, bool ownNativeInstance);
                static LambdaExpr^ __CreateInstance(::System::IntPtr native);
                static LambdaExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                LambdaExpr();

                LambdaExpr(CppSharp::Parser::AST::LambdaExpr^ _0);

                ~LambdaExpr();

                property System::Collections::Generic::List<CppSharp::Parser::AST::Expr^>^ CaptureInits
                {
                    System::Collections::Generic::List<CppSharp::Parser::AST::Expr^>^ get();
                    void set(System::Collections::Generic::List<CppSharp::Parser::AST::Expr^>^);
                }

                property CppSharp::Parser::SourceLocation CaptureDefaultLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property unsigned int CaptureSize
                {
                    unsigned int get();
                    void set(unsigned int);
                }

                property CppSharp::Parser::SourceRange^ IntroducerRange
                {
                    CppSharp::Parser::SourceRange^ get();
                    void set(CppSharp::Parser::SourceRange^);
                }

                property CppSharp::Parser::AST::Method^ CallOperator
                {
                    CppSharp::Parser::AST::Method^ get();
                    void set(CppSharp::Parser::AST::Method^);
                }

                property bool IsGenericLambda
                {
                    bool get();
                    void set(bool);
                }

                property CppSharp::Parser::AST::CompoundStmt^ Body
                {
                    CppSharp::Parser::AST::CompoundStmt^ get();
                    void set(CppSharp::Parser::AST::CompoundStmt^);
                }

                property bool IsMutable
                {
                    bool get();
                    void set(bool);
                }

                property bool HasExplicitParameters
                {
                    bool get();
                    void set(bool);
                }

                property bool HasExplicitResultType
                {
                    bool get();
                    void set(bool);
                }

                property unsigned int GetcaptureInitsCount
                {
                    unsigned int get();
                }

                CppSharp::Parser::AST::Expr^ GetcaptureInits(unsigned int i);

                void AddcaptureInits(CppSharp::Parser::AST::Expr^ s);

                void ClearcaptureInits();
            };

            public ref class CXXScalarValueInitExpr : CppSharp::Parser::AST::Expr
            {
            public:

                CXXScalarValueInitExpr(::CppSharp::CppParser::AST::CXXScalarValueInitExpr* native);
                CXXScalarValueInitExpr(::CppSharp::CppParser::AST::CXXScalarValueInitExpr* native, bool ownNativeInstance);
                static CXXScalarValueInitExpr^ __CreateInstance(::System::IntPtr native);
                static CXXScalarValueInitExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CXXScalarValueInitExpr();

                CXXScalarValueInitExpr(CppSharp::Parser::AST::CXXScalarValueInitExpr^ _0);

                ~CXXScalarValueInitExpr();

                property CppSharp::Parser::SourceLocation RParenLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }
            };

            public ref class CXXNewExpr : CppSharp::Parser::AST::Expr
            {
            public:

                enum class InitializationStyle
                {
                    NoInit = 0,
                    CallInit = 1,
                    ListInit = 2
                };

                CXXNewExpr(::CppSharp::CppParser::AST::CXXNewExpr* native);
                CXXNewExpr(::CppSharp::CppParser::AST::CXXNewExpr* native, bool ownNativeInstance);
                static CXXNewExpr^ __CreateInstance(::System::IntPtr native);
                static CXXNewExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CXXNewExpr();

                CXXNewExpr(CppSharp::Parser::AST::CXXNewExpr^ _0);

                ~CXXNewExpr();

                property System::Collections::Generic::List<CppSharp::Parser::AST::Expr^>^ PlacementArguments
                {
                    System::Collections::Generic::List<CppSharp::Parser::AST::Expr^>^ get();
                    void set(System::Collections::Generic::List<CppSharp::Parser::AST::Expr^>^);
                }

                property CppSharp::Parser::AST::Function^ OperatorNew
                {
                    CppSharp::Parser::AST::Function^ get();
                    void set(CppSharp::Parser::AST::Function^);
                }

                property CppSharp::Parser::AST::Function^ OperatorDelete
                {
                    CppSharp::Parser::AST::Function^ get();
                    void set(CppSharp::Parser::AST::Function^);
                }

                property CppSharp::Parser::AST::QualifiedType^ AllocatedType
                {
                    CppSharp::Parser::AST::QualifiedType^ get();
                    void set(CppSharp::Parser::AST::QualifiedType^);
                }

                property bool IsArray
                {
                    bool get();
                    void set(bool);
                }

                property CppSharp::Parser::AST::Expr^ ArraySize
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property unsigned int NumPlacementArgs
                {
                    unsigned int get();
                    void set(unsigned int);
                }

                property bool IsParenTypeId
                {
                    bool get();
                    void set(bool);
                }

                property CppSharp::Parser::SourceRange^ TypeIdParens
                {
                    CppSharp::Parser::SourceRange^ get();
                    void set(CppSharp::Parser::SourceRange^);
                }

                property bool IsGlobalNew
                {
                    bool get();
                    void set(bool);
                }

                property bool HasInitializer
                {
                    bool get();
                    void set(bool);
                }

                property CppSharp::Parser::AST::CXXNewExpr::InitializationStyle initializationStyle
                {
                    CppSharp::Parser::AST::CXXNewExpr::InitializationStyle get();
                    void set(CppSharp::Parser::AST::CXXNewExpr::InitializationStyle);
                }

                property CppSharp::Parser::AST::Expr^ Initializer
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::AST::CXXConstructExpr^ ConstructExpr
                {
                    CppSharp::Parser::AST::CXXConstructExpr^ get();
                    void set(CppSharp::Parser::AST::CXXConstructExpr^);
                }

                property CppSharp::Parser::SourceRange^ DirectInitRange
                {
                    CppSharp::Parser::SourceRange^ get();
                    void set(CppSharp::Parser::SourceRange^);
                }

                property unsigned int GetplacementArgumentsCount
                {
                    unsigned int get();
                }

                CppSharp::Parser::AST::Expr^ GetplacementArguments(unsigned int i);

                void AddplacementArguments(CppSharp::Parser::AST::Expr^ s);

                void ClearplacementArguments();
            };

            public ref class CXXDeleteExpr : CppSharp::Parser::AST::Expr
            {
            public:

                CXXDeleteExpr(::CppSharp::CppParser::AST::CXXDeleteExpr* native);
                CXXDeleteExpr(::CppSharp::CppParser::AST::CXXDeleteExpr* native, bool ownNativeInstance);
                static CXXDeleteExpr^ __CreateInstance(::System::IntPtr native);
                static CXXDeleteExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CXXDeleteExpr();

                CXXDeleteExpr(CppSharp::Parser::AST::CXXDeleteExpr^ _0);

                ~CXXDeleteExpr();

                property bool IsGlobalDelete
                {
                    bool get();
                    void set(bool);
                }

                property bool IsArrayForm
                {
                    bool get();
                    void set(bool);
                }

                property bool IsArrayFormAsWritten
                {
                    bool get();
                    void set(bool);
                }

                property CppSharp::Parser::AST::Function^ OperatorDelete
                {
                    CppSharp::Parser::AST::Function^ get();
                    void set(CppSharp::Parser::AST::Function^);
                }

                property CppSharp::Parser::AST::Expr^ Argument
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::AST::QualifiedType^ DestroyedType
                {
                    CppSharp::Parser::AST::QualifiedType^ get();
                    void set(CppSharp::Parser::AST::QualifiedType^);
                }
            };

            public ref class CXXPseudoDestructorExpr : CppSharp::Parser::AST::Expr
            {
            public:

                CXXPseudoDestructorExpr(::CppSharp::CppParser::AST::CXXPseudoDestructorExpr* native);
                CXXPseudoDestructorExpr(::CppSharp::CppParser::AST::CXXPseudoDestructorExpr* native, bool ownNativeInstance);
                static CXXPseudoDestructorExpr^ __CreateInstance(::System::IntPtr native);
                static CXXPseudoDestructorExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CXXPseudoDestructorExpr();

                CXXPseudoDestructorExpr(CppSharp::Parser::AST::CXXPseudoDestructorExpr^ _0);

                ~CXXPseudoDestructorExpr();

                property CppSharp::Parser::AST::Expr^ Base
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property bool HasQualifier
                {
                    bool get();
                    void set(bool);
                }

                property bool IsArrow
                {
                    bool get();
                    void set(bool);
                }

                property CppSharp::Parser::SourceLocation OperatorLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation ColonColonLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation TildeLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::AST::QualifiedType^ DestroyedType
                {
                    CppSharp::Parser::AST::QualifiedType^ get();
                    void set(CppSharp::Parser::AST::QualifiedType^);
                }

                property CppSharp::Parser::SourceLocation DestroyedTypeLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }
            };

            public ref class TypeTraitExpr : CppSharp::Parser::AST::Expr
            {
            public:

                TypeTraitExpr(::CppSharp::CppParser::AST::TypeTraitExpr* native);
                TypeTraitExpr(::CppSharp::CppParser::AST::TypeTraitExpr* native, bool ownNativeInstance);
                static TypeTraitExpr^ __CreateInstance(::System::IntPtr native);
                static TypeTraitExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                TypeTraitExpr();

                TypeTraitExpr(CppSharp::Parser::AST::TypeTraitExpr^ _0);

                ~TypeTraitExpr();

                property bool Value
                {
                    bool get();
                    void set(bool);
                }

                property unsigned int NumArgs
                {
                    unsigned int get();
                    void set(unsigned int);
                }
            };

            public ref class ArrayTypeTraitExpr : CppSharp::Parser::AST::Expr
            {
            public:

                ArrayTypeTraitExpr(::CppSharp::CppParser::AST::ArrayTypeTraitExpr* native);
                ArrayTypeTraitExpr(::CppSharp::CppParser::AST::ArrayTypeTraitExpr* native, bool ownNativeInstance);
                static ArrayTypeTraitExpr^ __CreateInstance(::System::IntPtr native);
                static ArrayTypeTraitExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                ArrayTypeTraitExpr();

                ArrayTypeTraitExpr(CppSharp::Parser::AST::ArrayTypeTraitExpr^ _0);

                ~ArrayTypeTraitExpr();

                property CppSharp::Parser::AST::QualifiedType^ QueriedType
                {
                    CppSharp::Parser::AST::QualifiedType^ get();
                    void set(CppSharp::Parser::AST::QualifiedType^);
                }

                property unsigned long long Value
                {
                    unsigned long long get();
                    void set(unsigned long long);
                }

                property CppSharp::Parser::AST::Expr^ DimensionExpression
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }
            };

            public ref class ExpressionTraitExpr : CppSharp::Parser::AST::Expr
            {
            public:

                ExpressionTraitExpr(::CppSharp::CppParser::AST::ExpressionTraitExpr* native);
                ExpressionTraitExpr(::CppSharp::CppParser::AST::ExpressionTraitExpr* native, bool ownNativeInstance);
                static ExpressionTraitExpr^ __CreateInstance(::System::IntPtr native);
                static ExpressionTraitExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                ExpressionTraitExpr();

                ExpressionTraitExpr(CppSharp::Parser::AST::ExpressionTraitExpr^ _0);

                ~ExpressionTraitExpr();

                property CppSharp::Parser::AST::Expr^ QueriedExpression
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property bool Value
                {
                    bool get();
                    void set(bool);
                }
            };

            public ref class OverloadExpr : CppSharp::Parser::AST::Expr
            {
            public:

                ref class FindResult : ICppInstance
                {
                public:

                    property ::CppSharp::CppParser::AST::OverloadExpr::FindResult* NativePtr;
                    property System::IntPtr __Instance
                    {
                        virtual System::IntPtr get();
                        virtual void set(System::IntPtr instance);
                    }

                    FindResult(::CppSharp::CppParser::AST::OverloadExpr::FindResult* native);
                    FindResult(::CppSharp::CppParser::AST::OverloadExpr::FindResult* native, bool ownNativeInstance);
                    static FindResult^ __CreateInstance(::System::IntPtr native);
                    static FindResult^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                    FindResult();

                    FindResult(CppSharp::Parser::AST::OverloadExpr::FindResult^ _0);

                    ~FindResult();

                protected:
                    bool __ownsNativeInstance;
                };

                OverloadExpr(::CppSharp::CppParser::AST::OverloadExpr* native);
                OverloadExpr(::CppSharp::CppParser::AST::OverloadExpr* native, bool ownNativeInstance);
                static OverloadExpr^ __CreateInstance(::System::IntPtr native);
                static OverloadExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                OverloadExpr();

                OverloadExpr(CppSharp::Parser::AST::StmtClass klass);

                OverloadExpr(CppSharp::Parser::AST::OverloadExpr^ _0);

                ~OverloadExpr();

                property unsigned int NumDecls
                {
                    unsigned int get();
                    void set(unsigned int);
                }

                property CppSharp::Parser::SourceLocation NameLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation TemplateKeywordLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation LAngleLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation RAngleLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property bool HasTemplateKeyword
                {
                    bool get();
                    void set(bool);
                }

                property bool HasExplicitTemplateArgs
                {
                    bool get();
                    void set(bool);
                }

                property unsigned int NumTemplateArgs
                {
                    unsigned int get();
                    void set(unsigned int);
                }

                static operator CppSharp::Parser::AST::OverloadExpr^(CppSharp::Parser::AST::StmtClass klass);
            };

            public ref class UnresolvedLookupExpr : CppSharp::Parser::AST::OverloadExpr
            {
            public:

                UnresolvedLookupExpr(::CppSharp::CppParser::AST::UnresolvedLookupExpr* native);
                UnresolvedLookupExpr(::CppSharp::CppParser::AST::UnresolvedLookupExpr* native, bool ownNativeInstance);
                static UnresolvedLookupExpr^ __CreateInstance(::System::IntPtr native);
                static UnresolvedLookupExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                UnresolvedLookupExpr();

                UnresolvedLookupExpr(CppSharp::Parser::AST::UnresolvedLookupExpr^ _0);

                ~UnresolvedLookupExpr();

                property bool RequiresADL
                {
                    bool get();
                    void set(bool);
                }

                property bool IsOverloaded
                {
                    bool get();
                    void set(bool);
                }
            };

            public ref class DependentScopeDeclRefExpr : CppSharp::Parser::AST::Expr
            {
            public:

                DependentScopeDeclRefExpr(::CppSharp::CppParser::AST::DependentScopeDeclRefExpr* native);
                DependentScopeDeclRefExpr(::CppSharp::CppParser::AST::DependentScopeDeclRefExpr* native, bool ownNativeInstance);
                static DependentScopeDeclRefExpr^ __CreateInstance(::System::IntPtr native);
                static DependentScopeDeclRefExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                DependentScopeDeclRefExpr();

                DependentScopeDeclRefExpr(CppSharp::Parser::AST::DependentScopeDeclRefExpr^ _0);

                ~DependentScopeDeclRefExpr();

                property CppSharp::Parser::SourceLocation Location
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation TemplateKeywordLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation LAngleLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation RAngleLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property bool HasTemplateKeyword
                {
                    bool get();
                    void set(bool);
                }

                property bool HasExplicitTemplateArgs
                {
                    bool get();
                    void set(bool);
                }

                property unsigned int NumTemplateArgs
                {
                    unsigned int get();
                    void set(unsigned int);
                }
            };

            public ref class ExprWithCleanups : CppSharp::Parser::AST::FullExpr
            {
            public:

                ExprWithCleanups(::CppSharp::CppParser::AST::ExprWithCleanups* native);
                ExprWithCleanups(::CppSharp::CppParser::AST::ExprWithCleanups* native, bool ownNativeInstance);
                static ExprWithCleanups^ __CreateInstance(::System::IntPtr native);
                static ExprWithCleanups^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                ExprWithCleanups();

                ExprWithCleanups(CppSharp::Parser::AST::ExprWithCleanups^ _0);

                ~ExprWithCleanups();

                property unsigned int NumObjects
                {
                    unsigned int get();
                    void set(unsigned int);
                }

                property bool CleanupsHaveSideEffects
                {
                    bool get();
                    void set(bool);
                }
            };

            public ref class CXXUnresolvedConstructExpr : CppSharp::Parser::AST::Expr
            {
            public:

                CXXUnresolvedConstructExpr(::CppSharp::CppParser::AST::CXXUnresolvedConstructExpr* native);
                CXXUnresolvedConstructExpr(::CppSharp::CppParser::AST::CXXUnresolvedConstructExpr* native, bool ownNativeInstance);
                static CXXUnresolvedConstructExpr^ __CreateInstance(::System::IntPtr native);
                static CXXUnresolvedConstructExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CXXUnresolvedConstructExpr();

                CXXUnresolvedConstructExpr(CppSharp::Parser::AST::CXXUnresolvedConstructExpr^ _0);

                ~CXXUnresolvedConstructExpr();

                property System::Collections::Generic::List<CppSharp::Parser::AST::Expr^>^ Arguments
                {
                    System::Collections::Generic::List<CppSharp::Parser::AST::Expr^>^ get();
                    void set(System::Collections::Generic::List<CppSharp::Parser::AST::Expr^>^);
                }

                property CppSharp::Parser::SourceLocation LParenLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation RParenLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::AST::QualifiedType^ TypeAsWritten
                {
                    CppSharp::Parser::AST::QualifiedType^ get();
                    void set(CppSharp::Parser::AST::QualifiedType^);
                }

                property bool IsListInitialization
                {
                    bool get();
                    void set(bool);
                }

                property unsigned int ArgSize
                {
                    unsigned int get();
                    void set(unsigned int);
                }

                property unsigned int GetargumentsCount
                {
                    unsigned int get();
                }

                CppSharp::Parser::AST::Expr^ Getarguments(unsigned int i);

                void Addarguments(CppSharp::Parser::AST::Expr^ s);

                void Cleararguments();
            };

            public ref class CXXDependentScopeMemberExpr : CppSharp::Parser::AST::Expr
            {
            public:

                CXXDependentScopeMemberExpr(::CppSharp::CppParser::AST::CXXDependentScopeMemberExpr* native);
                CXXDependentScopeMemberExpr(::CppSharp::CppParser::AST::CXXDependentScopeMemberExpr* native, bool ownNativeInstance);
                static CXXDependentScopeMemberExpr^ __CreateInstance(::System::IntPtr native);
                static CXXDependentScopeMemberExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CXXDependentScopeMemberExpr();

                CXXDependentScopeMemberExpr(CppSharp::Parser::AST::CXXDependentScopeMemberExpr^ _0);

                ~CXXDependentScopeMemberExpr();

                property bool IsImplicitAccess
                {
                    bool get();
                    void set(bool);
                }

                property CppSharp::Parser::AST::Expr^ Base
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::AST::QualifiedType^ BaseType
                {
                    CppSharp::Parser::AST::QualifiedType^ get();
                    void set(CppSharp::Parser::AST::QualifiedType^);
                }

                property bool IsArrow
                {
                    bool get();
                    void set(bool);
                }

                property CppSharp::Parser::SourceLocation OperatorLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::AST::Declaration^ FirstQualifierFoundInScope
                {
                    CppSharp::Parser::AST::Declaration^ get();
                    void set(CppSharp::Parser::AST::Declaration^);
                }

                property CppSharp::Parser::SourceLocation MemberLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation TemplateKeywordLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation LAngleLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation RAngleLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property bool HasTemplateKeyword
                {
                    bool get();
                    void set(bool);
                }

                property bool HasExplicitTemplateArgs
                {
                    bool get();
                    void set(bool);
                }

                property unsigned int NumTemplateArgs
                {
                    unsigned int get();
                    void set(unsigned int);
                }
            };

            public ref class UnresolvedMemberExpr : CppSharp::Parser::AST::OverloadExpr
            {
            public:

                UnresolvedMemberExpr(::CppSharp::CppParser::AST::UnresolvedMemberExpr* native);
                UnresolvedMemberExpr(::CppSharp::CppParser::AST::UnresolvedMemberExpr* native, bool ownNativeInstance);
                static UnresolvedMemberExpr^ __CreateInstance(::System::IntPtr native);
                static UnresolvedMemberExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                UnresolvedMemberExpr();

                UnresolvedMemberExpr(CppSharp::Parser::AST::UnresolvedMemberExpr^ _0);

                ~UnresolvedMemberExpr();

                property bool IsImplicitAccess
                {
                    bool get();
                    void set(bool);
                }

                property CppSharp::Parser::AST::Expr^ Base
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::AST::QualifiedType^ BaseType
                {
                    CppSharp::Parser::AST::QualifiedType^ get();
                    void set(CppSharp::Parser::AST::QualifiedType^);
                }

                property bool HasUnresolvedUsing
                {
                    bool get();
                    void set(bool);
                }

                property bool IsArrow
                {
                    bool get();
                    void set(bool);
                }

                property CppSharp::Parser::SourceLocation OperatorLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation MemberLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }
            };

            public ref class CXXNoexceptExpr : CppSharp::Parser::AST::Expr
            {
            public:

                CXXNoexceptExpr(::CppSharp::CppParser::AST::CXXNoexceptExpr* native);
                CXXNoexceptExpr(::CppSharp::CppParser::AST::CXXNoexceptExpr* native, bool ownNativeInstance);
                static CXXNoexceptExpr^ __CreateInstance(::System::IntPtr native);
                static CXXNoexceptExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CXXNoexceptExpr();

                CXXNoexceptExpr(CppSharp::Parser::AST::CXXNoexceptExpr^ _0);

                ~CXXNoexceptExpr();

                property CppSharp::Parser::AST::Expr^ Operand
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property bool Value
                {
                    bool get();
                    void set(bool);
                }
            };

            public ref class PackExpansionExpr : CppSharp::Parser::AST::Expr
            {
            public:

                PackExpansionExpr(::CppSharp::CppParser::AST::PackExpansionExpr* native);
                PackExpansionExpr(::CppSharp::CppParser::AST::PackExpansionExpr* native, bool ownNativeInstance);
                static PackExpansionExpr^ __CreateInstance(::System::IntPtr native);
                static PackExpansionExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                PackExpansionExpr();

                PackExpansionExpr(CppSharp::Parser::AST::PackExpansionExpr^ _0);

                ~PackExpansionExpr();

                property CppSharp::Parser::AST::Expr^ Pattern
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::SourceLocation EllipsisLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }
            };

            public ref class SizeOfPackExpr : CppSharp::Parser::AST::Expr
            {
            public:

                SizeOfPackExpr(::CppSharp::CppParser::AST::SizeOfPackExpr* native);
                SizeOfPackExpr(::CppSharp::CppParser::AST::SizeOfPackExpr* native, bool ownNativeInstance);
                static SizeOfPackExpr^ __CreateInstance(::System::IntPtr native);
                static SizeOfPackExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                SizeOfPackExpr();

                SizeOfPackExpr(CppSharp::Parser::AST::SizeOfPackExpr^ _0);

                ~SizeOfPackExpr();

                property CppSharp::Parser::SourceLocation OperatorLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation PackLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::SourceLocation RParenLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::AST::Declaration^ Pack
                {
                    CppSharp::Parser::AST::Declaration^ get();
                    void set(CppSharp::Parser::AST::Declaration^);
                }

                property unsigned int PackLength
                {
                    unsigned int get();
                    void set(unsigned int);
                }

                property bool IsPartiallySubstituted
                {
                    bool get();
                    void set(bool);
                }
            };

            public ref class SubstNonTypeTemplateParmExpr : CppSharp::Parser::AST::Expr
            {
            public:

                SubstNonTypeTemplateParmExpr(::CppSharp::CppParser::AST::SubstNonTypeTemplateParmExpr* native);
                SubstNonTypeTemplateParmExpr(::CppSharp::CppParser::AST::SubstNonTypeTemplateParmExpr* native, bool ownNativeInstance);
                static SubstNonTypeTemplateParmExpr^ __CreateInstance(::System::IntPtr native);
                static SubstNonTypeTemplateParmExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                SubstNonTypeTemplateParmExpr();

                SubstNonTypeTemplateParmExpr(CppSharp::Parser::AST::SubstNonTypeTemplateParmExpr^ _0);

                ~SubstNonTypeTemplateParmExpr();

                property CppSharp::Parser::SourceLocation NameLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::AST::Expr^ Replacement
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }
            };

            public ref class SubstNonTypeTemplateParmPackExpr : CppSharp::Parser::AST::Expr
            {
            public:

                SubstNonTypeTemplateParmPackExpr(::CppSharp::CppParser::AST::SubstNonTypeTemplateParmPackExpr* native);
                SubstNonTypeTemplateParmPackExpr(::CppSharp::CppParser::AST::SubstNonTypeTemplateParmPackExpr* native, bool ownNativeInstance);
                static SubstNonTypeTemplateParmPackExpr^ __CreateInstance(::System::IntPtr native);
                static SubstNonTypeTemplateParmPackExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                SubstNonTypeTemplateParmPackExpr();

                SubstNonTypeTemplateParmPackExpr(CppSharp::Parser::AST::SubstNonTypeTemplateParmPackExpr^ _0);

                ~SubstNonTypeTemplateParmPackExpr();

                property CppSharp::Parser::SourceLocation ParameterPackLocation
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::AST::TemplateArgument^ ArgumentPack
                {
                    CppSharp::Parser::AST::TemplateArgument^ get();
                    void set(CppSharp::Parser::AST::TemplateArgument^);
                }
            };

            public ref class FunctionParmPackExpr : CppSharp::Parser::AST::Expr
            {
            public:

                FunctionParmPackExpr(::CppSharp::CppParser::AST::FunctionParmPackExpr* native);
                FunctionParmPackExpr(::CppSharp::CppParser::AST::FunctionParmPackExpr* native, bool ownNativeInstance);
                static FunctionParmPackExpr^ __CreateInstance(::System::IntPtr native);
                static FunctionParmPackExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                FunctionParmPackExpr();

                FunctionParmPackExpr(CppSharp::Parser::AST::FunctionParmPackExpr^ _0);

                ~FunctionParmPackExpr();

                property CppSharp::Parser::SourceLocation ParameterPackLocation
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property unsigned int NumExpansions
                {
                    unsigned int get();
                    void set(unsigned int);
                }
            };

            public ref class MaterializeTemporaryExpr : CppSharp::Parser::AST::Expr
            {
            public:

                ref class ExtraState : ICppInstance
                {
                public:

                    property ::CppSharp::CppParser::AST::MaterializeTemporaryExpr::ExtraState* NativePtr;
                    property System::IntPtr __Instance
                    {
                        virtual System::IntPtr get();
                        virtual void set(System::IntPtr instance);
                    }

                    ExtraState(::CppSharp::CppParser::AST::MaterializeTemporaryExpr::ExtraState* native);
                    ExtraState(::CppSharp::CppParser::AST::MaterializeTemporaryExpr::ExtraState* native, bool ownNativeInstance);
                    static ExtraState^ __CreateInstance(::System::IntPtr native);
                    static ExtraState^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                    ExtraState();

                    ExtraState(CppSharp::Parser::AST::MaterializeTemporaryExpr::ExtraState^ _0);

                    ~ExtraState();

                protected:
                    bool __ownsNativeInstance;
                };

                MaterializeTemporaryExpr(::CppSharp::CppParser::AST::MaterializeTemporaryExpr* native);
                MaterializeTemporaryExpr(::CppSharp::CppParser::AST::MaterializeTemporaryExpr* native, bool ownNativeInstance);
                static MaterializeTemporaryExpr^ __CreateInstance(::System::IntPtr native);
                static MaterializeTemporaryExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                MaterializeTemporaryExpr();

                MaterializeTemporaryExpr(CppSharp::Parser::AST::MaterializeTemporaryExpr^ _0);

                ~MaterializeTemporaryExpr();

                property CppSharp::Parser::AST::Stmt^ Temporary
                {
                    CppSharp::Parser::AST::Stmt^ get();
                    void set(CppSharp::Parser::AST::Stmt^);
                }

                property CppSharp::Parser::AST::Expr^ TemporaryExpr
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property unsigned int ManglingNumber
                {
                    unsigned int get();
                    void set(unsigned int);
                }

                property bool IsBoundToLvalueReference
                {
                    bool get();
                    void set(bool);
                }
            };

            public ref class CXXFoldExpr : CppSharp::Parser::AST::Expr
            {
            public:

                CXXFoldExpr(::CppSharp::CppParser::AST::CXXFoldExpr* native);
                CXXFoldExpr(::CppSharp::CppParser::AST::CXXFoldExpr* native, bool ownNativeInstance);
                static CXXFoldExpr^ __CreateInstance(::System::IntPtr native);
                static CXXFoldExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CXXFoldExpr();

                CXXFoldExpr(CppSharp::Parser::AST::CXXFoldExpr^ _0);

                ~CXXFoldExpr();

                property CppSharp::Parser::AST::Expr^ LHS
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::AST::Expr^ RHS
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property bool IsRightFold
                {
                    bool get();
                    void set(bool);
                }

                property bool IsLeftFold
                {
                    bool get();
                    void set(bool);
                }

                property CppSharp::Parser::AST::Expr^ Pattern
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::AST::Expr^ Init
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::SourceLocation EllipsisLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::AST::BinaryOperatorKind Operator
                {
                    CppSharp::Parser::AST::BinaryOperatorKind get();
                    void set(CppSharp::Parser::AST::BinaryOperatorKind);
                }
            };

            public ref class CoroutineSuspendExpr : CppSharp::Parser::AST::Expr
            {
            public:

                enum class SubExpr
                {
                    Common = 0,
                    Ready = 1,
                    Suspend = 2,
                    Resume = 3,
                    Count = 4
                };

                CoroutineSuspendExpr(::CppSharp::CppParser::AST::CoroutineSuspendExpr* native);
                CoroutineSuspendExpr(::CppSharp::CppParser::AST::CoroutineSuspendExpr* native, bool ownNativeInstance);
                static CoroutineSuspendExpr^ __CreateInstance(::System::IntPtr native);
                static CoroutineSuspendExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CoroutineSuspendExpr();

                CoroutineSuspendExpr(CppSharp::Parser::AST::StmtClass klass);

                CoroutineSuspendExpr(CppSharp::Parser::AST::CoroutineSuspendExpr^ _0);

                ~CoroutineSuspendExpr();

                property CppSharp::Parser::SourceLocation KeywordLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }

                property CppSharp::Parser::AST::Expr^ CommonExpr
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::AST::OpaqueValueExpr^ OpaqueValue
                {
                    CppSharp::Parser::AST::OpaqueValueExpr^ get();
                    void set(CppSharp::Parser::AST::OpaqueValueExpr^);
                }

                property CppSharp::Parser::AST::Expr^ ReadyExpr
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::AST::Expr^ SuspendExpr
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::AST::Expr^ ResumeExpr
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                static operator CppSharp::Parser::AST::CoroutineSuspendExpr^(CppSharp::Parser::AST::StmtClass klass);
            };

            public ref class CoawaitExpr : CppSharp::Parser::AST::CoroutineSuspendExpr
            {
            public:

                CoawaitExpr(::CppSharp::CppParser::AST::CoawaitExpr* native);
                CoawaitExpr(::CppSharp::CppParser::AST::CoawaitExpr* native, bool ownNativeInstance);
                static CoawaitExpr^ __CreateInstance(::System::IntPtr native);
                static CoawaitExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CoawaitExpr();

                CoawaitExpr(CppSharp::Parser::AST::CoawaitExpr^ _0);

                ~CoawaitExpr();

                property bool IsImplicit
                {
                    bool get();
                    void set(bool);
                }

                property CppSharp::Parser::AST::Expr^ Operand
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }
            };

            public ref class DependentCoawaitExpr : CppSharp::Parser::AST::Expr
            {
            public:

                DependentCoawaitExpr(::CppSharp::CppParser::AST::DependentCoawaitExpr* native);
                DependentCoawaitExpr(::CppSharp::CppParser::AST::DependentCoawaitExpr* native, bool ownNativeInstance);
                static DependentCoawaitExpr^ __CreateInstance(::System::IntPtr native);
                static DependentCoawaitExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                DependentCoawaitExpr();

                DependentCoawaitExpr(CppSharp::Parser::AST::DependentCoawaitExpr^ _0);

                ~DependentCoawaitExpr();

                property CppSharp::Parser::AST::Expr^ Operand
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }

                property CppSharp::Parser::AST::UnresolvedLookupExpr^ OperatorCoawaitLookup
                {
                    CppSharp::Parser::AST::UnresolvedLookupExpr^ get();
                    void set(CppSharp::Parser::AST::UnresolvedLookupExpr^);
                }

                property CppSharp::Parser::SourceLocation KeywordLoc
                {
                    CppSharp::Parser::SourceLocation get();
                    void set(CppSharp::Parser::SourceLocation);
                }
            };

            public ref class CoyieldExpr : CppSharp::Parser::AST::CoroutineSuspendExpr
            {
            public:

                CoyieldExpr(::CppSharp::CppParser::AST::CoyieldExpr* native);
                CoyieldExpr(::CppSharp::CppParser::AST::CoyieldExpr* native, bool ownNativeInstance);
                static CoyieldExpr^ __CreateInstance(::System::IntPtr native);
                static CoyieldExpr^ __CreateInstance(::System::IntPtr native, bool __ownsNativeInstance);
                CoyieldExpr();

                CoyieldExpr(CppSharp::Parser::AST::CoyieldExpr^ _0);

                ~CoyieldExpr();

                property CppSharp::Parser::AST::Expr^ Operand
                {
                    CppSharp::Parser::AST::Expr^ get();
                    void set(CppSharp::Parser::AST::Expr^);
                }
            };
        }
    }
}
