TYPEMAP
const char *    T_PV
Node *          O_OBJECT
Tree *          O_OBJECT
Listable *      O_OBJECT
Writable *      O_OBJECT
Identifiable *  O_OBJECT
Character *     O_OBJECT
Characters *    O_OBJECT
Datatype *      O_OBJECT
Datum *         O_OBJECT
Matrix *        O_OBJECT
TypeSafeData *  O_OBJECT
TaxaMediator *  O_OBJECT
U64             T_UV
U8              T_UV
U8 *            T_PV

INPUT
O_OBJECT
	if ( SvTRUE($arg) ) {
		$var = ($type)SvIV(SvRV($arg));
	}
	else {
		$var = NULL;
	}

OUTPUT
O_OBJECT
	if ( $var == NULL ) {
		$arg = NULL;
	}
	else {
		int idx = ((Identifiable*)$var)->_index;
		sv_setref_pv( $arg, package[idx], (void*)$var );
	}
