protected function buildJoinOn(array $cls, array $settings)/*# : string */
    {
        $res = ['ON'];
        $on = $cls[4];
        if (is_string($on)) { // ON string
            $res[] = $on;
        } elseif (is_object($on)) { // ON is an object
            $res[] = $this->quoteItem($on, $settings);
        } else { // common on
            $res[] = $this->quote( // left
                $this->getFirstTableAlias($on[0]) . $on[0],
                $settings
            );
            $res[] = $on[1]; // operator
            $res[] = $this->quote( // right
                $this->getSecondTableAlias($cls, $on[2]) . $on[2],
                $settings
            );
        }
        return join(' ', $res);
    }