def METHOD_NAME(self, x: Union[Tensor, OptPairTensor], edge_index: Adj,
            edge_attr: OptTensor = None, size: Size = None) -> Tensor:
    if isinstance(x, Tensor):
        x: OptPairTensor = (x, x)
    if not x[0].is_cuda:
        warnings.warn(
            'We do not recommend using the non-optimized CPU version of '
            '`SplineConv`. If possible, please move your data to GPU.')
    # propagate_type: (x: OptPairTensor, edge_attr: OptTensor)
    out = self.propagate(edge_index, x=x, edge_attr=edge_attr, size=size)
    x_r = x[1]
    if x_r is not None and self.root_weight:
        out = out + self.lin(x_r)
    if self.bias is not None:
        out = out + self.bias
    return out