enum ReturnPattern {
    SHOULD_RETURN_OTHER,
    SHOULD_RETURN_NOTHING,
    SHOULD_RETURN_UNDEF,
    SHOULD_RETURN_TRUE,
    SHOULD_RETURN_FALSE,
    SHOULD_RETURN_INVOCANT,
    SHOULD_RETURN_ARRAY,
    SHOULD_RETURN_ARRAYBLESS,
    SHOULD_RETURN_OUT,
    SHOULD_RETURN_OUTBLESS,
    SHOULD_RETURN_VAL,
    SHOULD_RETURN_COUNT,
    SHOULD_RETURN_STRING,
};

#define SETVAL_BOOL(expr)   val = (expr) ? &PL_sv_yes : &PL_sv_no
#define SETVAL_INT(expr)    val = newSViv((IV)(expr))
