// ***************************************************************************
//
//   Generated automatically by genwrapper.
//   Please DO NOT EDIT this file!
//
// ***************************************************************************

#include <osgIntrospection/ReflectionMacros>
#include <osgIntrospection/TypedMethodInfo>
#include <osgIntrospection/StaticMethodInfo>
#include <osgIntrospection/Attributes>

#include <osg/CopyOp>
#include <osg/Image>
#include <osg/Node>
#include <osg/Object>
#include <osg/Shader>
#include <osg/Shape>
#include <osgDB/Archive>
#include <osgDB/ReaderWriter>

// Must undefine IN and OUT macros defined in Windows headers
#ifdef IN
#undef IN
#endif
#ifdef OUT
#undef OUT
#endif

#include <osgDB/Options>
        
BEGIN_ENUM_REFLECTOR(osgDB::ReaderWriter::Features)
	I_DeclaringFile("osgDB/ReaderWriter");
	I_EnumLabel(osgDB::ReaderWriter::FEATURE_NONE);
	I_EnumLabel(osgDB::ReaderWriter::FEATURE_READ_OBJECT);
	I_EnumLabel(osgDB::ReaderWriter::FEATURE_READ_IMAGE);
	I_EnumLabel(osgDB::ReaderWriter::FEATURE_READ_HEIGHT_FIELD);
	I_EnumLabel(osgDB::ReaderWriter::FEATURE_READ_NODE);
	I_EnumLabel(osgDB::ReaderWriter::FEATURE_READ_SHADER);
	I_EnumLabel(osgDB::ReaderWriter::FEATURE_WRITE_OBJECT);
	I_EnumLabel(osgDB::ReaderWriter::FEATURE_WRITE_IMAGE);
	I_EnumLabel(osgDB::ReaderWriter::FEATURE_WRITE_HEIGHT_FIELD);
	I_EnumLabel(osgDB::ReaderWriter::FEATURE_WRITE_NODE);
	I_EnumLabel(osgDB::ReaderWriter::FEATURE_WRITE_SHADER);
	I_EnumLabel(osgDB::ReaderWriter::FEATURE_ALL);
END_REFLECTOR

BEGIN_ENUM_REFLECTOR(osgDB::ReaderWriter::ArchiveStatus)
	I_DeclaringFile("osgDB/ReaderWriter");
	I_EnumLabel(osgDB::ReaderWriter::READ);
	I_EnumLabel(osgDB::ReaderWriter::WRITE);
	I_EnumLabel(osgDB::ReaderWriter::CREATE);
END_REFLECTOR

TYPE_NAME_ALIAS(std::map< std::string COMMA  std::string >, osgDB::ReaderWriter::FormatDescriptionMap)

TYPE_NAME_ALIAS(std::list< std::string >, osgDB::ReaderWriter::FeatureList)

TYPE_NAME_ALIAS(osgDB::Options, osgDB::ReaderWriter::Options)

