macro dot(obj: typed; fld: string): untyped
template hasField(t: typed; fieldName: static string): bool