public LNode GetMethodSignature()
{
if (Basis != null && Basis.Calls(S.Fn) && Basis.ArgCount.IsInRange(3, 4)) {
var parts = Basis.Args;
if (parts.Count == 4)
parts.RemoveAt(3);
if (IsRecognizer)
parts[0] = F.Bool;
parts[1] = F.Id(Name);
// remove OneLiner style to avoid suppresing newlines in output for one-line rules
return Basis.WithArgs(parts).SetStyle(Basis.Style & ~NodeStyle.OneLiner);
} else {
var method = F.Fn(IsRecognizer ? F.Bool : F.Void, F.Id(Name), F.List());
if (IsPrivate == true)
method = F.Attr(F.Id(S.Private), method);
else if (IsStartingRule | IsToken)
method = F.Attr(F.Id(S.Public), method);
return method;
}
}