BEGIN_OBJECT_REFLECTOR(osgDB::ReaderWriter)
	I_DeclaringFile("osgDB/ReaderWriter");
	I_BaseType(osg::Object);
	I_Constructor0(____ReaderWriter,
	               "",
	               "");
	I_ConstructorWithDefaults2(IN, const osgDB::ReaderWriter &, rw, , IN, const osg::CopyOp &, copyop, osg::CopyOp::SHALLOW_COPY,
	                           ____ReaderWriter__C5_ReaderWriter_R1__C5_osg_CopyOp_R1,
	                           "",
	                           "");
	I_Method0(osg::Object *, cloneType,
	          Properties::VIRTUAL,
	          __osg_Object_P1__cloneType,
	          "Clone the type of an object, with Object* return type. ",
	          "Must be defined by derived classes. ");
	I_Method1(osg::Object *, clone, IN, const osg::CopyOp &, x,
	          Properties::VIRTUAL,
	          __osg_Object_P1__clone__C5_osg_CopyOp_R1,
	          "Clone an object, with Object* return type. ",
	          "Must be defined by derived classes. ");
	I_Method1(bool, isSameKindAs, IN, const osg::Object *, obj,
	          Properties::VIRTUAL,
	          __bool__isSameKindAs__C5_osg_Object_P1,
	          "",
	          "");
	I_Method0(const char *, libraryName,
	          Properties::VIRTUAL,
	          __C5_char_P1__libraryName,
	          "return the name of the object's library. ",
	          "Must be defined by derived classes. The OpenSceneGraph convention is that the namespace of a library is the same as the library name. ");
	I_Method0(const char *, className,
	          Properties::VIRTUAL,
	          __C5_char_P1__className,
	          "return the name of the object's class type. ",
	          "Must be defined by derived classes. ");
	I_Method0(const osgDB::ReaderWriter::FormatDescriptionMap &, supportedProtocols,
	          Properties::VIRTUAL,
	          __C5_FormatDescriptionMap_R1__supportedProtocols,
	          "return which protocols are supported by ReaderWriter. ",
	          "");
	I_Method0(const osgDB::ReaderWriter::FormatDescriptionMap &, supportedExtensions,
	          Properties::VIRTUAL,
	          __C5_FormatDescriptionMap_R1__supportedExtensions,
	          "return which list of file extensions supported by ReaderWriter. ",
	          "");
	I_Method0(const osgDB::ReaderWriter::FormatDescriptionMap &, supportedOptions,
	          Properties::VIRTUAL,
	          __C5_FormatDescriptionMap_R1__supportedOptions,
	          "return which list of file extensions supported by ReaderWriter. ",
	          "");
	I_Method1(bool, acceptsExtension, IN, const std::string &, x,
	          Properties::VIRTUAL,
	          __bool__acceptsExtension__C5_std_string_R1,
	          "return true if ReaderWriter accepts specified file extension. ",
	          "");
	I_Method0(osgDB::ReaderWriter::Features, supportedFeatures,
	          Properties::VIRTUAL,
	          __Features__supportedFeatures,
	          "return available features ",
	          "");
	I_Method2(bool, fileExists, IN, const std::string &, filename, IN, const osgDB::ReaderWriter::Options *, options,
	          Properties::VIRTUAL,
	          __bool__fileExists__C5_std_string_R1__C5_Options_P1,
	          "determine if a file exists, normally the default implementation will be approrpiate for local file access but with plugins like the libcurl based on it will return true if the file is accessible a server. ",
	          "");
	I_MethodWithDefaults4(osgDB::ReaderWriter::ReadResult, openArchive, IN, const std::string &, x, , IN, osgDB::ReaderWriter::ArchiveStatus, x, , IN, unsigned, int, 4096, IN, const osgDB::ReaderWriter::Options *, x, NULL,
	                      Properties::VIRTUAL,
	                      __ReadResult__openArchive__C5_std_string_R1__ArchiveStatus__unsigned__C5_Options_P1,
	                      "open an archive for reading, writing, or to create an empty archive for writing to. ",
	                      "");
	I_MethodWithDefaults2(osgDB::ReaderWriter::ReadResult, openArchive, IN, std::istream &, x, , IN, const osgDB::ReaderWriter::Options *, x, NULL,
	                      Properties::VIRTUAL,
	                      __ReadResult__openArchive__std_istream_R1__C5_Options_P1,
	                      "open an archive for reading. ",
	                      "");
	I_MethodWithDefaults2(osgDB::ReaderWriter::ReadResult, readObject, IN, const std::string &, x, , IN, const osgDB::ReaderWriter::Options *, x, NULL,
	                      Properties::VIRTUAL,
	                      __ReadResult__readObject__C5_std_string_R1__C5_Options_P1,
	                      "",
	                      "");
	I_MethodWithDefaults2(osgDB::ReaderWriter::ReadResult, readImage, IN, const std::string &, x, , IN, const osgDB::ReaderWriter::Options *, x, NULL,
	                      Properties::VIRTUAL,
	                      __ReadResult__readImage__C5_std_string_R1__C5_Options_P1,
	                      "",
	                      "");
	I_MethodWithDefaults2(osgDB::ReaderWriter::ReadResult, readHeightField, IN, const std::string &, x, , IN, const osgDB::ReaderWriter::Options *, x, NULL,
	                      Properties::VIRTUAL,
	                      __ReadResult__readHeightField__C5_std_string_R1__C5_Options_P1,
	                      "",
	                      "");
	I_MethodWithDefaults2(osgDB::ReaderWriter::ReadResult, readNode, IN, const std::string &, x, , IN, const osgDB::ReaderWriter::Options *, x, NULL,
	                      Properties::VIRTUAL,
	                      __ReadResult__readNode__C5_std_string_R1__C5_Options_P1,
	                      "",
	                      "");
	I_MethodWithDefaults2(osgDB::ReaderWriter::ReadResult, readShader, IN, const std::string &, x, , IN, const osgDB::ReaderWriter::Options *, x, NULL,
	                      Properties::VIRTUAL,
	                      __ReadResult__readShader__C5_std_string_R1__C5_Options_P1,
	                      "",
	                      "");
	I_MethodWithDefaults3(osgDB::ReaderWriter::WriteResult, writeObject, IN, const osg::Object &, x, , IN, const std::string &, x, , IN, const osgDB::ReaderWriter::Options *, x, NULL,
	                      Properties::VIRTUAL,
	                      __WriteResult__writeObject__C5_osg_Object_R1__C5_std_string_R1__C5_Options_P1,
	                      "",
	                      "");
	I_MethodWithDefaults3(osgDB::ReaderWriter::WriteResult, writeImage, IN, const osg::Image &, x, , IN, const std::string &, x, , IN, const osgDB::ReaderWriter::Options *, x, NULL,
	                      Properties::VIRTUAL,
	                      __WriteResult__writeImage__C5_osg_Image_R1__C5_std_string_R1__C5_Options_P1,
	                      "",
	                      "");
	I_MethodWithDefaults3(osgDB::ReaderWriter::WriteResult, writeHeightField, IN, const osg::HeightField &, x, , IN, const std::string &, x, , IN, const osgDB::ReaderWriter::Options *, x, NULL,
	                      Properties::VIRTUAL,
	                      __WriteResult__writeHeightField__C5_osg_HeightField_R1__C5_std_string_R1__C5_Options_P1,
	                      "",
	                      "");
	I_MethodWithDefaults3(osgDB::ReaderWriter::WriteResult, writeNode, IN, const osg::Node &, x, , IN, const std::string &, x, , IN, const osgDB::ReaderWriter::Options *, x, NULL,
	                      Properties::VIRTUAL,
	                      __WriteResult__writeNode__C5_osg_Node_R1__C5_std_string_R1__C5_Options_P1,
	                      "",
	                      "");
	I_MethodWithDefaults3(osgDB::ReaderWriter::WriteResult, writeShader, IN, const osg::Shader &, x, , IN, const std::string &, x, , IN, const osgDB::ReaderWriter::Options *, x, NULL,
	                      Properties::VIRTUAL,
	                      __WriteResult__writeShader__C5_osg_Shader_R1__C5_std_string_R1__C5_Options_P1,
	                      "",
	                      "");
	I_MethodWithDefaults2(osgDB::ReaderWriter::ReadResult, readObject, IN, std::istream &, x, , IN, const osgDB::ReaderWriter::Options *, x, NULL,
	                      Properties::VIRTUAL,
	                      __ReadResult__readObject__std_istream_R1__C5_Options_P1,
	                      "",
	                      "");
	I_MethodWithDefaults2(osgDB::ReaderWriter::ReadResult, readImage, IN, std::istream &, x, , IN, const osgDB::ReaderWriter::Options *, x, NULL,
	                      Properties::VIRTUAL,
	                      __ReadResult__readImage__std_istream_R1__C5_Options_P1,
	                      "",
	                      "");
	I_MethodWithDefaults2(osgDB::ReaderWriter::ReadResult, readHeightField, IN, std::istream &, x, , IN, const osgDB::ReaderWriter::Options *, x, NULL,
	                      Properties::VIRTUAL,
	                      __ReadResult__readHeightField__std_istream_R1__C5_Options_P1,
	                      "",
	                      "");
	I_MethodWithDefaults2(osgDB::ReaderWriter::ReadResult, readNode, IN, std::istream &, x, , IN, const osgDB::ReaderWriter::Options *, x, NULL,
	                      Properties::VIRTUAL,
	                      __ReadResult__readNode__std_istream_R1__C5_Options_P1,
	                      "",
	                      "");
	I_MethodWithDefaults2(osgDB::ReaderWriter::ReadResult, readShader, IN, std::istream &, x, , IN, const osgDB::ReaderWriter::Options *, x, NULL,
	                      Properties::VIRTUAL,
	                      __ReadResult__readShader__std_istream_R1__C5_Options_P1,
	                      "",
	                      "");
	I_MethodWithDefaults3(osgDB::ReaderWriter::WriteResult, writeObject, IN, const osg::Object &, x, , IN, std::ostream &, x, , IN, const osgDB::ReaderWriter::Options *, x, NULL,
	                      Properties::VIRTUAL,
	                      __WriteResult__writeObject__C5_osg_Object_R1__std_ostream_R1__C5_Options_P1,
	                      "",
	                      "");
	I_MethodWithDefaults3(osgDB::ReaderWriter::WriteResult, writeImage, IN, const osg::Image &, x, , IN, std::ostream &, x, , IN, const osgDB::ReaderWriter::Options *, x, NULL,
	                      Properties::VIRTUAL,
	                      __WriteResult__writeImage__C5_osg_Image_R1__std_ostream_R1__C5_Options_P1,
	                      "",
	                      "");
	I_MethodWithDefaults3(osgDB::ReaderWriter::WriteResult, writeHeightField, IN, const osg::HeightField &, x, , IN, std::ostream &, x, , IN, const osgDB::ReaderWriter::Options *, x, NULL,
	                      Properties::VIRTUAL,
	                      __WriteResult__writeHeightField__C5_osg_HeightField_R1__std_ostream_R1__C5_Options_P1,
	                      "",
	                      "");
	I_MethodWithDefaults3(osgDB::ReaderWriter::WriteResult, writeNode, IN, const osg::Node &, x, , IN, std::ostream &, x, , IN, const osgDB::ReaderWriter::Options *, x, NULL,
	                      Properties::VIRTUAL,
	                      __WriteResult__writeNode__C5_osg_Node_R1__std_ostream_R1__C5_Options_P1,
	                      "",
	                      "");
	I_MethodWithDefaults3(osgDB::ReaderWriter::WriteResult, writeShader, IN, const osg::Shader &, x, , IN, std::ostream &, x, , IN, const osgDB::ReaderWriter::Options *, x, NULL,
	                      Properties::VIRTUAL,
	                      __WriteResult__writeShader__C5_osg_Shader_R1__std_ostream_R1__C5_Options_P1,
	                      "",
	                      "");
	I_StaticMethod1(osgDB::ReaderWriter::FeatureList, featureAsString, IN, osgDB::ReaderWriter::Features, feature,
	                __FeatureList__featureAsString__Features_S,
	                "return feature as string ",
	                "");
	I_ProtectedMethod2(void, supportsProtocol, IN, const std::string &, fmt, IN, const std::string &, description,
	                   Properties::NON_VIRTUAL,
	                   Properties::NON_CONST,
	                   __void__supportsProtocol__C5_std_string_R1__C5_std_string_R1,
	                   "",
	                   "");
	I_ProtectedMethod2(void, supportsExtension, IN, const std::string &, fmt, IN, const std::string &, description,
	                   Properties::NON_VIRTUAL,
	                   Properties::NON_CONST,
	                   __void__supportsExtension__C5_std_string_R1__C5_std_string_R1,
	                   "",
	                   "");
	I_ProtectedMethod2(void, supportsOption, IN, const std::string &, fmt, IN, const std::string &, description,
	                   Properties::NON_VIRTUAL,
	                   Properties::NON_CONST,
	                   __void__supportsOption__C5_std_string_R1__C5_std_string_R1,
	                   "",
	                   "");
