void
base_t::oess_serializer_t::unpack_self(
	oess_1::stdsn::ient_t & s,
	base_t & o,
	oess_1::stdsn::isubclass_extension_t * subclass )
{
	{
	std::auto_ptr< oess_1::stdsn::iextension_t >  future_ext( s.extension_start() );
	future_ext->unpack_opaque( o.oess_writeable_unknown_extension() );
	s.extension_finish( *future_ext );
	}

	{
		std::auto_ptr< oess_1::stdsn::iextension_t >  derived_ext( s.extension_start() );
		if( subclass )
			(*subclass)( *derived_ext );
		else
			derived_ext->unpack_opaque( o.oess_writeable_unknown_subclass_extension() );
		s.extension_finish( *derived_ext );
	}
}
void
base_t::oess_serializer_t::unpack(
	oess_1::stdsn::ient_t & s,
	base_t & o,
	oess_1::stdsn::isubclass_extension_t * subclass )
{
	if( s.obj_start( &o, &type_name(), scheme() ) )
	{
		oess_1::stdsn::isubclass_extension_t * our_subclass_ptr = 0;
		unpack_self( s, o, subclass );
		s.obj_finish( &o, &type_name() );
	}
}
void
base_t::oess_serializer_t::unpack_complete(
	oess_1::stdsn::ient_t & s,
	base_t & o )
{
	s.obj_complete( &o, &type_name() );
}
void
base_t::oess_serializer_t::pack_self(
	oess_1::stdsn::oent_t & s,
	const base_t & o,
	oess_1::stdsn::osubclass_extension_t * subclass )
{
	{
	std::auto_ptr< oess_1::stdsn::oextension_t >  future_ext( s.extension_start() );
	future_ext->pack_opaque( o.oess_unknown_extension() );
	s.extension_finish( *future_ext );
	}

	{
		std::auto_ptr< oess_1::stdsn::oextension_t >  derived_ext( s.extension_start() );
		if( subclass )
			(*subclass)( *derived_ext );
		else
			derived_ext->pack_opaque( o.oess_unknown_subclass_extension() );
		s.extension_finish( *derived_ext );
	}
}
void
base_t::oess_serializer_t::pack(
	oess_1::stdsn::oent_t & s,
	const base_t & o,
	oess_1::stdsn::osubclass_extension_t * subclass )
{
	if( s.obj_start( &o, &type_name(), scheme() ) )
	{
		oess_1::stdsn::osubclass_extension_t * our_subclass_ptr = 0;
		pack_self( s, o, subclass );
		s.obj_finish( &o, &type_name() );
	}
}
void
base_t::oess_serializer_t::pack_complete(
	oess_1::stdsn::oent_t & s,
	const base_t & o )
{
	s.obj_complete( &o, &type_name() );
}
void *
base_t::oess_serializer_t::cast(
	const std::string & cast_to,
	base_t * o )
{
	if( cast_to == type_name() )
		return o;
	void * p = 0;
	if( cast_to == oess_1::stdsn::serializable_t::oess_serializable_t_name() )
		return (oess_1::stdsn::serializable_t *)o;
	return p;
}
const std::string &	base_t::oess_serializer_t::type_name() {
	static std::string name( "base_t" );
	return name;
}
oess_1::stdsn::serializable_t *	base_t::oess_serializer_t::factory() {
	return 0;
}
const std::string &
base_t::oess_serializer_t::scheme()
{
	static std::string s(
			"{type base_t {abstract } {extensible } {subclass"
			"ing_by_extension } } "
		);
	return s;
}
oess_1::stdsn::factory_registrator_t
base_t::oess_serializer_t::m_factory_reg( "base_t", &base_t::oess_serializer_t::factory );
bool
base_t::oess_present_if( const std::string & a ) const
{
	return false;
}
void
base_t::oess_set_default( const std::string & a )
{
}
void
base_t::oess_unpack( oess_1::stdsn::ient_t & s )
{
	oess_pre_unpack();
	oess_serializer_t::unpack( s, *this, 0 );
	oess_serializer_t::unpack_complete( s, *this );
	oess_post_unpack();
}
void
base_t::oess_pack( oess_1::stdsn::oent_t & s ) const
{
	oess_pre_pack();
	oess_serializer_t::pack( s, *this, 0 );
	oess_serializer_t::pack_complete( s, *this );
	oess_post_pack();
}
void *
base_t::oess_cast( const std::string & cast_to )
{
	return oess_serializer_t::cast( cast_to, this );
}
const std::string &
base_t::oess_type_name() const
{
	return oess_serializer_t::type_name();
}
const std::string &
base_t::oess_scheme() const
{
	return oess_serializer_t::scheme();
}
const oess_1::stdsn::unknown_extension_t &
base_t::oess_unknown_extension() const
{
	return oess_lo_unknown_extension( oess_serializer_t::type_name() );
}
oess_1::stdsn::unknown_extension_t &
base_t::oess_writeable_unknown_extension()
{
	return oess_lo_writeable_unknown_extension( oess_serializer_t::type_name() );
}
void
base_t::oess_get_subclass_extension_path(
	oess_1::stdsn::subclass_extension_path_t & path, 
	const std::string & terminator ) const
{
	if( oess_unknown_subclass_extension_path() )
	{
		path = *oess_unknown_subclass_extension_path();
		return;
	}
	if( oess_serializer_t::type_name() != terminator )
	OESS_THROW_PHYSIC(
		oess_1::stdsn::err::c_invalid_subclass_extension_chain,
		oess_type_name() << ", terminator: "<< terminator )
}

