def i_memberOf(ss: Substrate, crorwc: crOrWildCard) -> Sctids_or_Error:
    # TODO -- this function executes queries - need to redo ?
    refsetids = ss.i_conceptReference(crorwc.cr) if crorwc.inran('cr') else \
        Sctids_or_Error(ok=ss.descendants(refset_concept))
    if refsetids.inran('error'):
        return refsetids
    refsets = result_sctids(refsetids)
    refset_members = [ss.i_refsetId(sctid) for sctid in refsets]
    rval = refset_members[0] if refset_members else Sctids_or_Error(ok=ss.equivalent_concepts(None))
    for m in refset_members[1:]:
        rval = rval.union(m)
    return rval
def i_focusConcept(ss: Substrate, fc: focusConcept) -> Sctids_or_Error:
    return ss.i_conceptReference(fc.focusConcept_c.cr) if fc.inran('focusConcept_c') and fc.focusConcept_c.inran('cr') else \
           Sctids_or_Error(ok=ss.concepts) if fc.inran('focusConcept_c') and fc.focusConcept_c.inran('wc') else \
           i_memberOf(ss, fc.focusConcept_m)