def METHOD_NAME(self, *args, **kwargs) -> Tensor:
    """"""
    args = list(args)
    x = args.pop(0)
    if self.block == 'res+':
        h = x
        if self.norm is not None:
            h = self.norm(h)
        if self.act is not None:
            h = self.act(h)
        h = F.dropout(h, p=self.dropout, training=self.training)
        if self.conv is not None and self.ckpt_grad and h.requires_grad:
            h = checkpoint(self.conv, h, *args, **kwargs)
        else:
            h = self.conv(h, *args, **kwargs)
        return x + h
    else:
        if self.conv is not None and self.ckpt_grad and x.requires_grad:
            h = checkpoint(self.conv, x, *args, **kwargs)
        else:
            h = self.conv(x, *args, **kwargs)
        if self.norm is not None:
            h = self.norm(h)
        if self.act is not None:
            h = self.act(h)
        if self.block == 'res':
            h = x + h
        elif self.block == 'dense':
            h = torch.cat([x, h], dim=-1)
        elif self.block == 'plain':
            pass
        return F.dropout(h, p=self.dropout, training=self.training)