@Override
	public WorkSheetHandle copyWorkSheet( String SourceSheetName, String NewSheetName ) throws WorkSheetNotFoundException
	{
		try
		{
			mybook.copyWorkSheet( SourceSheetName, NewSheetName );
		}
		catch( Exception e )
		{
			throw new WorkBookException( "Failed to copy WorkSheet: " + SourceSheetName + ": " + e.toString(),
			                             WorkBookException.RUNTIME_ERROR );
		}
		mybook.getRefTracker().clearPtgLocationCaches( NewSheetName );
		// update the merged cells (requires a WBH, that's why it's here)
		WorkSheetHandle wsh = getWorkSheet( NewSheetName );
		if( wsh != null )
		{
			List mc = wsh.getMysheet().getMergedCellsRecs();
			for( Object aMc : mc )
			{
				Mergedcells mrg = (Mergedcells) aMc;
				if( mrg != null )
				{
					mrg.initCells( this );
				}
			}
			// now conditional formats
            /*
            mc = wsh.getMysheet().getConditionalFormats();
            for (int i=0;i<mc.size();i++) {
                Condfmt mrg = (Condfmt)mc.get(i);
                if (mrg != null)mrg.initCells(this);
            }
            */
		}
		return wsh;
	}