void
base_shptr_t::oess_serializer_t::unpack_self(
	oess_1::stdsn::ient_t & s,
	base_shptr_t & o,
	oess_1::stdsn::isubclass_extension_t * subclass )
{
	{
		oess_1::stdsn::iextension_of_t< base_t > io_extension_of( o.m_ptr );
		oess_1::stdsn::iobj_t< oess_1::stdsn::iextension_of_t< base_t > > io_obj( io_extension_of );
		s >> io_obj;
	}
}
void
base_shptr_t::oess_serializer_t::unpack(
	oess_1::stdsn::ient_t & s,
	base_shptr_t & o,
	oess_1::stdsn::isubclass_extension_t * subclass )
{
	if( s.obj_start( &o, &type_name(), scheme() ) )
	{
		oess_1::stdsn::isubclass_extension_t * our_subclass_ptr = 0;
		unpack_self( s, o, subclass );
		s.obj_finish( &o, &type_name() );
	}
}
void
base_shptr_t::oess_serializer_t::unpack_complete(
	oess_1::stdsn::ient_t & s,
	base_shptr_t & o )
{
	s.obj_complete( &o, &type_name() );
}
void
base_shptr_t::oess_serializer_t::pack_self(
	oess_1::stdsn::oent_t & s,
	const base_shptr_t & o,
	oess_1::stdsn::osubclass_extension_t * subclass )
{
	{
		oess_1::stdsn::oextension_of_t< base_t > io_extension_of( o.m_ptr );
		oess_1::stdsn::oobj_t< oess_1::stdsn::oextension_of_t< base_t > > io_obj( io_extension_of );
		s << io_obj;
	}
}
void
base_shptr_t::oess_serializer_t::pack(
	oess_1::stdsn::oent_t & s,
	const base_shptr_t & o,
	oess_1::stdsn::osubclass_extension_t * subclass )
{
	if( s.obj_start( &o, &type_name(), scheme() ) )
	{
		oess_1::stdsn::osubclass_extension_t * our_subclass_ptr = 0;
		pack_self( s, o, subclass );
		s.obj_finish( &o, &type_name() );
	}
}
void
base_shptr_t::oess_serializer_t::pack_complete(
	oess_1::stdsn::oent_t & s,
	const base_shptr_t & o )
{
	s.obj_complete( &o, &type_name() );
}
void *
base_shptr_t::oess_serializer_t::cast(
	const std::string & cast_to,
	base_shptr_t * o )
{
	if( cast_to == type_name() )
		return o;
	void * p = 0;
	if( cast_to == oess_1::stdsn::serializable_t::oess_serializable_t_name() )
		return (oess_1::stdsn::serializable_t *)o;
	return p;
}
const std::string &	base_shptr_t::oess_serializer_t::type_name() {
	static std::string name( "base_shptr_t" );
	return name;
}
oess_1::stdsn::serializable_t *	base_shptr_t::oess_serializer_t::factory() {
	return new base_shptr_t();
}
const std::string &
base_shptr_t::oess_serializer_t::scheme()
{
	static std::string s(
			"{type base_shptr_t {attr m_ptr {of base_t {exten"
			"sion_of } } } } "
		);
	return s;
}
oess_1::stdsn::factory_registrator_t
base_shptr_t::oess_serializer_t::m_factory_reg( "base_shptr_t", &base_shptr_t::oess_serializer_t::factory );
bool
base_shptr_t::oess_present_if( const std::string & a ) const
{
	return false;
}
void
base_shptr_t::oess_set_default( const std::string & a )
{
}
void
base_shptr_t::oess_unpack( oess_1::stdsn::ient_t & s )
{
	oess_pre_unpack();
	oess_serializer_t::unpack( s, *this, 0 );
	oess_serializer_t::unpack_complete( s, *this );
	oess_post_unpack();
}
void
base_shptr_t::oess_pack( oess_1::stdsn::oent_t & s ) const
{
	oess_pre_pack();
	oess_serializer_t::pack( s, *this, 0 );
	oess_serializer_t::pack_complete( s, *this );
	oess_post_pack();
}
void *
base_shptr_t::oess_cast( const std::string & cast_to )
{
	return oess_serializer_t::cast( cast_to, this );
}
const std::string &
base_shptr_t::oess_type_name() const
{
	return oess_serializer_t::type_name();
}
const std::string &
base_shptr_t::oess_scheme() const
{
	return oess_serializer_t::scheme();
}
void
base_shptr_t::oess_get_subclass_extension_path(
	oess_1::stdsn::subclass_extension_path_t & path, 
	const std::string & terminator ) const
{
	OESS_THROW_PHYSIC(
		oess_1::stdsn::err::c_not_in_subclass_extension_chain,
		oess_type_name() << ", terminator: "<< terminator )
}

