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);
 }