private Operand ParseOperand()
        {
            var operand = TryExtractVariants(new Func <AstNode>[] {
                ParseReceiver,
                ParseReference,
                () => ParseLiteral(false),
            });

            if (operand == null)
            {
                var t = NextToken();

                throw SyntaxError.Make(SyntaxErrorMessages.OPERAND_EXPECTED, t);
            }

            var node = new Operand();

            node.AddChild(operand);

            return(node);
        }