void
holder_t::oess_serializer_t::unpack_self(
	oess_1::stdsn::ient_t & s,
	holder_t & o,
	oess_1::stdsn::isubclass_extension_t * subclass )
{
	{
		oess_1::stdsn::iobj_t< base_shptr_t > io_obj( o.m_value );
		s >> io_obj;
	}
	{
	std::auto_ptr< oess_1::stdsn::iextension_t >  future_ext( s.extension_start() );
	future_ext->unpack_opaque( o.oess_writeable_unknown_extension() );
	s.extension_finish( *future_ext );
	}
}
void
holder_t::oess_serializer_t::unpack(
	oess_1::stdsn::ient_t & s,
	holder_t & o,
	oess_1::stdsn::isubclass_extension_t * subclass )
{
	if( s.obj_start( &o, &type_name(), scheme() ) )
	{
		oess_1::stdsn::isubclass_extension_t * our_subclass_ptr = 0;
		unpack_self( s, o, subclass );
		s.obj_finish( &o, &type_name() );
	}
}
void
holder_t::oess_serializer_t::unpack_complete(
	oess_1::stdsn::ient_t & s,
	holder_t & o )
{
	s.obj_complete( &o, &type_name() );
}
void
holder_t::oess_serializer_t::pack_self(
	oess_1::stdsn::oent_t & s,
	const holder_t & o,
	oess_1::stdsn::osubclass_extension_t * subclass )
{
	{
		oess_1::stdsn::oobj_t< base_shptr_t > io_obj( o.m_value );
		s << io_obj;
	}
	{
	std::auto_ptr< oess_1::stdsn::oextension_t >  future_ext( s.extension_start() );
	future_ext->pack_opaque( o.oess_unknown_extension() );
	s.extension_finish( *future_ext );
	}
}
void
holder_t::oess_serializer_t::pack(
	oess_1::stdsn::oent_t & s,
	const holder_t & o,
	oess_1::stdsn::osubclass_extension_t * subclass )
{
	if( s.obj_start( &o, &type_name(), scheme() ) )
	{
		oess_1::stdsn::osubclass_extension_t * our_subclass_ptr = 0;
		pack_self( s, o, subclass );
		s.obj_finish( &o, &type_name() );
	}
}
void
holder_t::oess_serializer_t::pack_complete(
	oess_1::stdsn::oent_t & s,
	const holder_t & o )
{
	s.obj_complete( &o, &type_name() );
}
void *
holder_t::oess_serializer_t::cast(
	const std::string & cast_to,
	holder_t * o )
{
	if( cast_to == type_name() )
		return o;
	void * p = 0;
	if( cast_to == oess_1::stdsn::serializable_t::oess_serializable_t_name() )
		return (oess_1::stdsn::serializable_t *)o;
	return p;
}
const std::string &	holder_t::oess_serializer_t::type_name() {
	static std::string name( "holder_t" );
	return name;
}
oess_1::stdsn::serializable_t *	holder_t::oess_serializer_t::factory() {
	return new holder_t();
}
const std::string &
holder_t::oess_serializer_t::scheme()
{
	static std::string s(
			"{type holder_t {extensible } {attr m_value {of b"
			"ase_shptr_t } } } "
		);
	return s;
}
oess_1::stdsn::factory_registrator_t
holder_t::oess_serializer_t::m_factory_reg( "holder_t", &holder_t::oess_serializer_t::factory );
bool
holder_t::oess_present_if( const std::string & a ) const
{
	return false;
}
void
holder_t::oess_set_default( const std::string & a )
{
}
void
holder_t::oess_unpack( oess_1::stdsn::ient_t & s )
{
	oess_pre_unpack();
	oess_serializer_t::unpack( s, *this, 0 );
	oess_serializer_t::unpack_complete( s, *this );
	oess_post_unpack();
}
void
holder_t::oess_pack( oess_1::stdsn::oent_t & s ) const
{
	oess_pre_pack();
	oess_serializer_t::pack( s, *this, 0 );
	oess_serializer_t::pack_complete( s, *this );
	oess_post_pack();
}
void *
holder_t::oess_cast( const std::string & cast_to )
{
	return oess_serializer_t::cast( cast_to, this );
}
const std::string &
holder_t::oess_type_name() const
{
	return oess_serializer_t::type_name();
}
const std::string &
holder_t::oess_scheme() const
{
	return oess_serializer_t::scheme();
}
const oess_1::stdsn::unknown_extension_t &
holder_t::oess_unknown_extension() const
{
	return oess_lo_unknown_extension( oess_serializer_t::type_name() );
}
oess_1::stdsn::unknown_extension_t &
holder_t::oess_writeable_unknown_extension()
{
	return oess_lo_writeable_unknown_extension( oess_serializer_t::type_name() );
}
void
holder_t::oess_get_subclass_extension_path(
	oess_1::stdsn::subclass_extension_path_t & path, 
	const std::string & terminator ) const
{
	OESS_THROW_PHYSIC(
		oess_1::stdsn::err::c_not_in_subclass_extension_chain,
		oess_type_name() << ", terminator: "<< terminator )
}

