protected override object Read(PushbackTextReader r, char c, object opts, object pendingForms)
{
pendingForms = EnsurePending(pendingForms);
Object name = read(r, true, null, false, opts, pendingForms);
Symbol sym = name as Symbol;
if (sym == null)
throw new ArgumentException("Reader tag must be a symbol");
Object form = read(r, true, null, true, opts, pendingForms);
if (IsPreserveReadCond(opts) || RT.suppressRead())
{
return TaggedLiteral.create(sym, form);
}
else
{
return sym.Name.Contains(".") ? ReadRecord(form, sym, opts, pendingForms) : ReadTagged(form, sym, opts, pendingForms);
}
}