extern ConsPair * FindProp(Root *prop_list, Root *key);

#ifdef __GNUG__
#ifndef VTABLE_LABEL_PREFIX
#include "vtablename.h"
#endif
#if VTABLE_LABEL_HAS_LENGTH
extern int ConsVTable[] asm(VTABLE_LABEL_PREFIX "8ConsPair");
#else
extern int ConsVTable[] asm(VTABLE_LABEL_PREFIX "ConsPair");
#endif
inline int IsCons(Root *p) { return *(int**)p == ConsVTable; }
inline ConsPair *CheckCons(Root *prop_list)
{
    if (IsCons(prop_list)) return (ConsPair*)prop_list; // quick
    if (!prop_list->isKindOf(*ConsPair::desc()))
	Signal(new CoercionFail(prop_list, ConsPair::desc()));
    return ConsPair::castdown(prop_list);
}
#else
inline int IsCons(Root *p) { return p->isKindOf(*ConsPair::desc()); }
inline ConsPair *CheckCons(Root *prop_list)
{
    if (!prop_list->isKindOf(*ConsPair::desc()))
	Signal(new CoercionFail(prop_list, ConsPair::desc()));
    return ConsPair::castdown(prop_list);
}
#endif