void
string_value_t::oess_serializer_t::unpack_self(
	oess_1::stdsn::ient_t & s,
	string_value_t & o,
	oess_1::stdsn::isubclass_extension_t * subclass )
{
	{
		oess_1::stdsn::iobj_t< std::string > io_obj( o.m_value );
		s >> io_obj;
	}
	{
	std::auto_ptr< oess_1::stdsn::iextension_t >  future_ext( s.extension_start() );
	future_ext->unpack_opaque( o.oess_writeable_unknown_extension() );
	s.extension_finish( *future_ext );
	}

	{
		std::auto_ptr< oess_1::stdsn::iextension_t >  derived_ext( s.extension_start() );
		if( subclass )
			(*subclass)( *derived_ext );
		else
			derived_ext->unpack_opaque( o.oess_writeable_unknown_subclass_extension() );
		s.extension_finish( *derived_ext );
	}
}
void
string_value_t::oess_serializer_t::unpack(
	oess_1::stdsn::ient_t & s,
	string_value_t & o,
	oess_1::stdsn::isubclass_extension_t * subclass )
{
	if( s.obj_start( &o, &type_name(), scheme() ) )
	{
		oess_1::stdsn::isubclass_extension_t * our_subclass_ptr = 0;
		oess_1::stdsn::isubclass_extension_template_t< string_value_t > our_extension( o, &string_value_t::oess_serializer_t::unpack_self, subclass );
		our_subclass_ptr = &our_extension;
		base_t::oess_serializer_t::unpack( s, *((base_t*) &o), our_subclass_ptr );
		s.obj_finish( &o, &type_name() );
	}
}
void
string_value_t::oess_serializer_t::unpack_complete(
	oess_1::stdsn::ient_t & s,
	string_value_t & o )
{
	s.obj_complete( &o, &type_name() );
	base_t::oess_serializer_t::unpack_complete( s, *((base_t*) &o) );
}
void
string_value_t::oess_serializer_t::pack_self(
	oess_1::stdsn::oent_t & s,
	const string_value_t & o,
	oess_1::stdsn::osubclass_extension_t * subclass )
{
	{
		oess_1::stdsn::oobj_t< std::string > io_obj( o.m_value );
		s << io_obj;
	}
	{
	std::auto_ptr< oess_1::stdsn::oextension_t >  future_ext( s.extension_start() );
	future_ext->pack_opaque( o.oess_unknown_extension() );
	s.extension_finish( *future_ext );
	}

	{
		std::auto_ptr< oess_1::stdsn::oextension_t >  derived_ext( s.extension_start() );
		if( subclass )
			(*subclass)( *derived_ext );
		else
			derived_ext->pack_opaque( o.oess_unknown_subclass_extension() );
		s.extension_finish( *derived_ext );
	}
}
void
string_value_t::oess_serializer_t::pack(
	oess_1::stdsn::oent_t & s,
	const string_value_t & o,
	oess_1::stdsn::osubclass_extension_t * subclass )
{
	if( s.obj_start( &o, &type_name(), scheme() ) )
	{
		oess_1::stdsn::osubclass_extension_t * our_subclass_ptr = 0;
		oess_1::stdsn::osubclass_extension_template_t< string_value_t > our_extension( o, &string_value_t::oess_serializer_t::pack_self, subclass );
		our_subclass_ptr = &our_extension;
		base_t::oess_serializer_t::pack( s, *((const base_t*) &o), our_subclass_ptr );
		s.obj_finish( &o, &type_name() );
	}
}
void
string_value_t::oess_serializer_t::pack_complete(
	oess_1::stdsn::oent_t & s,
	const string_value_t & o )
{
	s.obj_complete( &o, &type_name() );
	base_t::oess_serializer_t::pack_complete( s, *((const base_t*) &o) );
}
void *
string_value_t::oess_serializer_t::cast(
	const std::string & cast_to,
	string_value_t * o )
{
	if( cast_to == type_name() )
		return o;
	void * p = 0;
	if( 0 != ( p = base_t::oess_serializer_t::cast( cast_to, ((base_t*) o) ) ) )
		return p;
	if( cast_to == oess_1::stdsn::serializable_t::oess_serializable_t_name() )
		return (oess_1::stdsn::serializable_t *)o;
	return p;
}
const std::string &	string_value_t::oess_serializer_t::type_name() {
	static std::string name( "string_value_t" );
	return name;
}
oess_1::stdsn::serializable_t *	string_value_t::oess_serializer_t::factory() {
	return new string_value_t();
}
const std::string &
string_value_t::oess_serializer_t::scheme()
{
	static std::string s(
			"{type string_value_t {extensible } {subclassing_"
			"by_extension {extension_of base_t } } {attr m_va"
			"lue {of std::string } } } "
		);
	return s;
}
oess_1::stdsn::factory_registrator_t
string_value_t::oess_serializer_t::m_factory_reg( "string_value_t", &string_value_t::oess_serializer_t::factory );
bool
string_value_t::oess_present_if( const std::string & a ) const
{
	return false;
}
void
string_value_t::oess_set_default( const std::string & a )
{
}
void
string_value_t::oess_unpack( oess_1::stdsn::ient_t & s )
{
	oess_pre_unpack();
	oess_serializer_t::unpack( s, *this, 0 );
	oess_serializer_t::unpack_complete( s, *this );
	oess_post_unpack();
}
void
string_value_t::oess_pack( oess_1::stdsn::oent_t & s ) const
{
	oess_pre_pack();
	oess_serializer_t::pack( s, *this, 0 );
	oess_serializer_t::pack_complete( s, *this );
	oess_post_pack();
}
void *
string_value_t::oess_cast( const std::string & cast_to )
{
	return oess_serializer_t::cast( cast_to, this );
}
const std::string &
string_value_t::oess_type_name() const
{
	return oess_serializer_t::type_name();
}
const std::string &
string_value_t::oess_scheme() const
{
	return oess_serializer_t::scheme();
}
const oess_1::stdsn::unknown_extension_t &
string_value_t::oess_unknown_extension() const
{
	return oess_lo_unknown_extension( oess_serializer_t::type_name() );
}
oess_1::stdsn::unknown_extension_t &
string_value_t::oess_writeable_unknown_extension()
{
	return oess_lo_writeable_unknown_extension( oess_serializer_t::type_name() );
}
void
string_value_t::oess_get_subclass_extension_path(
	oess_1::stdsn::subclass_extension_path_t & path, 
	const std::string & terminator ) const
{
	if( oess_unknown_subclass_extension_path() )
	{
		path = *oess_unknown_subclass_extension_path();
		return;
	}
	path.push_back(
		oess_serializer_t::type_name(),
		oess_serializer_t::scheme() );
	if( oess_serializer_t::type_name() != terminator )
		base_t::oess_get_subclass_extension_path( path, terminator );
}

