if (flags == XPT_PD_IN) {
if (flags & XPT_PD_IN) {
fill_pd_from_param(TreeState *state, XPTParamDescriptor *pd, IDL_tree tree){    uint8 flags = 0;    switch (IDL_PARAM_DCL(tree).attr) {      case IDL_PARAM_IN:        flags = XPT_PD_IN;        break;      case IDL_PARAM_OUT:        flags = XPT_PD_OUT;        break;      case IDL_PARAM_INOUT:        flags = XPT_PD_IN | XPT_PD_OUT;        break;    }    if (IDL_tree_property_get(IDL_PARAM_DCL(tree).simple_declarator,                              "retval")) {        if (flags != XPT_PD_OUT) {            IDL_tree_error(tree, "can't have [retval] with in%s param "                           "(only out)\n",                           flags & XPT_PD_OUT ? "out" : "");            return FALSE;        }        flags |= XPT_PD_RETVAL;    }    if (IDL_tree_property_get(IDL_PARAM_DCL(tree).simple_declarator,                              "shared")) {        if (flags == XPT_PD_IN) {            IDL_tree_error(tree, "can't have [shared] with in%s param "                           "(only out)\n",                           flags & XPT_PD_OUT ? "out" : "");            return FALSE;        }        flags |= XPT_PD_SHARED;    }    /* stick param where we can see it later */    state->tree = tree;    return fill_pd_from_type(state, pd, flags,                             IDL_PARAM_DCL(tree).param_type_spec);}