public void writeRecs( BiffRec b, BufferedWriter writer, int level ) throws IOException
			{
				String tabs = "\t\t\t\t\t\t\t\t\t\t";
				if( b == null )
				{
					return;
				}
				writer.write( tabs.substring( 0, level ) + b.getClass().toString().substring( b.getClass()
				                                                                               .toString()
				                                                                               .lastIndexOf( '.' ) + 1 ) );
				if( b instanceof SeriesText )
				{
					writer.write( "\t[" + b.toString() + "]" );
				}
				else if( b instanceof MSODrawing )
				{
					writer.write( "\t[" + b.toString() + "]" );
					//								writer.write("\t[" + ByteTools.getByteDump(b.getData(), 0).substring(11)+ "]");
					writer.write( ((MSODrawing) b).debugOutput() );
					writer.write( "\t[" + ByteTools.getByteDump( b.getData(), 0 ).substring( 11 ) + "]" );
				}
				else if( b instanceof Obj )
				{
					writer.write( ((Obj) b).debugOutput() );
				}
				else if( b instanceof Label )
				{
					writer.write( "\t[" + b.getStringVal() + "]" );
				}
				else // all else, write bytes
				{
					writer.write( "\t[" + ByteTools.getByteDump( ByteTools.shortToLEBytes( b.getOpcode() ),
					                                             0 ) + "][" + ByteTools.getByteDump( b.getData(), 0 )
					                                                                   .substring( 11 ) + "]" );
				}
				writer.newLine();
				try
				{
					if( ((GenericChartObject) b).chartArr.size() > 0 )
					{
						ArrayList<XLSRecord> chartArr = ((GenericChartObject) b).chartArr;
						for( XLSRecord aChartArr : chartArr )
						{
							writeRecs( aChartArr, writer, level + 1 );

						}
					}
				}
				catch( ClassCastException ce )
				{
					;
				}
			}