def get_gef(self):
        p = self._gef_gap_base()
        s = _bpp('Searcher')
        res = s.searchPlain(self.model, p)
        res_array = [_match_to_array(m) for m in res.toArray()]
        for r in res_array:
            controller_pe = r[p.indexOf('controller PE')]
            input_pe = r[p.indexOf('input PE')]
            input_spe = r[p.indexOf('input simple PE')]
            output_pe = r[p.indexOf('output PE')]
            output_spe = r[p.indexOf('output simple PE')]
            reaction = r[p.indexOf('Conversion')]
            control = r[p.indexOf('Control')]
            if _is_complex(controller_pe):
                continue
            members_in = self._get_complex_members(input_pe)
            members_out = self._get_complex_members(output_pe)
            if not (members_in and members_out):
                continue
            if len(members_out) != 2:
                continue
            gdp_in = False
            for member in members_in:
                if isinstance(member, Agent) and member.name == 'GDP':
                    gdp_in = True
            gtp_out = False
            for member in members_out:
                if isinstance(member, Agent) and member.name == 'GTP':
                    gtp_out = True
            if not (gdp_in and gtp_out):
                continue
            ras_list = self._get_agents_from_entity(input_spe)
            gef_list = self._get_agents_from_entity(controller_pe)
            ev = self._get_evidence(control)
            for gef, ras in itertools.product(_listify(gef_list),
                                               _listify(ras_list)):
                st = Gef(gef, ras, evidence=ev)
                st_dec = decode_obj(st, encoding='utf-8')
                self.statements.append(st_dec)