END_REFLECTOR

BEGIN_ENUM_REFLECTOR(osgDB::ReaderWriter::ReadResult::ReadStatus)
	I_DeclaringFile("osgDB/ReaderWriter");
	I_EnumLabel(osgDB::ReaderWriter::ReadResult::NOT_IMPLEMENTED);
	I_EnumLabel(osgDB::ReaderWriter::ReadResult::FILE_NOT_HANDLED);
	I_EnumLabel(osgDB::ReaderWriter::ReadResult::FILE_NOT_FOUND);
	I_EnumLabel(osgDB::ReaderWriter::ReadResult::FILE_LOADED);
	I_EnumLabel(osgDB::ReaderWriter::ReadResult::FILE_LOADED_FROM_CACHE);
	I_EnumLabel(osgDB::ReaderWriter::ReadResult::ERROR_IN_READING_FILE);
	I_EnumLabel(osgDB::ReaderWriter::ReadResult::FILE_REQUESTED);
END_REFLECTOR

BEGIN_VALUE_REFLECTOR(osgDB::ReaderWriter::ReadResult)
	I_DeclaringFile("osgDB/ReaderWriter");
	I_ConstructorWithDefaults1(IN, osgDB::ReaderWriter::ReadResult::ReadStatus, status, osgDB::ReaderWriter::ReadResult::FILE_NOT_HANDLED,
	                           Properties::NON_EXPLICIT,
	                           ____ReadResult__ReadStatus,
	                           "",
	                           "");
	I_Constructor1(IN, const std::string &, m,
	               Properties::NON_EXPLICIT,
	               ____ReadResult__C5_std_string_R1,
	               "",
	               "");
	I_ConstructorWithDefaults2(IN, osg::Object *, obj, , IN, osgDB::ReaderWriter::ReadResult::ReadStatus, status, osgDB::ReaderWriter::ReadResult::FILE_LOADED,
	                           ____ReadResult__osg_Object_P1__ReadStatus,
	                           "",
	                           "");
	I_Constructor1(IN, const osgDB::ReaderWriter::ReadResult &, rr,
	               Properties::NON_EXPLICIT,
	               ____ReadResult__C5_ReadResult_R1,
	               "",
	               "");
	I_Method0(osg::Object *, getObject,
	          Properties::NON_VIRTUAL,
	          __osg_Object_P1__getObject,
	          "",
	          "");
	I_Method0(osg::Image *, getImage,
	          Properties::NON_VIRTUAL,
	          __osg_Image_P1__getImage,
	          "",
	          "");
	I_Method0(osg::HeightField *, getHeightField,
	          Properties::NON_VIRTUAL,
	          __osg_HeightField_P1__getHeightField,
	          "",
	          "");
	I_Method0(osg::Node *, getNode,
	          Properties::NON_VIRTUAL,
	          __osg_Node_P1__getNode,
	          "",
	          "");
	I_Method0(osgDB::Archive *, getArchive,
	          Properties::NON_VIRTUAL,
	          __osgDB_Archive_P1__getArchive,
	          "",
	          "");
	I_Method0(osg::Shader *, getShader,
	          Properties::NON_VIRTUAL,
	          __osg_Shader_P1__getShader,
	          "",
	          "");
	I_Method0(bool, validObject,
	          Properties::NON_VIRTUAL,
	          __bool__validObject,
	          "",
	          "");
	I_Method0(bool, validImage,
	          Properties::NON_VIRTUAL,
	          __bool__validImage,
	          "",
	          "");
	I_Method0(bool, validHeightField,
	          Properties::NON_VIRTUAL,
	          __bool__validHeightField,
	          "",
	          "");
	I_Method0(bool, validNode,
	          Properties::NON_VIRTUAL,
	          __bool__validNode,
	          "",
	          "");
	I_Method0(bool, validArchive,
	          Properties::NON_VIRTUAL,
	          __bool__validArchive,
	          "",
	          "");
	I_Method0(bool, validShader,
	          Properties::NON_VIRTUAL,
	          __bool__validShader,
	          "",
	          "");
	I_Method0(osg::Object *, takeObject,
	          Properties::NON_VIRTUAL,
	          __osg_Object_P1__takeObject,
	          "",
	          "");
	I_Method0(osg::Image *, takeImage,
	          Properties::NON_VIRTUAL,
	          __osg_Image_P1__takeImage,
	          "",
	          "");
	I_Method0(osg::HeightField *, takeHeightField,
	          Properties::NON_VIRTUAL,
	          __osg_HeightField_P1__takeHeightField,
	          "",
	          "");
	I_Method0(osg::Node *, takeNode,
	          Properties::NON_VIRTUAL,
	          __osg_Node_P1__takeNode,
	          "",
	          "");
	I_Method0(osgDB::Archive *, takeArchive,
	          Properties::NON_VIRTUAL,
	          __osgDB_Archive_P1__takeArchive,
	          "",
	          "");
	I_Method0(osg::Shader *, takeShader,
	          Properties::NON_VIRTUAL,
	          __osg_Shader_P1__takeShader,
	          "",
	          "");
	I_Method0(std::string &, message,
	          Properties::NON_VIRTUAL,
	          __std_string_R1__message,
	          "",
	          "");
	I_Method0(const std::string &, message,
	          Properties::NON_VIRTUAL,
	          __C5_std_string_R1__message,
	          "",
	          "");
	I_Method0(osgDB::ReaderWriter::ReadResult::ReadStatus, status,
	          Properties::NON_VIRTUAL,
	          __ReadStatus__status,
	          "",
	          "");
	I_Method0(bool, success,
	          Properties::NON_VIRTUAL,
	          __bool__success,
	          "",
	          "");
	I_Method0(bool, loadedFromCache,
	          Properties::NON_VIRTUAL,
	          __bool__loadedFromCache,
	          "",
	          "");
	I_Method0(bool, error,
	          Properties::NON_VIRTUAL,
	          __bool__error,
	          "",
	          "");
	I_Method0(bool, notHandled,
	          Properties::NON_VIRTUAL,
	          __bool__notHandled,
	          "",
	          "");
	I_Method0(bool, notFound,
	          Properties::NON_VIRTUAL,
	          __bool__notFound,
	          "",
	          "");
	I_SimpleProperty(osgDB::Archive *, Archive, 
	                 __osgDB_Archive_P1__getArchive, 
	                 0);
	I_SimpleProperty(osg::HeightField *, HeightField, 
	                 __osg_HeightField_P1__getHeightField, 
	                 0);
	I_SimpleProperty(osg::Image *, Image, 
	                 __osg_Image_P1__getImage, 
	                 0);
	I_SimpleProperty(osg::Node *, Node, 
	                 __osg_Node_P1__getNode, 
	                 0);
	I_SimpleProperty(osg::Object *, Object, 
	                 __osg_Object_P1__getObject, 
	                 0);
	I_SimpleProperty(osg::Shader *, Shader, 
	                 __osg_Shader_P1__getShader, 
	                 0);
