public static LNode of(LNode node, IMessageSink sink)
{
LNode kind;
if (node.ArgCount == 2 && (kind = node.Args[0]).IsId)
{
if (kind.IsIdNamed(_array))
{
return(node.WithArgChanged(0, kind.WithName(S.Array)));
}
if (kind.IsIdNamed(_opt))
{
return(node.WithArgChanged(0, kind.WithName(S.QuestionMark)));
}
if (kind.IsIdNamed(_ptr))
{
return(node.WithArgChanged(0, kind.WithName(S._Pointer)));
}
}
else if (node.ArgCount == 3 && (kind = node.Args[0]).IsIdNamed(_array) && node.Args[1].IsLiteral)
{
return(node.WithArgs(kind.WithName(S.GetArrayKeyword((int)node.Args[1].Value)), node.Args[2]));
}
return(null);
}