private function _finish_or() { $pn = array(array(), array()); $revadj = null; $newvalue = array(); foreach ($this->_flatten_values() as $qv) { if ($qv->is_true()) { $this->type = "t"; return $this; } else { if ($qv->is_false()) { /* skip */ } else { if ($qv->type === "pn" && count($qv->value[0])) { $pn[0] = array_merge($pn[0], array_values(array_diff($qv->value[0], $qv->value[1]))); } else { if ($qv->type === "revadj") { $revadj = PaperSearch::_reviewAdjustmentMerge($revadj, $qv, "or"); } else { $newvalue[] = $qv; } } } } } return $this->_finish_combine($newvalue, $pn, $revadj, false); }