END_REFLECTOR

BEGIN_ENUM_REFLECTOR(osgDB::ReaderWriter::WriteResult::WriteStatus)
	I_DeclaringFile("osgDB/ReaderWriter");
	I_EnumLabel(osgDB::ReaderWriter::WriteResult::NOT_IMPLEMENTED);
	I_EnumLabel(osgDB::ReaderWriter::WriteResult::FILE_NOT_HANDLED);
	I_EnumLabel(osgDB::ReaderWriter::WriteResult::FILE_SAVED);
	I_EnumLabel(osgDB::ReaderWriter::WriteResult::ERROR_IN_WRITING_FILE);
END_REFLECTOR

BEGIN_VALUE_REFLECTOR(osgDB::ReaderWriter::WriteResult)
	I_DeclaringFile("osgDB/ReaderWriter");
	I_ConstructorWithDefaults1(IN, osgDB::ReaderWriter::WriteResult::WriteStatus, status, osgDB::ReaderWriter::WriteResult::FILE_NOT_HANDLED,
	                           Properties::NON_EXPLICIT,
	                           ____WriteResult__WriteStatus,
	                           "",
	                           "");
	I_Constructor1(IN, const std::string &, m,
	               Properties::NON_EXPLICIT,
	               ____WriteResult__C5_std_string_R1,
	               "",
	               "");
	I_Constructor1(IN, const osgDB::ReaderWriter::WriteResult &, rr,
	               Properties::NON_EXPLICIT,
	               ____WriteResult__C5_WriteResult_R1,
	               "",
	               "");
	I_Method0(std::string &, message,
	          Properties::NON_VIRTUAL,
	          __std_string_R1__message,
	          "",
	          "");
	I_Method0(const std::string &, message,
	          Properties::NON_VIRTUAL,
	          __C5_std_string_R1__message,
	          "",
	          "");
	I_Method0(osgDB::ReaderWriter::WriteResult::WriteStatus, status,
	          Properties::NON_VIRTUAL,
	          __WriteStatus__status,
	          "",
	          "");
	I_Method0(bool, success,
	          Properties::NON_VIRTUAL,
	          __bool__success,
	          "",
	          "");
	I_Method0(bool, error,
	          Properties::NON_VIRTUAL,
	          __bool__error,
	          "",
	          "");
	I_Method0(bool, notHandled,
	          Properties::NON_VIRTUAL,
	          __bool__notHandled,
	          "",
	          "");
END_REFLECTOR

