def METHOD_NAME(self, nfeat, attn_bias=None, attn_mask=None):
    """Forward computation.
    Parameters
    ----------
    nfeat : torch.Tensor
        A 3D input tensor. Shape: (batch_size, N, :attr:`feat_size`), where
        N is the maximum number of nodes.
    attn_bias : torch.Tensor, optional
        The attention bias used for attention modification. Shape:
        (batch_size, N, N, :attr:`num_heads`).
    attn_mask : torch.Tensor, optional
        The attention mask used for avoiding computation on invalid
        positions, where invalid positions are indicated by `True` values.
        Shape: (batch_size, N, N). Note: For rows corresponding to
        unexisting nodes, make sure at least one entry is set to `False` to
        prevent obtaining NaNs with softmax.
    Returns
    -------
    y : torch.Tensor
        The output tensor. Shape: (batch_size, N, :attr:`feat_size`)
    """
    residual = nfeat
    if self.norm_first:
        nfeat = self.attn_layer_norm(nfeat)
    nfeat = self.attn(nfeat, attn_bias, attn_mask)
    nfeat = self.dropout(nfeat)
    nfeat = residual + nfeat
    if not self.norm_first:
        nfeat = self.attn_layer_norm(nfeat)
    residual = nfeat
    if self.norm_first:
        nfeat = self.ffn_layer_norm(nfeat)
    nfeat = self.ffn(nfeat)
    nfeat = residual + nfeat
    if not self.norm_first:
        nfeat = self.ffn_layer_norm(nfeat)
    return nfeat