def METHOD_NAME(self, block: base.PLBlock) -> str:
    if self.exprs:
        exprs = self.exprs
    else:
        exprs = [qi(c) for c in self.columns]
    code: str = self.get_metadata('code')
    using, expr = code.split(' ', 1)
    code = 'CREATE'
    if self.unique:
        code += ' UNIQUE'
    code += f' INDEX {qn(self.name_in_catalog)} ON {qn(*self.table_name)}'
    if using:
        code += f' USING {using}'
    expr = expr[1:-1].replace('__col__', '{col}')
    expr = ', '.join(expr.format(col=e) for e in exprs)
    kwargs = self.get_metadata('kwargs')
    if kwargs is not None:
        # Escape the expression first
        expr = expr.replace('{', '{{').replace('}', '}}')
        expr = re.sub(r'(__kw_(\w+?)__)', r'{\2}', expr)
        expr = expr.format(**kwargs)
    code += f'({expr})'
    if self.with_clause:
        with_content = ','.join(
            f'{k}={v}' for (k, v) in self.with_clause.items()
        )
        code += f' WITH ({with_content})'
    if self.predicate:
        code += f' WHERE {self.predicate}'
    return code