void
incapsulated_value_t::oess_serializer_t::unpack_self(
	oess_1::stdsn::ient_t & s,
	incapsulated_value_t & o,
	oess_1::stdsn::isubclass_extension_t * subclass )
{
	{
		oess_1::stdsn::iobj_t< base_shptr_t > io_obj( o.m_original );
		s >> io_obj;
	}
	{
		oess_1::stdsn::iobj_t< std::string > io_obj( o.m_self );
		s >> io_obj;
	}
	{
	std::auto_ptr< oess_1::stdsn::iextension_t >  future_ext( s.extension_start() );
	future_ext->unpack_opaque( o.oess_writeable_unknown_extension() );
	s.extension_finish( *future_ext );
	}

	{
		std::auto_ptr< oess_1::stdsn::iextension_t >  derived_ext( s.extension_start() );
		if( subclass )
			(*subclass)( *derived_ext );
		else
			derived_ext->unpack_opaque( o.oess_writeable_unknown_subclass_extension() );
		s.extension_finish( *derived_ext );
	}
}
void
incapsulated_value_t::oess_serializer_t::unpack(
	oess_1::stdsn::ient_t & s,
	incapsulated_value_t & o,
	oess_1::stdsn::isubclass_extension_t * subclass )
{
	if( s.obj_start( &o, &type_name(), scheme() ) )
	{
		oess_1::stdsn::isubclass_extension_t * our_subclass_ptr = 0;
		oess_1::stdsn::isubclass_extension_template_t< incapsulated_value_t > our_extension( o, &incapsulated_value_t::oess_serializer_t::unpack_self, subclass );
		our_subclass_ptr = &our_extension;
		base_t::oess_serializer_t::unpack( s, *((base_t*) &o), our_subclass_ptr );
		s.obj_finish( &o, &type_name() );
	}
}
void
incapsulated_value_t::oess_serializer_t::unpack_complete(
	oess_1::stdsn::ient_t & s,
	incapsulated_value_t & o )
{
	s.obj_complete( &o, &type_name() );
	base_t::oess_serializer_t::unpack_complete( s, *((base_t*) &o) );
}
void
incapsulated_value_t::oess_serializer_t::pack_self(
	oess_1::stdsn::oent_t & s,
	const incapsulated_value_t & o,
	oess_1::stdsn::osubclass_extension_t * subclass )
{
	{
		oess_1::stdsn::oobj_t< base_shptr_t > io_obj( o.m_original );
		s << io_obj;
	}
	{
		oess_1::stdsn::oobj_t< std::string > io_obj( o.m_self );
		s << io_obj;
	}
	{
	std::auto_ptr< oess_1::stdsn::oextension_t >  future_ext( s.extension_start() );
	future_ext->pack_opaque( o.oess_unknown_extension() );
	s.extension_finish( *future_ext );
	}

	{
		std::auto_ptr< oess_1::stdsn::oextension_t >  derived_ext( s.extension_start() );
		if( subclass )
			(*subclass)( *derived_ext );
		else
			derived_ext->pack_opaque( o.oess_unknown_subclass_extension() );
		s.extension_finish( *derived_ext );
	}
}
void
incapsulated_value_t::oess_serializer_t::pack(
	oess_1::stdsn::oent_t & s,
	const incapsulated_value_t & o,
	oess_1::stdsn::osubclass_extension_t * subclass )
{
	if( s.obj_start( &o, &type_name(), scheme() ) )
	{
		oess_1::stdsn::osubclass_extension_t * our_subclass_ptr = 0;
		oess_1::stdsn::osubclass_extension_template_t< incapsulated_value_t > our_extension( o, &incapsulated_value_t::oess_serializer_t::pack_self, subclass );
		our_subclass_ptr = &our_extension;
		base_t::oess_serializer_t::pack( s, *((const base_t*) &o), our_subclass_ptr );
		s.obj_finish( &o, &type_name() );
	}
}
void
incapsulated_value_t::oess_serializer_t::pack_complete(
	oess_1::stdsn::oent_t & s,
	const incapsulated_value_t & o )
{
	s.obj_complete( &o, &type_name() );
	base_t::oess_serializer_t::pack_complete( s, *((const base_t*) &o) );
}
void *
incapsulated_value_t::oess_serializer_t::cast(
	const std::string & cast_to,
	incapsulated_value_t * o )
{
	if( cast_to == type_name() )
		return o;
	void * p = 0;
	if( 0 != ( p = base_t::oess_serializer_t::cast( cast_to, ((base_t*) o) ) ) )
		return p;
	if( cast_to == oess_1::stdsn::serializable_t::oess_serializable_t_name() )
		return (oess_1::stdsn::serializable_t *)o;
	return p;
}
const std::string &	incapsulated_value_t::oess_serializer_t::type_name() {
	static std::string name( "incapsulated_value_t" );
	return name;
}
oess_1::stdsn::serializable_t *	incapsulated_value_t::oess_serializer_t::factory() {
	return new incapsulated_value_t();
}
const std::string &
incapsulated_value_t::oess_serializer_t::scheme()
{
	static std::string s(
			"{type incapsulated_value_t {extensible } {subcla"
			"ssing_by_extension {extension_of base_t } } {att"
			"r m_original {of base_shptr_t } } {attr m_self {"
			"of std::string } } } "
		);
	return s;
}
oess_1::stdsn::factory_registrator_t
incapsulated_value_t::oess_serializer_t::m_factory_reg( "incapsulated_value_t", &incapsulated_value_t::oess_serializer_t::factory );
bool
incapsulated_value_t::oess_present_if( const std::string & a ) const
{
	return false;
}
void
incapsulated_value_t::oess_set_default( const std::string & a )
{
}
void
incapsulated_value_t::oess_unpack( oess_1::stdsn::ient_t & s )
{
	oess_pre_unpack();
	oess_serializer_t::unpack( s, *this, 0 );
	oess_serializer_t::unpack_complete( s, *this );
	oess_post_unpack();
}
void
incapsulated_value_t::oess_pack( oess_1::stdsn::oent_t & s ) const
{
	oess_pre_pack();
	oess_serializer_t::pack( s, *this, 0 );
	oess_serializer_t::pack_complete( s, *this );
	oess_post_pack();
}
void *
incapsulated_value_t::oess_cast( const std::string & cast_to )
{
	return oess_serializer_t::cast( cast_to, this );
}
const std::string &
incapsulated_value_t::oess_type_name() const
{
	return oess_serializer_t::type_name();
}
const std::string &
incapsulated_value_t::oess_scheme() const
{
	return oess_serializer_t::scheme();
}
const oess_1::stdsn::unknown_extension_t &
incapsulated_value_t::oess_unknown_extension() const
{
	return oess_lo_unknown_extension( oess_serializer_t::type_name() );
}
oess_1::stdsn::unknown_extension_t &
incapsulated_value_t::oess_writeable_unknown_extension()
{
	return oess_lo_writeable_unknown_extension( oess_serializer_t::type_name() );
}
void
incapsulated_value_t::oess_get_subclass_extension_path(
	oess_1::stdsn::subclass_extension_path_t & path, 
	const std::string & terminator ) const
{
	if( oess_unknown_subclass_extension_path() )
	{
		path = *oess_unknown_subclass_extension_path();
		return;
	}
	path.push_back(
		oess_serializer_t::type_name(),
		oess_serializer_t::scheme() );
	if( oess_serializer_t::type_name() != terminator )
		base_t::oess_get_subclass_extension_path( path, terminator );
}

