public static IWriter2 <T, TableRowContent> HeaderCells <T>(this IWriter2 <T, TableRowContent> target, object value) where T : TableRow { var tcw = value as IWriter2 <TableHeaderCell, AnyContent>; if (tcw != null) { target.Item.AddCell(tcw.Item); return(target); } var tc = value as TableHeaderCell; if (tc != null) { target.Item.AddCell(tc); return(target); } tc = new TableHeaderCell(); tc.AddContent(value); target.Item.AddCell(tc); return(target); }