% Legal Style Citations using OSCOLA
% Copyright Paul Stanley 2014-2018
% This work consists of oscola.bbx, english-oscola.lbx, british-oscola.lbx,
% oscola.cbx, american-oscola.lbx and oscola.ist.
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% of this license or (at your option) any later version.
% The latest version of the license is in
%      http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status 'maintained'.
% The current maintainer of this work is Paul Stanley (pstanley@essexcourt.net)

\ProvidesFile{oscola.bbx}[2020/03/15 v1.7 Biblatex bibliography style for OSCOLA standard]

\RequireBibliographyStyle{authortitle}

\RequireBiber[3]

\DeclareBibliographyOption{caseshorthands}[false]{%
  \ifstrequal{#1}{italic}
    {\DeclareFieldFormat[jurisdiction]{shorthand}{\textit{##1}}}
    {}}

\newtoggle{bbx@capibid}% Capitalize Ibid in footnotes
\DeclareBibliographyOption{ibidstyle}[lc]{%
  \ifstrequal{#1}{uc}
    {\global\toggletrue{bbx@capibid}}
    {\togglefalse{bbx@capibid}}}

\newtoggle{bbx@ecliuse}\newtoggle{bbx@eclionly}
\DeclareBibliographyOption{ecli}[add]{%
  \ifstrequal{#1}{no}
    {\global\togglefalse{bbx@ecliuse}\global\togglefalse{bbx@eclionly}}
    {\global\toggletrue{bbx@ecliuse}
     \ifstrequal{#1}{only}
       {\global\toggletrue{bbx@eclionly}}
       {}}}

\newcommand{\bbx@juriscitationindexlist}{}
\listadd{\bbx@juriscitationindexlist}{{eu}{eujuriscitation:index}}
\listadd{\bbx@juriscitationindexlist}{{echr}{echrjuriscitation}}
\listadd{\bbx@juriscitationindexlist}{{int}{intjuriscitation}}
\listadd{\bbx@juriscitationindexlist}{{ca}{canjuriscitation}}
\listadd{\bbx@juriscitationindexlist}{{us}{usjuriscitation}}
\newcommand{\bbx@defaultjuriscitationindex}{enjuriscitation}

\newtoggle{bbx@shortindex}

\DeclareBibliographyOption{shortindex}[true]{%
  \toggletrue{bbx@shortindex}%
  \renewcommand{\bbx@juriscitationindexlist}{}%
  \listadd{\bbx@juriscitationindexlist}{{eu}{eujuriscitation:index:short}}%
  \renewcommand{\bbx@defaultjuriscitationindex}{juriscitation:index:short}}

% We ensure that there will always be a trash index
\AtEndPreamble{%
  \@ifpackageloaded{imakeidx}{\makeindex[name=trash]}
     {\@ifclassloaded{memoir}{\PackageWarning{biblatex-oscola}{To use indexing with OSCOLA and the memoir class, you need to load imakeidx.}}
       {\@ifpackageloaded{index}{\newindex{trash}{tdx}{tnd}{Miscellaneous}}
         {\@ifpackageloaded{multind}{\PackageWarning{biblatex-oscola}{Multind is incompatible with biblatex-oscola. Use imakeidx or index}}
           {\iftoggle{blx@citeindex}
             {\PackageWarning{biblatex-oscola}
             {You need to load imakeidx or index. Indexing will probably fail:}}{}}}}}}

% The bibliography and citation styles use different forms of name
\AtBeginBibliography{%
  \toggletrue{abx@bool@giveninits}%
  \DeclareNameAlias{default}{family-given}%
  \DeclareNameAlias{editor}{given-family}}

% Github issue 5 refers: Moewe points out that I don't need a redefinition of
% the name:family-given bibmacro, but can simply do the following
\renewcommand*{\revsdnamepunct}{}

\DeclareNameAlias{sortname}{family-given}

% This deals with initials: we need to format them without dots 
% and close together: HLA not H.L.A. or H. L. A. or H L A
% The terseinits=true setting is not sufficient
\renewcommand*\bibinitperiod{}
\renewcommand*\bibinitdelim{}
\let\oldbibnamedelima\bibnamedelima
\let\oldbibnamedelimb\bibnamedelimb
\let\oldbibnamedelimc\bibnamedelimc
\let\oldbibnamedelimd\bibnamedelimd
\let\oldbibnamedelimi\bibnamedelimi
\global\newtoggle{bbx@initsep}
\renewcommand\bibnamedelima{%
  \iftoggle{bbx@initsep}
    {\togglefalse{bbx@initsep}}
    {\oldbibnamedelima}}
\renewcommand\bibnamedelimb{%
  \iftoggle{bbx@initsep}
    {\togglefalse{bbx@initsep}}
    {\oldbibnamedelimb}}
\renewcommand\bibnamedelimc{%
  \togglefalse{bbx@initsep}%
  \oldbibnamedelimc}
\renewcommand\bibnamedelimd{%
  \togglefalse{bbx@initsep}%
  \oldbibnamedelimd}
\renewcommand\bibnamedelimi{%
  \togglefalse{bbx@initsep}%
  \oldbibnamedelimi}

\def\bbxinitsep{%
  \toggletrue{bbx@initsep}}

% Standardised options
\ExecuteBibliographyOptions{urldate=long,
                            dateabbrev=false,
                            doi=false,
                            eprint=false,
                            usetranslator=true,
                            sorting=niyt}

\urlstyle{rm}% We don't want monospaced urls

% If books are earlier than this year, the location gets printed
% instead of the publisher
\def\bibyearwatershed{1800}

% Various toggles used for entry options

\newtoggle{bbx:scotstyle}
\newtoggle{bbx:suppressibid}
\newtoggle{bbx:looseleaf}
\newboolean{bbx@year-essential}\setboolean{bbx@year-essential}{false}

% Entry options
\DeclareEntryOption{scottish-style}[true]{%
  \settoggle{bbx:scotstyle}{#1}}
\DeclareEntryOption{no-ibid}[true]{%
  \settoggle{bbx:suppressibid}{#1}}
\DeclareEntryOption{looseleaf}[true]{%
  \settoggle{bbx:looseleaf}{#1}}
\DeclareEntryOption{year-essential}[true]{%
    \setboolean{bbx@year-essential}{#1}}

\DeclareLanguageMappingSuffix{-oscola}

% Various aliases
\DeclareBibliographyAlias{inproceedings}{book}
\DeclareBibliographyAlias{booklet}{book}
\DeclareBibliographyAlias{collection}{book}
\DeclareBibliographyAlias{incollection}{inbook}
\DeclareBibliographyAlias{techreport}{report}
\DeclareBibliographyAlias{manual}{report}
\DeclareBibliographyAlias{proceedings}{book}
\DeclareBibliographyAlias{unpublished}{misc}
\DeclareBibliographyAlias{mvbook}{book}
\DeclareBibliographyAlias{bookinbook}{inbook}
\DeclareBibliographyAlias{supbook}{inbook}
\DeclareBibliographyAlias{mvcollection}{book}
\DeclareBibliographyAlias{supcollection}{inbook}

% This deals with suppression of the postnote delimiter after brackets. It
% should be refactored to use a toggle rather than a counter

\newcounter{bbx@suppresspostnotedelim}
\newcommand{\bbx@resetpostnotedelim}{\setcounter{bbx@suppresspostnotedelim}{0}}
\newcommand{\bbx@unsetpostnotedelim}{\setcounter{bbx@suppresspostnotedelim}{1}}
\setcounter{bbx@suppresspostnotedelim}{0}

% This is a package-specific temporary counter
\newcounter{blx@tmpcnt}

% This is used in constructing publication information

\newboolean{bbx@pubinfopunct}
\newcommand{\bbx@pubinfostart}
{\setboolean{bbx@pubinfopunct}{false}}

\newcommand{\bbx@pubinfoprint}{%
  \ifthenelse{\(\boolean{bbx@pubinfopunct}\)}%
    {\printtext{\addcomma\space}}%
    {\setboolean{bbx@pubinfopunct}{true}%
     \printtext{(}}}

\newcommand{\bbx@pubinfostop}{%
  \ifthenelse{\( \boolean{bbx@pubinfopunct} \)}%
    {\printtext{)}\bbx@unsetpostnotedelim}
    {}}

% Many of these are "legacies" and probably not really required. I haven't been able
% to work out why I seem always to need the starred form to get this to work
\newcommand\nameaddonpseud{pseudonym}
\newcommand\subtypemag{magazine}
\newcommand*\subtypenewsp{newspaper}
\newcommand\subtypeclassic{classic}
\newcommand\subtypebiblical{biblical}
\newcommand\subtypeearlybook{canon}
\newcommand\subtypevideo{video}
\newcommand\entrytypearchive{customa}
\newcommand\subtypevolume{volume}
\newcommand\subtypeonline{online}
\newcommand\subtypedatabase{database}
\newcommand\subtypeblog{blog}
\newcommand\subtypelistmessage{listmessage}
\newcommand\subtypebooklike{book}
\newcommand\subtypepublicdocument{gov}
\newcommand\authortypeanon{anonymous}
\newcommand\authortypeunsure{anonymous?}
\newcommand\authortyperedundant{redundant}
\newcommand\authortypealternate{alternate}
\newcommand\authortypejournal{journal}
\newcommand\subtypeintro{to}
\newcommand\subtypeexcerpt{from}
\newcommand\subtypenone{none}
\newcommand\edtypecorp{corporate}
\newcommand\entrytypeper{periodical}
\newcommand\entrytypemanual{manual}
\newcommand\entrytypecoll{collection}
\newcommand\entrytypebook{book}
\newcommand*\subtypeprimarylegislation{primary}
\newcommand*\subtypesecondarylegislation{secondary}
\newcommand*\subtypecourtrules{procedure-rule}
\newcommand\entrytyperef{reference}
\newcommand\entrytypeproc{proceedings}
\newcommand\entrytypereport{report}
\newcommand\entrytypebooklet{booklet}
\newcommand\entrytypemisc{misc}
\newcommand\entrytypeonline{online}
\newcommand\entrytypevideo{video}
\newcommand\entrytypeaudio{audio}
\newcommand\entrytypebookinbook{bookinbook}
\newcommand\entrytypearticle{article}
\newcommand\entrytypelegislation{legislation}
\newcommand\entrytypeletter{letter}
\newcommand\entrytypeperformance{performance}
\newcommand\optionaddoriginal{addorig}
\newcommand\optionnoreprints{none}
\newcommand\optionorigfirst{origfirst}
\newcommand\optiontransfromorig{transfrom}
\newcommand\optionorigtransas{transas}
\newcommand\optiondoubledate{doubledate}
\newcommand\noplace{np}
\newcommand\nopublisher{np}
\newcommand*\officialjournaltitle{OJ}
\newcommand*\ojspecedtitle{OJ Spec Ed}
\newcommand*\ecrreporttitle{ECR}
\newcommand*\commission{commission}
\newcommand*\Commission{Commission}
\newcommand*\pcijrep{PCIJ Rep}
\newcommand*\explanatorynote{explanatory note}
\newcommand*\eudirective{directive}
\newcommand*\euregulation{regulation}
\newcommand*\eudecision{decision}
\newcommand*\treatysubtype{piltreaty}
\newcommand*\comdocsubtype{comdoc}
\newcommand*{\jurisechr}{echr}
\providecommand*\eutreaty{eu-treaty}
\newcommand*\casenote{casenote}
\newcommand*\pagemarkings{page}
\newcommand*\paragraphmarkings{[]}
\newcommand*\paragraphtext{paragraph}
\newcommand*\seriesa{Series A}
\newcommand*\echrreports{ECHR}
\newcommand*\decisionsandreports{DR}
\newcommand*\collectionofdecisions{CD}
\newcommand*{\parliamentarytype}{parliamentary}
\newcommand*{\houseofcommons}{HC}
\newcommand*{\houseoflords}{HL}
\newcommand*\undoctype{undoc}

% Some basic redefinitions and formatting
\renewcommand\newunitpunct{\addspace}
\renewcommand{\newblockpunct}{\addspace}
\renewcommand{\subtitlepunct}{\addcolon\addspace}
\newcommand{\extracitedelim}{\addcomma\space}
\newcommand\casenotetext{\bibstring{casenote}}
\newcommand\firstpublishedstr{\bibstring{firstpublished}}
\newcommand*{\legalstarturl}{\ensuremath{\langle}}
\newcommand*{\legalendurl}{\ensuremath{\rangle}}

% Data Inheritances
\DeclareDataInheritance{reference,mvreference}{inreference}{%
  \inherit{title}{booktitle}
  \inherit{volume}{userb}
  \inherit{date}{date}
  \inherit{edition}{edition}
  \inherit{pagination}{pagination}
  \noinherit{editor}
  \noinherit{author}}
\DeclareDataInheritance{legal}{legal}{%
  \inherit{shorttitle}{title}
  \inherit{indextitle}{indextitle}
  \inherit{title}{indextitle}
  \inherit{indexsortitle}{indexsorttitle}
  \inherit{title}{indexsorttitle}
  \inherit{pagination}{pagination}
  \inherit{type}{type}
  \inherit{entrysubtype}{entrysubtype}}
\DeclareDataInheritance{jurisdiction}{article}{%
  \noinherit{volume}
  \noinherit{series}
  \noinherit{journaltitle}
  \noinherit{pages}
  \noinherit{date}
  \noinherit{institution}
  \noinherit{issue}
  \noinherit{number}
  \noinherit{url}
  \noinherit{urldate}}

% These functions are used to identify whether an EU
% case number is one case or more than one

\def\legal@blank{|}
\def\legal@optionone{}
\def\legal@optiontwo{}
\def\legal@containscommai#1,#2*{%
    \def\@tempa{#2}%
    \ifx\@tempa\legal@blank%
    \relax%
    \else%
    \global\let\legal@result\legal@optiontwo%
    \fi}
\def\legal@containsandi#1and#2*{%
   \def\@tempa{#2}%
   \ifx\@tempa\legal@blank%
   \relax%
   \else%
   \global\let\legal@result\legal@optiontwo%
   \fi}
\def\legal@containshypheni#1--#2*{%
  \def\@tempa{#2}%
  \ifx\@tempa\legal@blank%
  \relax%
  \else%
  \global\let\legal@result\legal@optiontwo%
  \fi}%

\def\legal@containscomma#1{\edef\legal@tempa{#1}\expandafter\legal@containscommai\legal@tempa,|*}
\def\legal@containsand#1{\edef\legal@tempa{#1}\expandafter\legal@containsandi\legal@tempa and|*}
\def\legal@containshyphen#1{\edef\legal@tempa{#1}\expandafter\legal@containshypheni\legal@tempa--|*}

\newbibmacro{seteucases}{%
  \iffieldundef{type}
  {\global\def\legal@result{\bibstring{eucase}}%
  \global\def\legal@optiontwo{\bibstring{eujoinedcases}}%
  \legal@containscomma{\thefield{number}}%
  \legal@containsand{\thefield{number}}%
  \legal@containshyphen{\thefield{number}}%
  \legal@result}
  {\strfield{type}}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Various commands
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\newcommand\paratextformatted[1]{%
  \ifnumeral{#1}
  {\bibstring{paragraph}\addspace\printtext{#1}}
  {\ifnumerals{#1}
    {\bibstring{paragraphs}\addspace\printtext{#1}}
    {\printtext{#1}}}}

% Field Formats

\DeclareFieldFormat{paragraph:text}{\paratextformatted{#1}}
\DeclareFieldFormat{url}{\legalstarturl\url{#1}\legalendurl}
\DeclareFieldFormat{urldate}{\bibstring{urlseen}\space#1}
\DeclareFieldFormat{postnote:old}{%
  \ifentrytype{legislation}%
   {\usebibmacro{legref}}%
   {\mkpageprefix[pagination]{#1}}}
\DeclareFieldFormat{paragraphed}{\formatpostnote{#1}}
\DeclareFieldFormat{postnote}{#1}
\DeclareFieldFormat{multipostnote}{#1}
\DeclareFieldFormat{note}{\mkbibparens{#1}}
\DeclareFieldFormat[article]{pages}{%
  \mkfirstpage*{#1}}
\DeclareFieldFormat[legislation]{pages}{%
  \mkfirstpage*{#1}}
\DeclareFieldFormat[jurisdiction]{pages}{%
  \mkfirstpage*{#1}}
\DeclareFieldFormat[jurisdiction]{usere}{%
  \mkfirstpage*{#1}}
\DeclareFieldFormat[jurisdiction]{title}{\mkbibemph{#1}}
\DeclareFieldFormat[jurisdiction]{subtitle}{\mkbibemph{#1}}
\DeclareFieldFormat[legal]{pages}{\mkfirstpage{#1}}
\DeclareFieldFormat[inreference]{title}{\mkbibquote{#1}}
\DeclareFieldFormat{newstitle}{\emph{#1}}
\DeclareFieldFormat{intsubtitle}{\mkbibemph{#1}}
\DeclareFieldFormat{journaltitle}{#1} % Journal Titles: Roman Type
\DeclareFieldFormat{day}{#1}
\DeclareFieldFormat{international}{%
  \iffieldequals{journaltitle}{\pcijrep}
     {\bibcpstring{jourser}\space #1}
     {#1}}
\DeclareFieldFormat{romanvol}{%
  \RN{#1}}
\DeclareFieldFormat[jurisdiction]{volume}{#1}
\DeclareFieldFormat{quoted}{\mkbibquote{#1}}
\DeclareFieldFormat[online]{title}{\mkbibquote{#1}}
\DeclareFieldFormat[online]{note}{#1}
\DeclareFieldFormat[online]{journaltitle}{\textit{#1}}
\DeclareFieldFormat[thesis]{title}{\mkbibquote{#1}}
\DeclareFieldFormat[misc]{title}{#1}
\DeclareFieldFormat[misc]{journaltitle}{\mkbibquote{#1}}
\DeclareFieldFormat[misc]{pages}{\mkfirstpage*{#1}}
\DeclareFieldFormat[misc]{volume}{#1}
\DeclareFieldFormat{casenotetitle}{\mkbibquote{\mkbibemph{#1}}}
\DeclareFieldFormat{usseries}{\ifinteger{#1}{\mkusbibordinal{#1}}{#1}}
\DeclareFieldFormat[legislation]{title}{#1}
\DeclareFieldFormat[legal]{title}{#1}
\DeclareFieldFormat{untitle}{#1}
\DeclareFieldFormat{verba}{#1}

\DeclareListFormat[jurisdiction]{extracites}{%
  \extracitedelim #1}

\DeclareListFormat[jurisdiction]{listb}{}

\DeclareListFormat{ecthr}{%
   \ifboolexpr{ (test {\ifdefstring{\Commission}{#1}} or
                  test {\ifdefstring{\commission}{#1}} ) }%
       {\printtext{\mkbibparens{\bibstring{commissiondecision}}}\bbx@unsetpostnotedelim}%
       {}}

\DeclareListFormat[jurisdiction]{institution}{%
   \ifthenelse{\( \value{listtotal}=1 \or \value{listcount}=\value{listtotal} \)}%
     {#1}%
     {\setcounter{blx@tmpcnt}{\value{listcount}}\addtocounter{blx@tmpcnt}{1}%
      \ifthenelse {\( \value{blx@tmpcnt}=\value{listtotal}\)}%
         {#1\space\bibstring{and}\addspace}%
         {#1\addcomma\space}}}%


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Principal Drivers
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\DeclareBibliographyDriver{article}{%
  \bbx@resetpostnotedelim%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/translator+others}%
  \setunit{\addcomma\space}\newblock
  \usebibmacro{journaltitle}%
  \setunit{\addspace}%
  \printlist{language}%
  \setunit{\addspace}\newblock
  \usebibmacro{byauthor}%
  \setunit{\addspace}\newblock
  \usebibmacro{bytranslator+others}%
  \setunit{\addspace}\newblock
  \printfield{version}%
  \setunit{\addspace}\newblock%
  \usebibmacro{journal+issuetitle}%
  \setunit{\addspace}\newblock
  \usebibmacro{byeditor+others}%
  \setunit{\addspace}%
  \usebibmacro{note+pages}%
  \setunit{\addspace}%
  \usebibmacro{doi+eprint+url}%
  \setunit{\addspace}%
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}%
  \usebibmacro{pageref}%
  \usebibmacro{finentry}}

\DeclareBibliographyDriver{book}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/editor+others/translator+others}%
  \setunit{\addcomma\space}\newblock
  \usebibmacro{maintitle+title}%
  \newunit
  \usebibmacro{publicationinfo}%
  \newunit\newblock%
  \usebibmacro{revisedbookvolume}%
  \newunit\newblock%
  \usebibmacro{doi+eprint+url}%
  \newunit\newblock
  \setunit{\bibpagerefpunct}\newblock
  \newunit%
  \usebibmacro{pageref}%
  \usebibmacro{finentry}}%

\DeclareBibliographyDriver{commentary}{%
  \usebibmacro{begentry}%
  \ifkeyword{sc}%
  {\usebibmacro{scotscommentary}}
  {\usebibmacro{encommentary}}%
  \bbx@unsetpostnotedelim%
     \setunit{\bibpagerefpunct}%
   \newunit\newblock
   \usebibmacro{pageref}%
  \usebibmacro{finentry}}

\DeclareBibliographyDriver{commentary:index}{%
  \usebibmacro{begentry}%
  \printfield[default]{indextitle}}

\DeclareBibliographyDriver{inbook}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/translator+others}%
  \setunit{\addcomma\space}\newblock
  \usebibmacro{title}%
  \usebibmacro{byauthor}%
  \usebibmacro{in:}%
  \newunit\newblock%
  \usebibmacro{bybookauthor/editor/translator}%
  \newblock%
  \usebibmacro{maintitle+booktitle}%
  \newunit\newblock
  \newunit\newblock
  \usebibmacro{publicationinfo}%
  \newunit\newblock
  \usebibmacro{revisedbookvolume}%
  \usebibmacro{doi+eprint+url}%
  \newunit\newblock%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \usebibmacro{finentry}}

\DeclareBibliographyDriver{inreference}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/translator+others}%
  \clearlist{publisher}%
  \newunit\newblock
  \usebibmacro{title}%
  \usebibmacro{byauthor}%
  \setunit{\addcomma\space}%
  \setunit{\addcomma\space}%
  \usebibmacro{maintitle+booktitle}%
  \newunit
  \usebibmacro{publicationinfo:short}%
  \usebibmacro{revisedbookvolume}%
  \usebibmacro{doi+eprint+url}%
  \newunit\newblock
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \usebibmacro{finentry}}

\DeclareBibliographyDriver{jurisdiction}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \bbx@resetpostnotedelim%
  \usebibmacro{juriscitation}%
  \usebibmacro{finentry}}

\DeclareBibliographyDriver{jurisdiction:index}{%
  \usebibmacro{begentry}%
  \DeclareFieldAlias[jurisdiction]{title}[default]{title}%
  \DeclareFieldAlias[jurisdiction]{intsubtitle}[default]{title}%
  \DeclareListAlias[jurisdiction]{listb}[jurisdiction]{extracites}%
  \usebibmacro{juriscitation:index}%
  \usebibmacro{finentry}}

\DeclareBibliographyDriver{jurisdiction:refonly}{%
  \clearfield{title}%
  \clearfield{titleaddon}%
  \clearfield{title}%
  \usedriver{}{jurisdiction}}

\DeclareBibliographyDriver{jurisdiction:reponly}{%
  \usebibmacro{begentry}%
  \usebibmacro{altreportvolume}%
  \newunit\newblock
  \usebibmacro{altjournaltitle}%
  \newunit\newblock
  \usebibmacro{altseries}%
  \newunit\newblock
  \usebibmacro{altjurisdictionpages}%
  \usebibmacro{finentry}}

\DeclareBibliographyDriver{legal}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \iffieldequals{entrysubtype}{\explanatorynote}
    {\printfield[default]{title}\newunit\newblock}    
    {\iffieldequals{entrysubtype}{\parliamentarytype}
      {\usebibmacro{legal:parliamentary}}
      {\iffieldequals{entrysubtype}{\treatysubtype}
         {\usebibmacro{treatycitation}}
         {\usebibmacro{treatycitation}}}}%
  \newunit\newblock
  \usebibmacro{legislation:note}%
  \newunit\newblock
  \setunit{\bibpagerefpunct}%
  \usebibmacro{pageref}%
  \usebibmacro{finentry}}

\DeclareBibliographyDriver{legal:index}{%
 \savefield{indextitle}{\bbx@tempa}%
 \restorefield{title}{\bbx@tempa}%
  \usebibmacro{begentry}%
  \iffieldequals{entrysubtype}{\explanatorynote}
    {\printfield[default]{title}\newunit\newblock}      
    {\iffieldequals{entrysubtype}{\parliamentarytype}
      {\usebibmacro{legal:parliamentary:index}}
      {\iffieldequals{entrysubtype}{\treatysubtype}
         {\usebibmacro{treatycitation}}
         {\usebibmacro{treatycitation}}}}
  \usebibmacro{finentry}}

\DeclareBibliographyDriver{legislation}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \iffieldequals{entrysubtype}{\subtypecourtrules}%
    {\usebibmacro{courtrules}}
    {\ifkeyword{draft}%
       {\usebibmacro{legislation:bill}}%
       {\ifkeyword{eu}%
         {\usebibmacro{eulegislation}}%
         {\printfield[default]{title}%
          \setunit{\addspace}%
          \printfield[default]{year}%
          \setunit*{\addspace}%
          \usebibmacro{legnumber}%
          \newunit\newblock
          \usebibmacro{legsupp}}}}% Adds additional material for welsh statutory instruments
  \newunit
  \usebibmacro{legislation:note}%
  \usebibmacro{finentry}}

\DeclareBibliographyDriver{legislation:index}{%
    \usebibmacro{begentry}%
    \ifboolexpr{ test {\ifkeyword{eu}} 
                 and not test {\iffieldequals{entrysubtype}{\eutreaty}}}
      {\usebibmacro{legislation:index:eu}}%
      {\ifkeyword{draft}
        {\usebibmacro{legislation:bill}}
        {\usebibmacro{legislation:index:general}}}%
    \usebibmacro{finentry}}

\newbibmacro{legislation:index:general}{%
    \printfield[default]{indextitle}%
    \newunit
    \ifkeyword{eu}{}{\printfield[default]{year}}%
    \newunit
    \usebibmacro{legnumber}%
    \newunit
    \ifkeyword{eu}{\usebibmacro{eulegref}}{}
    \usebibmacro{legsupp}}

\newbibmacro{legislation:index:eu}{%
    \iffieldundef{type}
     {}
     {\ifbibxstring{\thefield{type}}%
        {\printtext{\bibcpstring{\thefield{type}}}}
        {\printtext{\MakeCapital{\thefield{type}}}}}
    \newunit
    \printfield{number}%
    \newunit
    \usebibmacro{eulegref}}

\DeclareBibliographyDriver{misc}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \iffieldequals{entrysubtype}{\undoctype}
  {\usebibmacro{undoc}}
  {\usebibmacro{author/editor+others/translator+others}%
  \setunit*{\addcomma\space}%
  \usebibmacro{misctitle}%
  \newunit\newblock
  \usebibmacro{publicationinfo}%
  \newunit\newblock
  \usebibmacro{doi+eprint+url}}%
  \newunit\newblock
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \usebibmacro{finentry}}

%\DeclareBibliographyDriver{misc:index}{%
%  \printfield{indextitle}}%

\DeclareBibliographyDriver{online}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/editor+others/translator+others}%
  \setunit{\addcomma\space}%
  \newblock
  \usebibmacro{online:title}%
  \newunit
  \usebibmacro{publicationinfo:online}%
  \newunit\newblock%
  \usebibmacro{doi+eprint+url}%
  \newunit\newblock
  \setunit{\bibpagerefpunct}\newblock
  \newunit%
  \usebibmacro{pageref}%
  \usebibmacro{finentry}}

\DeclareBibliographyDriver{patent}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author}%
  \setunit{\labelnamepunct}\newblock
  \usebibmacro{title}%
  \newunit\newblock
  \printtext{\bibopenparen}%
  \printlist{language}%
  \setunit*{\addspace}%
  \usebibmacro{byauthor}%
  \setunit*{\addcomma\space}%
  \printfield{type}%
  \ifboolexpr{test {\iffieldundef{byauthor}} and test {\iffieldundef{type}}}
    {\unspace\setunit{}}
    {\setunit*{\addspace}}%
  \printfield{number}%
  \iflistundef{location}
    {}
    {\setunit*{\addspace}%
     \printtext[parens]{%
       \printlist[][-\value{listtotal}]{location}}}%
  \setunit*{\addcomma\space}%
  \usebibmacro{byholder}%
  \setunit*{\addcomma\space}%
  \printfield{note}%
  \setunit{\addspace}%
  \usebibmacro{date}%
  \printtext{\bibcloseparen}%
  \newunit\newblock
  \usebibmacro{doi+eprint+url}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  \usebibmacro{related}%
  \usebibmacro{finentry}}

\DeclareBibliographyDriver{periodical}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{editor}%
  \setunit{\addcomma\space}\newblock
  \printfield{title}%
  \setunit*{\addspace}%
  \iffieldundef{series}
    {}
    {\newunit
     \printfield{series}%
     \setunit{\addspace}}%
  \setunit{\addcolon\space}%
  \usebibmacro{issue}%
  \setunit{\addspace}%
  \printlist{language}%
  \setunit{\addspace}\newblock
  \printfield{version}%
  \setunit{\addspace}\newblock%
  \usebibmacro{journaldate}%
  \newunit
  \usebibmacro{volume+number+eid}%
  \newunit\newblock
  \usebibmacro{byeditor+others}%
  \setunit{\addspace}
  \usebibmacro{note+pages}%
  \setunit{\addspace}
  \usebibmacro{doi+eprint+url}%
  \setunit{\addspace}
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}%
  \usebibmacro{pageref}%
  \usebibmacro{finentry}}

\DeclareBibliographyDriver{reference}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{maintitle+title}%
  \newunit
  \iftoggle{bbx:looseleaf}
   {\bbx@resetpostnotedelim}
   {\usebibmacro{publicationinfo:short}%
    \newunit\newblock%
    \usebibmacro{revisedbookvolume}%
    \newunit\newblock%
    \usebibmacro{doi+eprint+url}%
    \newunit\newblock}%
   \setunit{\bibpagerefpunct}%
   \newunit\newblock
   \usebibmacro{pageref}%
   \usebibmacro{finentry}}%

\DeclareBibliographyDriver{report}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \iffieldequals{entrysubtype}{\comdocsubtype}%
     {\usebibmacro{comdoc}}%
     {\usebibmacro{report:standard}}%
  \usebibmacro{doi+eprint+url}%
  \newunit\newblock
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \usebibmacro{finentry}}

\DeclareBibliographyDriver{report:refonly}{%
  \iffieldequals{entrysubtype}{\comdocsubtype}
    {\usebibmacro{bibindex}%
     \usebibmacro{begentry}%
     \printfield{number}%
     \newunit\newblock
     \usebibmacro{finentry}}%
     {\usedriver{}{report}}}%

\DeclareBibliographyDriver{report:index}{%
  \usebibmacro{begentry}%
  \iffieldequals{entrysubtype}{\comdocttype}
   {\printfield{number}}
   {\printfield[default]{indextitle}%
    \newunit
    \usebibmacro{report:index:info}}%
  \usebibmacro{finentry}}

\DeclareBibliographyDriver{thesis}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author}%
  \setunit{\addcomma\space}%
  \newblock
  \printfield{title}%
  \newunit
  \usebibmacro{thesis:info}%
  \newunit\newblock%
  \usebibmacro{doi+eprint+url}%
  \newunit\newblock
  \setunit{\bibpagerefpunct}\newblock
  \newunit%
  \usebibmacro{pageref}%
  \usebibmacro{finentry}}%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Bibmacros
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\newbibmacro*{altjournaltitle}{%
  \iffieldundef{userc}
    {\printfield{journaltitle}\newunit}
    {\printfield{userc}}}

\newbibmacro*{altjurisdictionpages}{%
  \iffieldundef{usere}%
     {\usebibmacro{jurisdictionpages}}
     {\printfield{usere}}}%

\newbibmacro{altreportdetails}{%
  \restorefield{prenote}{\postnotesecond}%
  \iffieldundef{userc}%
    {}%
    {\usebibmacro{altreportvolume}%
     \newunit\newblock
     \usebibmacro{altjournaltitle}%
     \newunit\newblock
     \usebibmacro{altseries}%
     \newunit\newblock
     \usebibmacro{altjurisdictionpages}%
     \iffieldundef{prenote}
       {}
       {\addcomma\space\printfield[postnote]{prenote}}}}

\newbibmacro*{altreportvolume}{%
  \iffieldundef{userb}
    {\usebibmacro{reportvolume}}
    {\printfield{userb}}}

\newbibmacro*{altseries}{%
  \iffieldundef{userd}%
    {\iffieldundef{series}%
     {}%
     {\printfield{series}}}%
    {\printfield{userd}}}

\newbibmacro*{author/editor/institution}{%
  \ifnameundef{author}%
  {\ifnameundef{editor}%
   {\iflistundef{institution}
     {}
     {\printlist{institution}\clearlist{institution}}}
   {\usebibmacro{editor+others}}}
  {\usebibmacro{author}}}

\newbibmacro{bookauthor}{%
  \ifnameundef{bookauthor}
    {}
    {\printnames{bookauthor}}}

\newbibmacro{bookeditor}{%
  \ifnameundef{editor}
    {}
    \printnames{editor}}

\newbibmacro{booktranslator}{%
  \ifnameundef{translator}
    {}
    \printnames{translator}}

\renewbibmacro*{byauthor}{%
  \ifboolexpr{
    test \ifuseauthor
    or
    test {\ifnameundef{author}}
  }%
    {}%
    {\bbx@pubinfoprint%
     \usebibmacro{bytypestrg}{author}{author}%
     \setunit{\addspace}% 
     \printnames[byauthor]{author}}}

\newbibmacro{bookvolume}{%
  \iffieldundef{volume}%
    {}%
    {\setunit{\addspace}%
     \printfield{volume}\newunit}}

\newbibmacro{bybookauthor/editor/translator}{%
  \ifnameundef{bookauthor}
  {\ifnameundef{editor}
    {\ifnameundef{translator}
      {}
      {\usebibmacro{translator+others}\setunit{\addcomma\space}}}
    {\usebibmacro{editor+others}\setunit{\addcomma\space}}}
  {\usebibmacro{bookauthor}\setunit{\addcomma\space}}}

\renewbibmacro*{byeditor+others}{%
  \ifnameundef{editor}%
    {}%
    {\bbx@pubinfoprint%
     \printnames[byeditor]{editor}%
     \setunit{\addspace}%
     \usebibmacro{editorstrg}%
     \clearname{editor}}% 
  \usebibmacro{byeditorx}%
  \newunit
  \usebibmacro{bytranslator+others}}

\renewbibmacro*{bytypestrg}[2]{%
  \iffieldundef{#1type}
    {\bibstring{by#2}}
    {\ifbibxstring{by\thefield{#1type}}
       {\bibstring{by\thefield{#1type}}}
       {\printtext{\thefield{#1type}}}}}

\renewbibmacro*{bytranslator+others}{%
  \ifnameundef{translator}%
    {}
    {\bbx@pubinfoprint%
     \printnames[bytranslator]{translator}%
     \setunit{\addspace}%
     \usebibmacro{translator+othersstrg}%
     \clearname{translator}}%
  \usebibmacro{withothers}}

\newbibmacro{canjuriscitation}{%
 \usebibmacro{title}%
  \newunit\newblock%
  \usebibmacro{neutralcite}%
  \setunit{\addcomma\space}%
  \iffieldundef{journaltitle}%
    {}%
    {\usebibmacro{year+vol+report:can}}%
  \usebibmacro{jurisdictionpages}%
  \usebibmacro{pcitenote}%
  \usebibmacro{altreportdetails}%
  \unspace\printlist[jurisdiction][1-\value{listtotal}]{listb}%
  \newunit\newblock
  \usebibmacro{courtid}%
  \newunit%
  \usebibmacro{court-note}%
  \newblock%
  \newunit}

\newbibmacro*{comdoc}{%
  \usebibmacro{author/editor/institution}%
  \setunit{\addcomma\space}%
  \printfield[quoted]{title}%
  \newunit\newblock%
  \usebibmacro{commission:report:type}%
  \newunit\newblock%
  \printfield{number}%
  \newunit}

\newbibmacro*{commission:report:type}{%
  \iffieldundef{type}%
    {}
    {\printtext{\mkbibparens{\printfield{type}}}}}

\newbibmacro{conferencedate}{%
  \iffieldundef{eventyear}%
    {}
    {\bbx@pubinfoprint\printeventdate}}

\newbibmacro{conferencetitle}{%
  \iffieldundef{eventtitle}
    {}
    {\bbx@pubinfoprint\printfield{eventtitle}}}

\newbibmacro{convenue}{%
  \iffieldundef{venue}
    {}
    {\bbx@pubinfoprint\printfield{venue}}}

\newbibmacro{court-note}{%
  \iffieldundef{note}%
    {}%
    {\printfield{note}%
     \bbx@unsetpostnotedelim}}

\newbibmacro*{courtid}{%
  \iffieldundef{number}%
    {\ifboolexpr {test {\iflistundef{institution}}
                  and test {\iffieldundef{location}}}%
        {\bbx@resetpostnotedelim}%
        {\printtext{\mkbibparens{\printfield{location}%
                                 \newunit
				 \printlist{institution}%
                                 \usebibmacro{unrep:date}}}%
         \bbx@unsetpostnotedelim}%
    }%
    {\bbx@resetpostnotedelim}}

\newbibmacro*{courtrules}{%
  \restorefield{prenote}{\postnotesecond}%
  \iffieldequalstr{shorttitle}{PD}%
    {\printfield{postnote}%
     \clearfield{postnote}%
     \addspace
     \newunit}%
    {}%
  \iffieldundef{shorttitle}%
    {\printfield[default]{title}}%
    {\printfield[default]{shorttitle}}%
  \newblock\newunit
  \iffieldundef{postnote}%
    {\bbx@unsetpostnotedelim}
    {\iffieldequalstr{shorttitle}{CPR}
           {\printfield{postnote}\newunit}
           {\printtext{\bibstring{order}\space%
            \printfield{postnote}\setunit{\addcomma\space}}}}%
  \restorefield{postnote}{\postnotesecond}%
  \usebibmacro{postnote}%
  \global\toggletrue{cbx@postnoteprinted}%
  \newunit\newblock}

\renewbibmacro*{doi+eprint+url}{%
  \iftoggle{bbx:doi}
    {\printfield{doi}}
    {}%
  \newunit\newblock
  \iftoggle{bbx:eprint}
    {\usebibmacro{eprint}}
    {}%
  \newunit\newblock
  \ifboolexpr{ test {\iftoggle{bbx:url}}
               or test {\ifentrytype{online}}}
    {\usebibmacro{url+urldate}}
    {}}


\newbibmacro*{echrreports}{%
  \printfield{journaltitle}%
  \newunit
  \usebibmacro{year}%
  \iffieldundef{volume}
    {}
    {\printtext{--}\printfield[romanvol]{volume}}
  \newunit
  \printfield{pages}}

\newbibmacro{echrjuriscitation}{%
  \usebibmacro{echrtitle}%
  \newunit\newblock
  \iffieldundef{journaltitle}
    {\usebibmacro{echr:unreported}}
    {\usebibmacro{echr:year+vol+report}% Which also deals with pages
     \newunit\newblock
     \usebibmacro{echr:courtid}}%
  \newunit
  \usebibmacro{court-note}%
  \newblock
  \newunit}

\newbibmacro*{echr:courtid}{%
  \ifboolexpr{ (test {\iffieldequals{journaltitle}{\decisionsandreports}}
                or test {\iffieldequals{journaltitle}{\collectionofdecisions}} )}
    {}
    {\printlist[ecthr]{institution}}}

\DeclareListFormat{echrinst}{%
   \ifthenelse{\( \value{listtotal}=1 \or \value{listcount}=\value{listtotal} \)}%
     {\ifboolexpr{ (test {\ifdefstring{\Commission}{#1}}
                   or test {\ifdefstring{\commission}{#1}} )}
       {\bibstring{commissiondecision}}%
       {#1}}%
     {\setcounter{blx@tmpcnt}{\value{listcount}}\addtocounter{blx@tmpcnt}{1}%
      \ifthenelse {\( \value{blx@tmpcnt}=\value{listtotal}\)}%
         {#1\space\bibstring{and}\addspace}%
         {#1\addcomma\space}}}%


\newbibmacro{echr:unreported}{%
  \iffieldundef{number}%
    {}%
    {\printtext{\bibstring{application}\space\bibstring{number}\space}\printfield{number}\addspace}%
  \newunit\newblock
    \ifboolexpr{( test {\iflistundef{institution}}
                and  test {\iffieldundef{date}}
                and  test {\iffieldundef{year}} )}
    {}
    {\ifboolexpr{( test {\iffieldundef{date}} and test {\iffieldundef{year}} )}
      {\mkbibparens{\printlist[jurisdiction]{institution}}}
      {\bbx@unsetpostnotedelim\iflistundef{institution}%
        {\mkbibparens{\usebibmacro{date}}}%
        {\printtext{\bibopenparen\printlist[echrinst]{institution}\addcomma\space}\usebibmacro{date}\bibcloseparen}}}}

\newbibmacro*{echr:year+vol+report}{%
  \iffieldequals{journaltitle}{\seriesa}
     {\usebibmacro{seriesareport}}
     {\iffieldequals{journaltitle}{\echrreports}
         {\usebibmacro{echrreports}}
         {\usebibmacro{year+vol+report}
          \newunit
          \printfield{pages}}}}

\newbibmacro*{echrtitle}{%
   \ifboolexpr{
     test {\iffieldundef{title}}
     and
     test {\iffieldundef{subtitle}}
   }
     {}
     {\printtext[title]{%
        \printfield[titlecase]{title}%
        \iffieldundef{subtitle}{}{\setunit{\subtitlepunct}}%
        \printfield[titlecase]{subtitle}}}%
   \iffieldundef{titleaddon}
     {}
     {\newunit\printtext{\mkbibparens{\printfield{titleaddon}}}}}

\newbibmacro{editionpubinfo}{%
  \iffieldundef{edition}%
    {}
    {\bbx@pubinfoprint%
     \printfield{edition}}}

\renewbibmacro*{editor+others}{%
  \ifboolexpr{
    test \ifuseeditor
    and
    not test {\ifnameundef{editor}}
  }%
    {\printnames{editor}\addspace%
     \printtext{\mkbibparens{%
     \usebibmacro{editor+othersstrg}}}%
     \clearname{editor}}
    {}}

\newbibmacro{encommentary}{%
  \iffieldundef{shorttitle}
    {\iffieldundef{maintitle}%
     {\iffieldundef{booktitle}%
         {\printfield[default]{title}}%
         {\printfield[default]{booktitle}}}%
     {\printfield[default]{maintitle}}}%
   {\printfield[default]{shorttitle}}%
     \newunit\newblock}

\newbibmacro{enjuriscitation}{%
  \iffieldundef{title}%
  {}%
  {\usebibmacro{title}%
   \newunit\newblock}%
  \usebibmacro{neutralcite}%
  \iffieldundef{journaltitle}% UNREPORTED CASE
    {}%
    {\usebibmacro{year+vol+report}}%
  \usebibmacro{jurisdictionpages}%
  \usebibmacro{pcitenote}%
  \usebibmacro{altreportdetails}%
  \unspace\printlist[jurisdiction][1-\value{listtotal}]{listb}%
  \newunit\newblock
  \usebibmacro{courtid}%
  \newunit%
  \usebibmacro{court-note}%
  \newblock%
  \newunit%
}

\newbibmacro{eucasenumber}{%
  \usebibmacro{seteucases}%
  \addnbspace
  \printfield{number}%
  \newunit}

\newbibmacro{eucommissiondecision}{%
  \iffieldundef{userb}
    {}
    {\mkbibparens{\printfield{userb}}}%
  \newunit
  \iffieldundef{type}
    {\setunit{\addspace\printtext{\bibstring{commissiondecision}\addspace}}}
    {\setunit{\addspace\printfield{type}\addspace}}%
  \printfield{number}}

\newbibmacro{eujuriscitation}{%
  \iflistcontains{institution}{\commission}%
    {}
    {\usebibmacro{eucasenumber}}%
  \usebibmacro{title}%
  \newunit
  \iflistcontains{institution}{\commission}
    {\usebibmacro{eucommissiondecision}}
    {}%
  \newunit%
  \usebibmacro{eu:reportinfo}%
  \newunit%
  \usebibmacro{court-note}%
}

\newbibmacro{eujuriscitation:index:short}{%
  \iftoggle{bbx@numcite}
   {\iffieldundef{userb}{}{\printfield{userb}\newunit}
    \printfield{number}}
   {\usebibmacro{title}%
     \newunit
     \iffieldundef{userb}
       {}
       {\printtext{\mkbibparens{\printfield{userb}}\newunit}}%
     \printtext{\mkbibparens{\usebibmacro{euparenthetical}}}}%
   \newunit%
   \usebibmacro{court-note}}

\newbibmacro{eujuriscitation:index}{%
  \iftoggle{bbx@numcite}
   {\iffieldundef{userb}{}{\printfield{userb}\newunit}
    \printfield{number}%
    \newunit
    \usebibmacro{title}}
   {\usebibmacro{title}%
     \newunit
     \iffieldundef{userb}
       {}
       {\printtext{\mkbibparens{\printfield{userb}}\newunit}}%
     \printtext{\mkbibparens{\usebibmacro{euparenthetical}}}}%
   \newunit%
   \iftoggle{bbx@shortindex}
   {}
   {\usebibmacro{eu:reportinfo}%
    \newunit}%
   \usebibmacro{court-note}%
}

\newbibmacro{eulegislation}{%
  \printfield[default]{title}%
  \newunit\newblock%
  \usebibmacro{eulegref}%
  \newunit\newblock%
  \usebibmacro{doi+eprint+url}}

\newbibmacro{eulegref}{%
    \ifboolexpr{test {\iffieldequals{journaltitle}{\officialjournaltitle}}
               or test {\iffieldequals{journaltitle}{\ojspecedtitle}}}%
        {\printfield[brackets]{year}%
         \setunit{\addspace}%
         \printfield{journaltitle}%
         \setunit{\addspace}
         \iffieldundef{series}
           {\printtext{L}}%
           {\printfield[default]{series}}%
         \usebibmacro{issue/volume}%
         \printtext{\slash}%
         \printfield{pages}%
         \bbx@resetpostnotedelim}
        {\usebibmacro{year+vol+report}}}

\newbibmacro{euparenthetical}{%
  \iffieldundef{type}%
    {}%
    {\printfield{type}\setunit{\addspace}}%
  \printfield{number}}

\newbibmacro*{eu:reportinfo}{%
  \iftoggle{bbx@eclionly}
    {\iffieldundef{verba}
      {\usebibmacro{eu:osreport}}%
      {\printfield{verba}}}
    {\usebibmacro{eu:osreport}}}


\newbibmacro*{eu:osreport}{%
  \iftoggle{bbx@ecliuse}
    {\iffieldundef{verba}
    {}
    {\printfield{verba}%
     \setunit{\addcomma\space}}}%
    {}%
  \iffieldundef{journaltitle}%
    {\usebibmacro{eu:unreported}}%
    {\usebibmacro{eu:year+vol+report}}}

\newbibmacro*{eu:unreported}{%
  \iffieldundef{verba}
    {\ifboolexpr{( test {\iflistundef{institution}}
                   and  test {\iffieldundef{date}}
                   and  test {\iffieldundef{year}} )}
      {}%
      {\ifboolexpr{( test {\iffieldundef{date}} and test {\iffieldundef{year}} )}
        {\mkbibparens{\printlist[jurisdiction]{institution}}}
        {\bbx@unsetpostnotedelim\iflistundef{institution}%
          {\mkbibparens{\usebibmacro{date}}}%
          {\printtext{\bibopenparen%
                      \printlist[jurisdiction]{institution}\addcomma\space}\usebibmacro{date}\bibcloseparen}}}}
    {\iftoggle{bbx@ecliuse}
      {}
      {\printfield{verba}}}}

\newbibmacro*{eu:year+vol+report}{%
  \iffieldequals{journaltitle}{\ecrreporttitle}%
    {\printfield[brackets]{year}%
     \setunit{\addspace}%
     \printfield{journaltitle}%
     \setunit{\addspace}%
     \printfield{volume}%
     \iffieldundef{volume}{}{\printtext{--\allowbreak}}%
     \printfield{pages}}%
    {\iffieldequals{journaltitle}{\officialjournaltitle}%
        {\printfield[brackets]{year}%
         \setunit{\addspace}%
         \printfield{journaltitle}%
         \setunit{\addspace}
         \printfield[default]{series}%
         \usebibmacro{issue/volume}%
         \printtext{\slash}%
         \printfield{pages}}
        {\usebibmacro{year+vol+report}}}}

\newbibmacro*{hansard-ref}{%
% Print column entry if there is not postnote
  \iffieldundef{postnote}{%
    \iffieldundef{pages}%
      {}%
      {\printfield{pages}}}%
      {}}%

\newbibmacro{hc:or:hl}{%
  \printfield[parlt:num]{number}}

\renewbibmacro*{in:}{%
{\printtext{\space\midsentence\bibstring{in}\addspace}}}

\newbibmacro{institution+date}{%
  \iflistundef{institution}
    {\iffieldundef{year}
       {}
       {\bbx@pubinfoprint
        \usebibmacro{year}}}
    {\bbx@pubinfoprint
     \printlist{institution}%
     \iffieldundef{year}
       {}
       {\addspace
        \usebibmacro{year}}}}


\newbibmacro{intjuriscitation}{%
  \iflistundef{institution}
     {\setunit{}\printtext{}}
     {\printlist{institution}%
      \setunit{\addcomma\space}}%
  \usebibmacro{int:title}%
  \usebibmacro{int:subtitle}%
  \usebibmacro{int:titleaddon}%
  \newunit\newblock
  \iffieldundef{journaltitle}%
    {\printfield{number}%
     \newunit\newblock
     \printtext{\mkbibparens{\printdate}}
     \newunit\newblock
     \usebibmacro{doi+eprint+url}}%
    {\usebibmacro{int:year+vol+report}}%
  \newunit%
  \usebibmacro{int:jurisdictionpages}%
  \newunit\newblock
  \usebibmacro{court-note}%
}

\newbibmacro*{int:jurisdictionpages}{%
   \iffieldequals{journaltitle}{\pcijrep}
     {\printtext{\bibcpstring{number}\addspace}%
      \iffieldundef{pages}
        {\printfield{number}}
        {\printfield{pages}}}
      {\printfield{pages}}}

\newbibmacro{int:subtitle}{%
  \iffieldundef{subtitle}%
    {}%
    {\printtext{\space}%
     \mkbibparens{\printfield[intsubtitle]{subtitle}}}}

\newbibmacro{int:title}{%
 \iffieldundef{title}%
   {}
   {\printfield{title}}}

\newbibmacro{int:titleaddon}{%
  \iffieldundef{titleaddon}%
    {}%
    {\printtext{\space}%
     \mkbibparens{\printfield[default]{titleaddon}}}}

\newbibmacro*{int:year+vol+report}{%
  \usebibmacro{journaldate}%
  \newunit
  \usebibmacro{reportvolume}%
  \setunit{\addspace}%
  \printfield{journaltitle}%
  \setunit*{\addspace}%
  \iffieldundef{series}
    {}
    {\newunit
     \printfield[international]{series}%
     \setunit{\addspace}}}%

\newbibmacro*{issue/volume}{%
  \iffieldundef{volume}%
    {\iffieldundef{issue}%
     {}%
     {\printfield{issue}}}%
    {\printfield[default]{volume}}}

\renewbibmacro*{journal+issuetitle}{%
  \iffieldequals{entrysubtype}{\subtypenewsp}
    {\printfield[newstitle]{journaltitle}%
     \newunit
     \printtext{\mkbibparens{%
       \iflistundef{location}
         {}%
         {\printlist{location}%
          \setunit{\addcomma\space}}%
       \usebibmacro{date}}}\newunit}
  {\usebibmacro{journaldate}%
  \newunit
  \usebibmacro{volume+number+eid}%
  \setunit{\addspace}%
  \usebibmacro{journal}%
  \setunit*{\addspace}%
  \iffieldundef{series}
    {}
    {\newunit
     \printfield{series}%
     \setunit{\addspace}}%
  \setunit{\addcolon\space}%
  \usebibmacro{issue}%
  \newunit}}

\newbibmacro*{journaldate}{%
  \ifthenelse{ \(%
    \iffieldundef{volume}%
    \or%
    \boolean{bbx@year-essential}%
    \) }%
	{\ifboolexpr{ test {\ifkeyword{sc}} or
                      test {\iftoggle{bbx:scotstyle}}}%
          {\usebibmacro{year}}%
          {\usebibmacro{year}[brackets]}}%
    	{\usebibmacro{year}[parens]}%
}

\newbibmacro{journaltitle}{%
  \iffieldequals{entrysubtype}{\casenote}
    {\iffieldundef{crossref}
      {\usebibmacro{title}}
      {\iffieldundef{note}
         {\restorefield{note}{\casenotetext}}
         {}
       \ifboolexpr{ test {\iffootnote}
                    and test {\iftoggle{bbx@samefootnote}}
                    and test {\iffieldequals{crossref}{\blx@lastkey@foot}}}
        {}
        {\printfield[casenotetitle]{title}}}}
    {\usebibmacro{title}}}

\newcommand{\csusebibmacro}[1]{%
  \edef\bbx@tempcsname{%
    \noexpand\usebibmacro{#1}}%
  \bbx@tempcsname}

\newtoggle{bbx@juriscitedone}

\newcommand{\bbx@juriscitationlist}{}
\listadd{\bbx@juriscitationlist}{{eu}{eujuriscitation}}
\listadd{\bbx@juriscitationlist}{{echr}{echrjuriscitation}}
\listadd{\bbx@juriscitationlist}{{int}{intjuriscitation}}
\listadd{\bbx@juriscitationlist}{{ca}{canjuriscitation}}
\listadd{\bbx@juriscitationlist}{{us}{usjuriscitation}}

\global\edef\bbx@defaultjuriscitation{enjuriscitation}

\newbibmacro{juriscitation}{%
  \togglefalse{bbx@juriscitedone}%
  \renewcommand{\do}[1]{%
   \edef\@tempa{\noexpand\ifkeyword{\expandafter\@firstoftwo ##1}}%
   \edef\@tempb{\expandafter\@secondoftwo ##1}%
   \@tempa
      {\toggletrue{bbx@juriscitedone}\csusebibmacro{\@tempb}}
      {}}%
 \dolistloop{\bbx@juriscitationlist}%
 \iftoggle{bbx@juriscitedone}
   {}
   {\csusebibmacro{\bbx@defaultjuriscitation}}}

\newbibmacro{juriscitation:index}{%
  \savefield{indextitle}{\bbx@tempa}%
  \restorefield{title}{\bbx@tempa}%
  \ifkeyword{eu}%
    {\usebibmacro{eujuriscitation:index}}%
    {\iftoggle{bbx@shortindex}
      {\printfield{title}%
       \setunit{\addspace}
       \iffieldundef{year}
         {}
         {\printtext{\mkbibparens{\printfield{year}}}}}
    {\ifkeyword{echr}%
      {\usebibmacro{echrjuriscitation}}%
      {\ifkeyword{int}%
        {\usebibmacro{intjuriscitation}}%
        {\ifkeyword{us}
          {\usebibmacro{usjuriscitation}}
          {\usebibmacro{enjuriscitation}}}}}}}

\renewbibmacro{juriscitation:index}{%
   \togglefalse{bbx@juriscitedone}%
   \renewcommand{\do}[1]{%
     \edef\@tempa{\noexpand\ifkeyword{\expandafter\@firstoftwo ##1}}%
     \edef\@tempb{\expandafter\@secondoftwo ##1}%
     \@tempa
     {\toggletrue{bbx@juriscitedone}\csusebibmacro{\@tempb}}
     {}}%
   \dolistloop{\bbx@juriscitationindexlist}%
   \iftoggle{bbx@juriscitedone}
     {}
     {\csusebibmacro{\bbx@defaultjuriscitationindex}}}

\newbibmacro{juriscitation:index:short}{%
  \printfield{title}%
  \setunit*{\addspace}%
  \iffieldundef{year}
    {}
    {\printtext{\mkbibparens{\printfield{year}}}}}

\newbibmacro*{jurisdictionpages}{%
  \iffieldequals{entrysubtype}{\subtypenewsp}%
     {}
     {\newunit\printfield{pages}}}

\newbibmacro*{legnumber}{%
  \iffieldequals{entrysubtype}{\subtypeprimarylegislation}%
    {\ifboolexpr {(test {\iffieldundef{number}} 
                  or not test {\iffieldundef{title}})
                  and not 
                    ( test {\ifkeyword{cy}}
                      or test {\ifkeyword{sc}}
		      or test {\ifkeyword{ni}} )}%
        {}%
        {\printtext{\mkbibparens{\printfield{number}}}\bbx@unsetpostnotedelim}}
    {\iffieldundef{number}%
        {}%
        {\setunit{\addcomma\addspace}%
         \printfield{number}\bbx@resetpostnotedelim}}}

\newbibmacro{legal:parliamentary}{%
  \printfield[default]{title}%
  \newblock\newunit
  \usebibmacro{date}%
  \setunit{\addcomma\space}%
  \printfield{volume}%
  \setunit{\addcomma\space}%
  \usebibmacro{hansard-ref}%
  \bbx@resetpostnotedelim}

\newbibmacro{legal:parliamentary:index}{%
  \printfield[default]{title}%
  \newunit
  \usebibmacro{date}}

\newbibmacro{legislation:bill}{%
  \printfield[draftleg]{title}%
  \newunit
  \iflistundef{institution}
    {}
    {\printlist{institution}\setunit{\addspace}}%
  \iffieldequals{entrysubtype}{\subtypeprimarylegislation}
    {\printtext{\bibcpstring{bill}}%
     \newunit
     \printtext{\mkbibparens{\usebibmacro{sessionyear}}}%
     \newunit%
     \iffieldundef{number}
     {}%
     {\printlist[billprinting]{institution}}%
    }%
    {\printtext{\bibopenparen{\bibstring{draft}}
     \addspace\printdate\bibcloseparen}}}

\newbibmacro{legislation:note}{%
  \iffieldundef{note}
    {}
    {\setunit{\addcomma\space}%
     \printfield[default]{note}}}

\newbibmacro{legref}{%
  \ifboolexpr{ (test {\iffieldundef{pagination}}
                 or (not test {\iffieldbibstring{pagination}} ) ) }%
    {\iffieldbibstring{pagination}{}{\BibliographyWarning{Pagination type \strfield{pagination} undefined}}\printfield{postnote}}
    {\ifnumeralfirst{\thefield{postnote}}
      {\ifnumeralsfirst{\thefield{postnote}}
         {\bibstring{\thefield{pagination}s}\addnbspace\printfield{postnote}}
         {\bibstring{\thefield{pagination}}\addnbspace\printfield{postnote}}}
     {\printfield{postnote}}}}

\newbibmacro*{legsupp}{%
  \ifkeyword{cy}
    {\iffieldundef{userb}
      {}
      {\printtext{\mkbibparens{\printfield{userb}}}\bbx@unsetpostnotedelim}}
    {}}

\renewbibmacro*{maintitle+title}{%
  \iffieldsequal{maintitle}{title}%
    {\clearfield{maintitle}%
     \clearfield{mainsubtitle}%
     \clearfield{maintitleaddon}}%
    {\iffieldundef{maintitle}%
       {}%
       {\usebibmacro{maintitle}%
	\newunit\newblock%
	\iffieldundef{volume}%
	  {}%
	  {\iffieldundef{crossref}
            {\ifboolexpr{test {\iffieldundef{volume}}
                         and test {\iffieldundef{part}}}
             {}
             {\setunit{\addcomma\space}%
             \printfield{volume}%
             \printfield{part}%
             \clearfield{volume}%
             \clearfield{part}%
             \setunit{\addcomma\space}}}
           {}}}}%
  \usebibmacro{title}%
  \newunit}%

\renewbibmacro*{maintitle+booktitle}{%
  \iffieldsequal{maintitle}{title}%
    {\clearfield{maintitle}%
     \clearfield{mainsubtitle}%
     \clearfield{maintitleaddon}}%
    {\iffieldundef{maintitle}%
       {}%
       {\usebibmacro{maintitle}%
	\newunit\newblock%
	\iffieldundef{volume}%
	  {}%
	  {\iffieldundef{crossref}
            {\printfield{volume}%
             \clearfield{volume}%
             \printfield{part}%
             \newunit}
           {}}}}%
  \usebibmacro{booktitle}%
  \newunit}

\newbibmacro{misctitle}{%
  \iffieldundef{title}
    {\iffieldundef{journaltitle}
       {}
       {\printfield{journaltitle}%
        \newunit}}
    {\iffieldundef{journaltitle}
      {\printfield{title}%
       \newunit}
      {\printfield{title}%
       \setunit{\addcomma\space}%
       \printfield{journaltitle}%
       \newunit}}}

\newbibmacro{neutralcite}{%
  \iffieldundef{number}%
    {}%
    {\printfield{number}\setunit{\addcomma\space}}}

\newbibmacro{newspaperdate}{\printdate}%

\renewbibmacro{note+pages}{%
  \printfield{pages}%
  \setunit{\addspace}%
  \printfield{note}%
  \newunit}

\newbibmacro{online:title}{%
  \iffieldundef{title}%
    {\iffieldundef{note}
       {}
       {\printfield{note}%
        \clearfield{note}}}
   {\printfield{title}}}

\newbibmacro{origyear}{%
   \iffieldundef{origyear}%
      {}
      {\bbx@pubinfoprint%
       \printtext{\firstpublishedstr\addspace}%
       \printfield{origyear}}}

\newbibmacro*{parltnum}{%
  \iffieldundef{number}
    {}
    {\bbx@pubinfoprint\printfield[parlt:postnum]{number}}}

\newbibmacro*{parltvol}{%
  \iffieldundef{volume}
    {}
    {\iffieldundef{number}
      {}
      {\printtext{--\printfield[romanvol]{volume}}%
       \clearfield{volume}}}}

\newbibmacro{pcitenote}{%
  \iffieldundef{userc}
    {}
    {\iffieldundef{postnote}
        {\setunit{\addcomma\space}}
	{\addcomma\space\printfield{postnote}%
         \global\toggletrue{cbx@postnoteprinted}%
         \setunit{\addsemicolon\space}}}}

\renewbibmacro*{postnote}{%
  \ifboolexpr {test {\iffieldundef{postnote}} or
               test {\iftoggle{cbx@postnoteprinted}}}%
    {}%<--- this used to read \midsentence
    {\ifboolexpr{test {\ifnumequal{\value{bbx@suppresspostnotedelim}}{1}}}
       {\setunit{\addspace}%
        \bbx@resetpostnotedelim}%
       {\setunit{\postnotedelim}}%
     \usebibmacro{postnotepagination}}%
     \global\toggletrue{cbx@postnoteprinted}}

\newbibmacro{postnote:us}{%
  \iffieldundef{postnote}
   {}
   {\setunit{\addcomma\space}%
    \printfield{postnote}%
    \global\toggletrue{cbx@postnoteprinted}}}

\newbibmacro*{postnotepagination}{%
  \ifboolexpr{ (
     test {\ifkeyword{eu}} 
     or test {\ifkeyword{echr}} )}
     {\usebibmacro{postnotepaginationpara}}% Default is "para" for EU and ECHR
     {\usebibmacro{postnotepaginationpage}}} % Default is "page"

\newbibmacro*{postnotepaginationpara}{%
  \ifboolexpr{ (
    test {\iffieldundef{pagination}}
    or
    test {\iffieldequals{pagination}{\paragraphtext}} )}
      {\printfield[paragraph:text]{postnote}}%
      {\iffieldequals{pagination}{\paragraphmarkings}%
            {\nopunct\addspace\printfield[paragraphed]{postnote}}
	    {\printfield[postnote:old]{postnote}}}}

\newbibmacro*{postnotepaginationpage}{%
  \ifboolexpr{ (
    test {\iffieldundef{pagination}}
    or
    test {\iffieldequals{pagination}{\pagemarkings}} )}
      {\printfield{postnote}}%
      {\iffieldequals{pagination}{\paragraphmarkings}
            {\nopunct\addspace\printfield[paragraphed]{postnote}}
	    {\printfield[postnote:old]{postnote}}}}

\newbibmacro*{publicationinfo}{%
  \newunit
  \bbx@pubinfostart
  \usebibmacro{byauthor}%
  \usebibmacro{byeditor+others}%
  \usebibmacro{convenue}%
  \usebibmacro{conferencetitle}%
  \usebibmacro{editionpubinfo}%
  \usebibmacro{pubinfo:note+addendum+pubstate}%
  \usebibmacro{origyear}%
  \usebibmacro{conferencedate}%
  \usebibmacro{pubinfo:series+number}%
  \usebibmacro{pubinfo:volume}%
  \usebibmacro{publisher+location+date}%
  \bbx@pubinfostop
  \newunit\newblock}

\newbibmacro{publicationinfo:online}{%
  \addspace
  \bbx@pubinfostart%
  \usebibmacro{websitetitle}%
  \usebibmacro{publisher+location+date}%
  \bbx@pubinfostop% 
}

\newbibmacro*{publicationinfo:short}{% This is for reference works
 \newunit
 \iffieldundef{edition}%
   {\iffieldundef{year}%
     {\bbx@resetpostnotedelim}%
     {\bbx@unsetpostnotedelim\printtext{\mkbibparens{\usebibmacro{year}}}}}%
   {\bbx@unsetpostnotedelim\printtext{\bibopenparen\printfield{edition}}%
    \iffieldundef{year}%
    {}%
    {\printtext{\addspace\usebibmacro{year}}}%
   \printtext{\bibcloseparen}}}

\newbibmacro*{pubinfo:note+addendum+pubstate}{%
  \ifboolexpr{(
    test{\iffieldundef{note}}
    and test {\iffieldundef{addendum}}
    and test {\iffieldundef{pubstate}} )}%
      {}
      {\bbx@pubinfoprint%
       \printfield[default]{note}%
       \setunit{\addcomma\space}%
       \printfield{addendum}%
       \setunit{\addcomma\space}%
       \printfield{pubstate}}}

\newbibmacro*{pubinfo:series+number}{%
  \iffieldundef{series}
    {\iffieldundef{number}
     {}
     {\bbx@pubinfoprint
      \printfield{number}}}
   {\iffieldundef{number}
     {\bbx@pubinfoprint
      \printfield{series}}
     {\bbx@pubinfoprint
      \printfield{series}%
      \newunit
      \printfield{number}}}}

\newbibmacro{pubinfo:volume}{%
  \ifboolexpr{ test {\ifentrytype{book}}
               or test {\ifentrytype{collection}}}
    {\iffieldundef{volume}
       {}
       {\bbx@pubinfoprint
        \printfield{volume}%
        \clearfield{volume}}}
      {\iffieldundef{userb}
      {}
      {\bbx@pubinfoprint
       \printfield{userb}%
       \clearfield{userb}}}}

\renewbibmacro*{publisher+location+date}{%
 \iffieldundef{year}
 {}%
 {\ifboolexpr{test {\iflistundef{location}}
             or test {\ifnumgreater{\thefield{year}}{\bibyearwatershed}}}
   {}%
   {\clearlist{publisher}}}
 \ifboolexpr{(
   test {\iflistundef{publisher}}
   and test {\iflistundef{location}}
   and test {\iffieldundef{date}}
   and test {\iffieldundef{year}} )}%
     {}% NOTHING TO DO
     {%
       \bbx@pubinfoprint
       \iflistundef{publisher}
         {\iflistundef{location}%
           {}%
           {\printlist{location}%
            \iffieldundef{year}
            {}%
            {\setunit{\addcomma\space}}}}%
         {\printlist{publisher}\setunit{\addspace}}%
       \usebibmacro{spaceddate}}}%

\newbibmacro*{reportvolume}{%
  \iffieldundef{volume}%
    {}%
    {\printfield{volume}}}

\newbibmacro{report:index:info}{%
  \bbx@pubinfostart
  \usebibmacro{report:index:author}%
  \iffieldequals{entrysubtype}{\parliamentarytype}%
    {\bbx@pubinfoprint%
     \usebibmacro{hc:or:hl}%
     \usebibmacro{sessionyear}%
     \usebibmacro{parltnum}%
     \usebibmacro{parltvol}}%
    {\usebibmacro{rep:type}%
     \usebibmacro{rep:series+number}%
     \usebibmacro{rep:year}}%
  \bbx@pubinfostop}

\newbibmacro{report:index:author}{%
  \ifnameundef{author}
  {\ifnameundef{editor}
   {\iflistundef{institution}
    {}
    {\bbx@pubinfoprint
     \printlist{institution}
     \clearlist{institution}}}
   {\bbx@pubinfoprint
    \usebibmacro{byedtor+others}}}
  {\bbx@pubinfoprint%
   \printnames{author}}}

\newbibmacro*{report:standard}{%
  \usebibmacro{author/editor/institution}%
  \setunit*{\addcomma\space}\newblock
  \usebibmacro{title}%
  \usebibmacro{reportinfo}%
  \newunit\newblock
  \usebibmacro{revisedbookvolume}%
  \newunit\newblock}%

\newbibmacro{reportinfo}{%
  \newunit
  \bbx@pubinfostart
  \iffieldequals{entrysubtype}{\parliamentarytype}%
    {\bbx@pubinfoprint%
     \usebibmacro{hc:or:hl}%
     \usebibmacro{sessionyear}%
     \usebibmacro{parltnum}%
     \usebibmacro{parltvol}}%
    {\usebibmacro{rep:type}%
     \usebibmacro{rep:series+number}%
     \usebibmacro{rep:year}}%
  \bbx@pubinfostop}

\newbibmacro*{rep:institution/publisher}{%
  \iflistundef{institution}%
    {}%
    {\bbx@pubinfoprint%
     \printlist{institution}}%
  \iflistundef{publisher}%
    {}%
    {\bbx@pubinfoprint%
     \printlist{publisher}\addspace}%
     \ifboolexpr{test {\iflistundef{institution}}
              and test {\iflistundef{publisher}}}
     {}
     {\newunit}}

\newbibmacro*{rep:type}{%
  \iffieldundef{type}%
  {}%
  {\bbx@pubinfoprint%
   \printfield{type}}}

\newbibmacro*{rep:series+number}{%
  \iffieldundef{series}%
    {\iffieldundef{number}
      {}%
      {\bbx@pubinfoprint
       \printfield{number}}}%
    {\iffieldundef{series}
      {}
      {\bbx@pubinfoprint%
       \printfield{series}}%
       \iffieldundef{number}
        {}%
        {\setunit{\addspace}\printfield{number}}}}

\newbibmacro{revisedbookvolume}{%
  \iffieldundef{volume}%
  {}
  {\usebibmacro{bookvolume}%
   \bbx@resetpostnotedelim}}

\newbibmacro*{rep:year}{%
  \ifboolexpr{ test{\iffieldundef{year}}
               and test {\iffieldundef{date}} 
               and test {\iflistundef{publisher}}
               and test {\iflistundef{institution}}}%
    {}%
    {\bbx@pubinfoprint
     \usebibmacro{rep:institution/publisher}%
     \usebibmacro{year}}}

\newbibmacro*{seriesareport}{%
  \usebibmacro{year}[parens]%
  \newunit
  \printfield{journaltitle}%
  \newunit%
  \printtext{\bibstring{number}\addspace}%
  \printfield{pages}}

\newbibmacro*{sessionyear}{%
  \iffieldundef{year}%
    {}%
    {\iffieldundef{endyear}%
       {\printfield{year}}%
       {\printtext{\printfield{year}\bibdatedash{\usebibmacro{year:lastdigits}}}}}}

\newbibmacro{scotscommentary}{%
  \printnames{author}%
  \newunit\newblock%
  \usebibmacro{maintitle+title}%
  \newunit\newblock}

\renewbibmacro*{shorthandintro}{%
  \bbx@ifnottrackingcites
  {}
  {\iffieldundef{shorthandintro}
    {\iffieldundef{shorthand}
       {}
       {\bbx@unsetpostnotedelim\setunit{\addspace}%
        \printtext[parens]{\unspace\printfield{shorthand}}}}
    {\bbx@unsetpostnotedelim\setunit{\addspace}%
     \printtext[parens]{\printfield{shorthandintro}}}}}

\newbibmacro{spaceddate}{%
  \ifboolexpr{ ( test {\iffieldundef{year}}
               and test {\iffieldundef{date}} ) }
  {\unspace}%
  {\usebibmacro{date}}}

\newbibmacro{thesis:type}{%
  \iffieldundef{type}
      {}
      {\bbx@pubinfoprint
       \printfield{type}}}

\newbibmacro{thesis:info}{%
  \bbx@pubinfostart
  \usebibmacro{thesis:type}%
  \usebibmacro{institution+date}%
  \bbx@pubinfostop}

\renewbibmacro*{title}{%
   \ifboolexpr{
     test {\iffieldundef{title}}
     and
     test {\iffieldundef{subtitle}}
   }
     {}
     {\printtext[title]{%
        \printfield[titlecase]{title}%
        \iffieldundef{subtitle}{}{\setunit{\subtitlepunct}}%
        \printfield[titlecase]{subtitle}}}%
   \iffieldundef{titleaddon}{}{\newunit\printfield{titleaddon}}}

\renewbibmacro*{translator+others}{%
  \ifboolexpr{
    test \ifusetranslator
    and
    not test {\ifnameundef{translator}}
  }
    {\printnames{translator}\addspace%
     \printtext{\mkbibparens{%
     \usebibmacro{translator+othersstrg}}}%
     \clearname{translator}}
    {}}
	
\newbibmacro*{undoc}{%
        \iffieldundef{title}
          {}
          {\ifnameundef{author}%
            {}
            {\usebibmacro{author/editor+others/translator+others}%
             \setunit*{\addcomma\space}}%
           \printfield[untitle]{title}%
           \setunit{\addcomma\space}}%
        \printlist{institution}%
        \newunit
	\printfield{titleaddon}%
	\newunit\newblock
	\iffieldundef{number}
	  {\usebibmacro{undoc:year+vol+report}}
	  {\iffieldundef{year}
	    {\setunit{\addcomma\space}}
	    {\printtext{\mkbibparens{\usebibmacro{date}}}%
	     \newunit}%
	   \printfield{number}}%
	\newunit\newblock
	\usebibmacro{doi+eprint+url}%
	\newunit\newblock
	\usebibmacro{legislation:note}}

\newbibmacro*{undoc:index}{%
  \clearname{author}%
  \clearname{editor}%
  \usebibmacro{undoc}}

\newbibmacro*{undoc:year+vol+report}{%
  \usebibmacro{journaldate}%
  \newunit
  \usebibmacro{reportvolume}%
  \setunit{\addspace}%
  \printfield[default]{journaltitle}%
  \setunit*{\addspace}%
  \iffieldundef{series}
    {}
    {\newunit
     \printfield{series}%
     \setunit{\addspace}}%
  \printfield{pages}}

\newbibmacro*{unrep:date}{%
  \ifboolexpr{ test {\iffieldundef{journaltitle}}%
               and test {\iffieldundef{number}}}%
      {\setunit{\addcomma\space}%
        \usebibmacro{date}}%
      {}}

\renewbibmacro*{url+urldate}{%
  \iffieldundef{url}
  {}
  {\printfield{url}%
  \iffieldundef{urlyear}
    {}%
    {\setunit*{\addspace}%
     \bbx@resetpostnotedelim%
     \printtext{\printurldate}}}}

\newbibmacro{usjuriscitation}{%
 \usebibmacro{title}%
  \newunit\newblock%
  \iffieldundef{journaltitle}%
    {\printfield{number}%
     \setunit{\addcomma\space}%
     \printfield[default]{eprint}}
    {\usebibmacro{vol+report:us}}%
  \newunit
  \usebibmacro{jurisdictionpages}%
  \usebibmacro{postnote:us}%
  \usebibmacro{altreportdetails}%
  \newunit\newblock
  \unspace\printlist[jurisdiction][1-\value{listtotal}]{listb}%
  \newunit
  \usebibmacro{us:courtid+date}%
  \newunit%
  \usebibmacro{court-note}%
  \newblock
  \newunit}

\newbibmacro{us:courtid+date}{%
  \ifboolexpr{test {\iflistundef{institution}}
              and test {\iflistundef{location}}
              and test {\iffieldundef{year}}}
    {}
    {\printtext{\mkbibparens{%
       \iflistundef{location}
         {\printlist{institution}}
         {\printlist{location}%
          \newunit
          \printlist{institution}}%
        \newunit
        \printfield{year}%
        \setunit{}}}}}

\newbibmacro{vol+report:us}{%
  \usebibmacro{reportvolume}%
  \setunit{\addspace}%
  \printfield{journaltitle}%
  \iffieldundef{series}
    {}
    {\newunit
     \printfield[usseries]{series}}}

\renewbibmacro*{volume+number+eid}{%
  \printfield{volume}%
  \iffieldundef{issue}%
    {\printfield[parens]{number}}%
    {\iffieldundef{number}%
        {\printfield[parens]{issue}}
	{\printtext[parens]{\printfield{number}\addspace\printfield{issue}}}}
  \setunit{\addcomma\space}%
  \printfield{eid}}

\newbibmacro{websitetitle}{%
  \iffieldundef{journaltitle}
    {}
    {\bbx@pubinfoprint
     \printfield{journaltitle}}}


\newbibmacro*{year}[1][]{%
  \iffieldundef{year}%
    {}%
    {\printfield[#1]{year}}}

\newbibmacro*{year+vol+report}{%
  \iffieldequals{entrysubtype}{\subtypenewsp}
    {}%
    {\usebibmacro{journaldate}%
     \newunit}%
  \usebibmacro{reportvolume}%
  \setunit{\addspace}%
  \printfield{journaltitle}%
  \setunit*{\addspace}%
  \iffieldundef{series}
    {}
    {\newunit
     \printfield{series}%
     \setunit{\addspace}}%
  \iffieldequals{entrysubtype}{\subtypenewsp}
     {\setunit{\addcomma\space}\usebibmacro{newspaperdate}}%
     {}}

\newbibmacro*{year+vol+report:can}{%
  \iffieldundef{number}
   {\newunit}
   {\ifthenelse{ \(%
    \iffieldundef{volume}%
    \or%
    \boolean{bbx@year-essential}%
    \) }%
     {}
     {\clearfield{year}}}%
  \iffieldequals{entrysubtype}{\subtypenewsp}
     {}%
    {\iffieldundef{year}
     {}
     {\usebibmacro{journaldate}%
      \newunit}}
  \usebibmacro{reportvolume}%
  \setunit{\addspace}%
  \printfield{journaltitle}%
  \setunit*{\addspace}%
  \iffieldundef{series}
    {}
    {\setunit{\addspace}%
     \printtext{\mkbibparens{\printfield[usseries]{series}}}%
     \setunit{\addspace}}%
  \iffieldequals{entrysubtype}{\subtypenewsp}
     {\setunit{\addcomma\space}\usebibmacro{newspaperdate}}%
     {}}


%%%%%% END %%%%%

% This infuriating spaghetti (largely taken from biblatex.sty) deals with
% formatting postnotes of the [1]--[2] variety

\def\bbx@legalpostnotea#1 {\def\bbx@savedargone{{#1}}%
   \futurelet\bbx@next\bbx@legalpostnoteX}
\def\bbx@legalpostnoteX{%
   \ifx(\bbx@next \expandafter\bbx@legalpostnoteXX%)
   \else \expandafter\bbx@legalpostnoteXXX \fi}
\def\bbx@legalpostnoteXXX{\expandafter\rangesplit\bbx@savedargone}
\def\bbx@legalpostnoteXX{\expandafter\bbx@legalpostnoteY\bbx@savedargone}
\def\bbx@legalpostnoteY#1(#2{%)
  \rangesplit{#1} (#2}
\def\bbx@legalpostnote#1{\bbx@legalpostnotea#1 }

\newtoggle{bbx@inrangetog}\newtoggle{bbx@pnotetog}
\DeclareListParser*{\forbbxrange}{--}
\def\rangesplit#1{\togglefalse{bbx@inrangetog}\forbbxrange{\bbx@legal@addbrackets}{#1}}
\def\bbx@legal@addbrackets#1{\iftoggle{bbx@inrangetog}{\printtext{--}}{\toggletrue{bbx@inrangetog}}\printtext{[#1]}}
\def\formatpostnote#1{\togglefalse{bbx@pnotetog}\let\do\bbx@splitformat\docsvlist{#1}}
\def\bbx@splitformat#1{\iftoggle{bbx@pnotetog}{\addcomma\space}{\toggletrue{bbx@pnotetog}}\bbx@legalpostnote{#1}}

% This tests whether the *first* character of a postnote is a numeral. I originally had a more elegant way
% of doing this (I thought), but I couldn't get it to work or diagnose the trouble

\def\bbx@legal@ifnumeralfirst#1#2|#3#4{%
  \ifboolexpr{ test {\ifstrequal{#1}{0}}
               or test {\ifstrequal{#1}{1}}
               or test {\ifstrequal{#1}{2}}
               or test {\ifstrequal{#1}{3}}
               or test {\ifstrequal{#1}{4}}
               or test {\ifstrequal{#1}{5}}
               or test {\ifstrequal{#1}{6}}
               or test {\ifstrequal{#1}{7}}
               or test {\ifstrequal{#1}{8}}
               or test {\ifstrequal{#1}{9}} }
  {#3}
  {#4}}

\def\ifnumeralfirst#1#2#3{%
  \edef\legal@tempa{#1|}% REMOVE ME
  \expandafter\bbx@legal@ifnumeralfirst\legal@tempa{#2}{#3}}
  
\def\ifnumeralsfirst#1#2#3{%
  \ifnumeralfirst{#1}%
     {\numeraljustfirst{#1}{#2}{#3}}%
     {#3}}

\def\numeraljustfirst#1#2#3{%
  \def\legal@result{#3}%
  \def\legal@optiontwo{#2}%
  \legal@containscomma{#1}%
  \legal@containsand{#1}%
  \legal@containshyphen{#1}%
  \legal@result}
  
% This all deals with formatting HL and HC numbers correctly

\newcounter{bbx@legal@tempcounter}

\DeclareFieldFormat{parlt:num}{%
  \setcounter{bbx@legal@tempcounter}{0}%
  \renewcommand*\do[1]{\stepcounter{bbx@legal@tempcounter}}%
  \docsvlist{#1}%
  \ifnum\value{bbx@legal@tempcounter} < 2\relax%
  \printtext{\bbx@legal@chamberpart{#1}\addspace}%
  \fi}

\DeclareFieldFormat{parlt:postnum}{%
  \setcounter{bbx@legal@tempcounter}{0}%
  \renewcommand*\do[1]{\stepcounter{bbx@legal@tempcounter}}%
  \docsvlist{#1}%
  \ifnum\value{bbx@legal@tempcounter} < 2\relax
  \printtext{\bbx@legal@numberpart{#1}}%
  \else
  \printtext{#1}%
  \fi}

\def\bbx@legal@@chamberpart#1 #2\relax{%
  #1}

\def\bbx@legal@chamberpart#1{%
  \begingroup
  \edef\bbx@legal@tempa{#1\space}%
  \expandafter\endgroup
  \expandafter\bbx@legal@@chamberpart\bbx@legal@tempa\relax}

\newbibmacro{year:lastdigits}{%
  \iffieldequalstr{endyear}{2000}%
      {2000}%
      {\printtext{\bbx@legal@lasttwo{\strfield{endyear}}}}}

\def\bbx@legal@@lasttwo#1#2#3#4\relax{%
    #3#4}

\def\bbx@legal@lasttwo#1{%
  \begingroup
  \edef\bbx@legal@tempa{#1}%
  \expandafter\endgroup
  \expandafter\bbx@legal@@lasttwo\bbx@legal@tempa\relax}

\def\bbx@legal@@numberpart#1 #2\relax{
  \bbx@legal@chamberpart{#2}}

\def\bbx@legal@numberpart#1{%
  \begingroup
  \edef\bbx@legal@tempa{#1\space}%
  \expandafter\endgroup
  \expandafter\bbx@legal@@numberpart\bbx@legal@tempa\relax}

% This stuff inserts institutional information into draft legislation
% titles

\DeclareFieldFormat{draftleg}{%
  \bbx@billsplit{#1}}

\def\bbx@billspliti#1 Bill#2/relax{#1}
\def\bbx@billsplit#1{%
  \expandafter\bbx@billspliti#1 Bill/relax}

\DeclareListFormat{billprinting}{%
  \ifstrequal{#1}{HC}
    {\mkbibbrackets{\strfield{number}}\bbx@unsetpostnotedelim}
    {\strfield{number}\bbx@resetpostnotedelim}}

% TREATIES
% Because there is some complexity here, I'm keeping this stuff together

\newbibmacro{treatycitation}{%
  \printfield[default]{title}%
  \newunit\newblock%
  \printlist[treaty]{institution}
  \newunit\newblock
  \usebibmacro{treatyinfo}%
  \newunit\newblock
  \usebibmacro{treaty:year+vol+report}}

\newbibmacro{treaty:year+vol+report}{%
  \iffieldequals{journaltitle}{\officialjournaltitle}
  {\usebibmacro{eulegref}}
  {\usebibmacro{treaty:date}%
  \newunit
  \printfield[default]{volume}%
  \setunit{\addspace}%
  \printfield{journaltitle}%
  \setunit*{\addspace}%
  \iffieldundef{series}
    {}
    {\newunit
     \printfield{series}%
     \setunit{\addspace}}%
 \printfield{pages}}}%

\newbibmacro*{treaty:date}{%
  \ifthenelse{ \(%
    \iffieldundef{volume}%
    \or%
    \boolean{bbx@year-essential}%
    \) }%
	{\ifboolexpr{ test {\ifkeyword{sc}} or
                      test {\iftoggle{bbx:scotstyle}}}
          {\usebibmacro{year}}
          {\usebibmacro{year}[brackets]}}%
    	{}}


\def\makebbx@datei#1-#2-#3-{%
  \makebbx@dateii{#1}{#2}{#3}}

\def\makebbx@dateii#1#2#3{%
  \blx@imc@stripzeros{#3}~\mkbibmonth{#2}%
  \space
  #1}

\def\siganddate#1{%
  \def\bbx@tempa{#1}%
  \expandafter\bbx@signeddatei#1/relax}

\def\bbx@signeddatei#1=#2/relax{%
  \def\bbx@tempa{#2-}%
  \bibstring{#1}\space\expandafter\makebbx@datei\bbx@tempa}

\newbibmacro{treatyinfo}{%
  \iflistundef{lista}%
    {\iffieldundef{year}
      {}
      {\iffieldundef{volume}
       {}
       {\printtext{\mkbibparens{\printdate}}}}}
    {\printtext{\mkbibparens{\printlist[treatydates]{lista}}}}}

\newcommand*\treatypartysep{\allowbreak ---\allowbreak}

\DeclareListFormat{treaty}{%
  \ifmoreitems{}{%
              \ifthenelse {\value{listcount} = 1}
                {\bibopenparen}%
                {}%
               \ifthenelse {\value{liststop} > \value{listcount} }%
                {#1\treatypartysep}%
                {#1\bibcloseparen}}}

\DeclareListFormat{treatydates}{%
  \ifthenelse {\value{listcount} = 1}
     {\siganddate{#1}}
     {\addcomma\space\siganddate{#1}}}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Indexing
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% STANDARD INDICES
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\def\bbx@trash{trash}

\let\bbx@gbcases\bbx@trash     
\let\bbx@encases\bbx@trash
\let\bbx@sccases\bbx@trash
\let\bbx@nicases\bbx@trash
\let\bbx@echrcases\bbx@trash
\let\bbx@aucases\bbx@trash
\let\bbx@uscases\bbx@trash
\let\bbx@nzcases\bbx@trash
\let\bbx@cacases\bbx@trash
\let\bbx@echrcommcases\bbx@trash
\let\bbx@eucases\bbx@trash
\let\bbx@eucasesnum\bbx@trash
\let\bbx@eucaseschron\bbx@trash
\let\bbx@eucommcases\bbx@trash
\let\bbx@eucommcasesnum\bbx@trash
\let\bbx@eucommcaseschron\bbx@trash
\let\bbx@pilcases\bbx@trash
\let\bbx@othercases\bbx@trash
\let\bbx@gbprimleg\bbx@trash
\let\bbx@gbsecleg\bbx@trash
\let\bbx@ensecleg\bbx@trash
\let\bbx@enprimleg\bbx@trash
\let\bbx@scprimleg\bbx@trash
\let\bbx@scsecleg\bbx@trash
\let\bbx@cyprimleg\bbx@trash
\let\bbx@cysecleg\bbx@trash
\let\bbx@niprimleg\bbx@trash
\let\bbx@nisecleg\bbx@trash
\let\bbx@eutreaty\bbx@trash
\let\bbx@euregs\bbx@trash
\let\bbx@eudirs\bbx@trash
\let\bbx@eudecs\bbx@trash
\let\bbx@echrtreaty\bbx@trash
\let\bbx@piltreaty\bbx@trash
\let\bbx@otherprimleg\bbx@trash
\let\bbx@othersecleg\bbx@trash
\let\bbx@otherconleg\bbx@trash
\let\bbx@enroc\bbx@trash
\let\bbx@gbdraftleg\bbx@trash
\let\bbx@gbparltmat\bbx@trash
\let\bbx@commentaries\bbx@trash
\let\bbx@euoffdoc\bbx@trash
\let\bbx@namesindex\bbx@trash

\newcommand\SetStandardIndices{%
\renewcommand\bbx@gbcases{cases}
\renewcommand\bbx@encases{cases}
\renewcommand\bbx@sccases{cases}
\renewcommand\bbx@nicases{cases}
\renewcommand\bbx@echrcases{cases}
\renewcommand\bbx@echrcommcases{cases}
\renewcommand\bbx@eucases{cases}
\renewcommand\bbx@cacases{cases}
\renewcommand\bbx@uscases{cases}
\renewcommand\bbx@aucases{cases}
\renewcommand\bbx@nzcases{cases}
\renewcommand\bbx@eucasesnum{trash}
\renewcommand\bbx@eucaseschron{trash}
\renewcommand\bbx@eucommcases{cases}
\renewcommand\bbx@eucommcasesnum{trash}
\renewcommand\bbx@eucommcaseschron{trash}
\renewcommand\bbx@pilcases{cases}
\renewcommand\bbx@othercases{cases}
\renewcommand\bbx@gbprimleg{legislation}
\renewcommand\bbx@gbsecleg{legislation}
\renewcommand\bbx@ensecleg{legislation}
\renewcommand\bbx@enprimleg{legislation}
\renewcommand\bbx@scprimleg{legislation}
\renewcommand\bbx@scsecleg{legislation}
\renewcommand\bbx@cyprimleg{legislation}
\renewcommand\bbx@cysecleg{legislation}
\renewcommand\bbx@nisecleg{legislation}
\renewcommand\bbx@niprimleg{legislation}
\renewcommand\bbx@eutreaty{eutreaty}
\renewcommand\bbx@euregs{eulegislation}
\renewcommand\bbx@eudirs{eulegislation}
\renewcommand\bbx@eudecs{eulegislation}
\renewcommand\bbx@echrtreaty{echrtreaty}
\renewcommand\bbx@piltreaty{piltreaty}
\renewcommand\bbx@otherprimleg{legislation}
\renewcommand\bbx@othersecleg{legislation}
\renewcommand\bbx@otherconleg{legislation}
\renewcommand\bbx@enroc{legislation}
\renewcommand\bbx@gbparltmat{other}
\renewcommand\bbx@commentaries{other}
\renewcommand\bbx@gbdraftleg{other}
\renewcommand\bbx@euoffdoc{other}
\renewcommand\bbx@namesindex{trash}}

\newcommand\DeclareIndexAssociation[1]{%
  \csdef{bbx@#1}}

\newcommand\ShowIndexAssociation[1]{%
  \csname bbx@#1\endcsname}

\newcommand\bbx@relevantindex{}
\def\legislationindex{legislation}

\newbibmacro{setrelevantindex}{%
% DEFAULT IS TRASH INDEX
  \renewcommand{\bbx@relevantindex}{[\bbx@trash]}%
  \iffieldundef{usera}{%
% COURT RULES ALL GO TO ENROC
  \ifboolexpr{ test {\ifentrytype{legislation}}% 
   and test {\iffieldequals{entrysubtype}{\subtypecourtrules}}}%
    {\renewcommand\bbx@relevantindex{[\bbx@enroc]}}%
    {}%
% THEN WE DEAL WITH PRIMARY
  \ifboolexpr{ test {\ifentrytype{legislation}}%
               and test {\iffieldequals{entrysubtype}{\subtypeprimarylegislation}}}%
      {\ifkeyword{gb}{\renewcommand\bbx@relevantindex{[\bbx@gbprimleg]}}{}%
       \ifkeyword{en}{\renewcommand\bbx@relevantindex{[\bbx@enprimleg]}}{}%
       \ifkeyword{sc}{\renewcommand\bbx@relevantindex{[\bbx@scprimleg]}}{}%
       \ifkeyword{cy}{\renewcommand\bbx@relevantindex{[\bbx@cyprimleg]}}{}%
       \ifkeyword{ni}{\renewcommand\bbx@relevantindex{[\bbx@niprimleg]}}{}%
       \iffieldundef{keywords}{\renewcommand\bbx@relevantindex{[\bbx@gbprimleg]}}{}%
      }%
      {}% OTHER KINDS OF LEGISLATION
   \ifboolexpr{ test {\ifentrytype{legislation}}%
                and test {\iffieldequals{entrysubtype}{\subtypesecondarylegislation}}}%
      {\ifkeyword{gb}{\renewcommand\bbx@relevantindex{[\bbx@gbsecleg]}}{}%
       \ifkeyword{en}{\renewcommand\bbx@relevantindex{[\bbx@ensecleg]}}{}%
       \ifkeyword{sc}{\renewcommand\bbx@relevantindex{[\bbx@scsecleg]}}{}%
       \ifkeyword{cy}{\renewcommand\bbx@relevantindex{[\bbx@cysecleg]}}{}%
       \ifkeyword{ni}{\renewcommand\bbx@relevantindex{[\bbx@nisecleg]}}{}%
       \iffieldundef{keywords}{\renewcommand\bbx@relevantindex{[\bbx@gbsecleg]}}{}%
     }%
   {}% OTHER KINDS OF LEGISLATION
   \ifboolexpr{ test {\ifentrytype{legislation}}%
                and test {\ifkeyword{eu}}}%
     {\iffieldequals{entrysubtype}{\eutreaty}%
        {\renewcommand\bbx@relevantindex{[\bbx@eutreaty]}}{}%
      \ifboolexpr{ test {\iffieldequals{type}{\euregulation}}%
                   or test {\iffieldequals{entrysubtype}{\euregulation}}}%
        {\renewcommand\bbx@relevantindex{[\bbx@euregs]}}{}%
     \ifboolexpr{ test{\iffieldequals{type}{\eudirective}}%
                   or test {\iffieldequals{entrysubtype}{\eudirective}}}%
        {\renewcommand\bbx@relevantindex{[\bbx@eudirs]}}{}%
     \ifboolexpr{ test{\iffieldequals{type}{\eudecision}}%
                   or test {\iffieldequals{entrysubtype}{\eudecision}}}%
        {\renewcommand\bbx@relevantindex{[\bbx@eudecs]}}{}}%
     {}%
   \ifboolexpr{ test {\ifentrytype{legislation}}%
                and test {\ifkeyword{draft}} }%
     {\ifboolexpr {test {\ifkeyword{gb}} or test {\ifkeyword{en}}%
                   or test {\ifkeyword{sc}} or test {\ifkeyword{cy}}%
                   or test {\ifkeyword{ni}}}%
        {\renewcommand\bbx@relevantindex{[\bbx@gbdraftleg]}}%
        {}}%
     {}%
   \ifentrytype{jurisdiction}%
       {\ifkeyword{sc}{\renewcommand{\bbx@relevantindex}{[\bbx@sccases]}}%
       {\ifkeyword{gb}{\renewcommand{\bbx@relevantindex}{[\bbx@gbcases]}}%
       {\ifkeyword{en}{\renewcommand{\bbx@relevantindex}{[\bbx@encases]}}%
       {\ifkeyword{ni}{\renewcommand{\bbx@relevantindex}{[\bbx@nicases]}}%
       {\ifkeyword{eu}{\renewcommand{\bbx@relevantindex}{[\bbx@eucases]}}%
       {\ifkeyword{echr}{\renewcommand{\bbx@relevantindex}{[\bbx@echrcases]}}%
       {\ifkeyword{int}{\renewcommand{\bbx@relevantindex}{[\bbx@pilcases]}}%
	   {\ifkeyword{us}{\renewcommand{\bbx@relevantindex}{[\bbx@uscases]}}% ADDED
	   {\ifkeyword{ca}{\renewcommand{\bbx@relevantindex}{[\bbx@cacases]}}% ADDED
	   {\ifkeyword{au}{\renewcommand{\bbx@relevantindex}{[\bbx@aucases]}}% ADDED
	   {\ifkeyword{nz}{\renewcommand{\bbx@relevantindex}{[\bbx@nzcases]}}% ADDED
       {\iffieldundef{keywords}{\renewcommand{\bbx@relevantindex}{[\bbx@encases]}}
       {\renewcommand{\bbx@relevantindex}{[\bbx@othercases]}}}}}}}}}}}}}}%
       {}%
   \ifboolexpr{ test {\ifentrytype{legal}}%
                and test {\iffieldequals{entrysubtype}{\treatysubtype}} }%
          {\ifkeyword{echr}{\renewcommand{\bbx@relevantindex}{[\bbx@echrtreaty]}}{\renewcommand{\bbx@relevantindex}{[\bbx@piltreaty]}}}{}%
   \iffieldequals{entrysubtype}{\parliamentarytype}%
      {\renewcommand{\bbx@relevantindex}{[\bbx@gbparltmat]}}%
      {}%
    \iffieldequals{entrysubtype}{\comdocsubtype}%
      {\renewcommand{\bbx@relevantindex}{[\bbx@euoffdoc]}}%
      {}%
    \ifentrytype{commentary}%
      {\renewcommand{\bbx@relevantindex}{[\bbx@commentaries]}}%
      {}%
    \ifboolexpr{ test{\ifentrytype{legal}} 
                 and test {\iffieldequals{entrysubtype}{\explanatorynote}}}
      {\renewcommand{\bbx@relevantindex}{[\bbx@gbparltmat]}}%
      {}%
     }%
    {\renewcommand{\bbx@relevantindex}{[\thefield{usera}]}}}
     
\newcommand\bbx@istrash{[\bbx@trash]}

 \renewbibmacro*{index:title}[2]{%
   \ifboolexpr{ test {\ifentrytype{jurisdiction}}
                and test {\ifkeyword{eu}} and
                (not test {\iflistcontains{institution}{\commission}})}
       {\renewcommand\bbx@relevantindex{[\bbx@eucasesnum]}%
        \usebibmacro{index:field:eu}%
           {\index}%
           {\thefield{userf}}%
           {\thefield{entrykey}}}%
     {}%
   \usebibmacro{setrelevantindex}%
   \ifboolexpr{ test {\ifentrytype{legal}} 
                and test {\iffieldequals{entrysubtype}{\parliamentarytype}}}
     {\usebibmacro{hansard:index:fields}{#1}{#2}}
     {\ifboolexpr{ (not test {\ifentrytype{legislation}} ) 
                    and not
                    ( test {\ifentrytype{legal}} 
                      and test {\iffieldequals{entrysubtype}{\treatytype}} ) }%
     {\usebibmacro{index:field}%
           {\index}%
           {\thefield{indexsorttitle}}%
           {\thefield{entrykey}}}%
     {\iffieldequals{entrysubtype}{\subtypecourtrules}%
       {\usebibmacro{index:rules}}%
       {\usebibmacro{legislation:with:postnote}{#1}{#2}}}}}

\newbibmacro{hansard:index:fields}[2]{%
  \def\bbx@tempaind{vol }%
  \iffieldundef{crossref}
    {\savefield{entrykey}{\bbx@tempa}%
     \restorefield{crossref}{\bbx@tempa}}%
    {}%
  \iffieldundef{volume}
  {\usebibmacro{index:field:5}%
     {\index}%
     {\thefield{indexsorttitle}}
     {\thefield{crossref}}}
  {\usebibmacro{index:field:3}%
     {\index}%
     {\thefield{indexsorttitle}}
     {\thefield{crossref}}
     {\thefield{volume}}}}

\newbibmacro{legislation:with:postnote}[2]{%
     \ifkeyword{eu}
       {\def\bbx@tempa{\thefield{indexsorttitle}}}
       {\def\bbx@tempa{\thefield{indexsorttitle}\thefield{year}}}%
     \iffieldundef{postnote}%
     {\usebibmacro{index:field:5}%
                  {\index}%
                  {\bbx@tempa}%
		  {\thefield{entrykey}}}%
     {\ifnumeralfirst{\thefield{postnote}}%
       {\usebibmacro{legislation:with:formattedpostnote}{#1}{\bbx@tempa}}%
       {\usebibmacro{index:field:2}%
         {#1}%
         {\bbx@tempa}%
         {\thefield{entrykey}}%
         {\thefield{postnote}}%
         {\thefield{postnote}}}}}

\newbibmacro{set:index:label}{%
   \iffieldequalstr{pagination}{section}{\gdef\bbx@tempaind{s }}%
  {\iffieldequalstr{pagination}{article}{\gdef\bbx@tempaind{art }}%
  {\iffieldequalstr{pagination}{regulation}{\gdef\bbx@tempaind{reg }}%
  {\iffieldequalstr{pagination}{rule}{\gdef\bbx@tempaind{r }}%
  {\iffieldequalstr{pagination}{clause}{\gdef\bbx@tempaind{cl }}%
  {\iffieldequalstr{pagination}{paragraph}{\gdef\bbx@tempaind{para }}%
  {\ifkeyword{eu}{\gdef\bbx@tempaind{art }}%
   {\gdef\bbx@tempaind{}}}}}}}}}

\newbibmacro{legislation:with:formattedpostnote}[2]{%
        \usebibmacro{set:index:label}%
        \edef\bbx@tempbind{\strfield{postnote}}%
        \renewcommand{\do}[1]{%
        \usebibmacro{index:field:2}%
        {#1}%
        {#2}%
        {\thefield{entrykey}}%
        {##1}%
        {\bbx@tempaind##1}}%
        \docsvfield{postnote}}

\def\bbx@secpart#1(#2\relax{#1}%)
\def\bbx@rangechop#1--#2\relax{#1}

\def\bbx@subsparti#1(#2\relax{#2}
\def\bbx@subspartii#1)#2\relax{#1}
\def\bbx@subspart#1{%
  \def\bbx@tempb{#1}%
  \expandafter\expandafter\expandafter\bbx@subspartii\expandafter\bbx@subsparti\bbx@tempb(\relax)\relax}

\def\bbx@hassubpart#1{%
  \def\bbx@temph{#1}%
  \expandafter\bbx@rangechop\expandafter\bbx@hassubparti\bbx@temph--\relax(\relax}%)

\def\bbx@hassubparti#1(#2\relax{%)
  \sbox0{#2}%
  \ifdim\wd0=0pt
  \expandafter\@secondoftwo
  \else\expandafter\@firstoftwo
  \fi}

% This is the macro that does most of the work in relation to legislation. 
% It's rather ghastly, and needs to be exactly as it is in order for expansion to work properly.

\newbibmacro*{index:field:2}[5]{%
   \begingroup%
   \bbx@hassubpart{#4}%
   {\protected@edef\theindexentry{\unexpanded{#1}\bbx@relevantindex{#2\actualoperator\unexpanded{\citeinindex}{#3}!\expandafter\bbx@rangechop\expandafter\bbx@secpart#4--\relax(\relax\actualoperator\expandafter\bbx@rangechop\expandafter\bbx@secpart#5--\relax(\relax!\expandafter\expandafter\expandafter\bbx@subspartii\expandafter\bbx@subsparti#4(\relax)\relax\actualoperator(\expandafter\expandafter\expandafter\bbx@subspartii\expandafter\bbx@subsparti#5(\relax)\relax)}}}%))
   {\protected@edef\theindexentry{%
     \unexpanded{#1}\bbx@relevantindex{#2\actualoperator\unexpanded{\citeinindex}{#3}!\expandafter\bbx@rangechop\expandafter\bbx@secpart#4--\relax(\relax\actualoperator\expandafter\bbx@rangechop\expandafter\bbx@secpart#5--\relax(\relax%))
   }}}%
   \theindexentry%
   \endgroup}

\renewbibmacro*{index:field}[3]{%
  \begingroup
  \protected@edef\theindexentry{%
    \unexpanded{#1}\bbx@relevantindex{#2\actualoperator\unexpanded{\citeinindex}{#3}}}%
  \theindexentry
  \endgroup}

\newtoggle{bbx@numcite}

\newbibmacro*{index:field:eu}[3]{%
  \begingroup
  \protected@edef\theindexentry{%
    \unexpanded{#1}\bbx@relevantindex{#2\actualoperator\unexpanded{\citeinindexnum}{#3}}}%
  \theindexentry
  \endgroup}


% This is for legislation with neither postnote nor prenote

\newbibmacro*{index:field:5}[3]{%
  \begingroup
  \protected@edef\theindexentry{%
    \unexpanded{#1}\bbx@relevantindex{#2\actualoperator\unexpanded{\citeinindex}{#3}}}%
  \theindexentry
  \endgroup}

% This is used for procedural rules with a prenote but no postnote

\newbibmacro*{index:field:3}[4]{%
  \begingroup
  \protected@edef\theindexentry{%
    \unexpanded{#1}\bbx@relevantindex{#2\actualoperator\unexpanded{\citeinindex}{#3}!#4\actualoperator\bbx@tempaind#4}}%
  \theindexentry
  \endgroup}

% This is for procedural rules with prenote and postnote

\newbibmacro*{index:field:4}[5]{%
  \begingroup
  \protected@edef\theindexentry{%
    \unexpanded{#1}\bbx@relevantindex{#2\actualoperator\unexpanded{\citeinindex}{#3}!#4\actualoperator\bbx@tempaind#4!#5\actualoperator\bbx@tempbind#5}}%
  \theindexentry
  \endgroup}

\newbibmacro*{index:rules}{%
  \restorefield{prenote}{\postnotesecond}%
  \iffieldequalstr{shorttitle}{RSC}
    {\gdef\bbx@tempaind{Ord }%
    \gdef\bbx@tempbind{r }}%
    {\iffieldequalstr{shorttitle}{CCR}
      {\gdef\bbx@tempaind{Ord }%
       \gdef\bbx@tempbind{r }}%
      {\gdef\bbx@tempaind{}%
       \gdef\bbx@tempbind{}}}%
  \iffieldundef{prenote}%
  {\iffieldundef{postnote}%
    {\usebibmacro{index:field:5}%
                 {\index}%
                 {\thefield{indextitle}}%
                 {\thefield{entrykey}}}%
    {\usebibmacro{index:field:3}%
                 {\index}%
                 {\thefield{indextitle}}%
                 {\thefield{entrykey}}%
                 {\postnotefirst}}}%
  {\iffieldundef{prenote}%
    {\usebibmacro{index:field:3}%
                 {\index}%
                 {\thefield{indextitle}}%
                 {\thefield{entrykey}}%
		 {\postnotefirst}}%
    {\usebibmacro{index:field:4}%
                 {\index}%
		 {\thefield{indextitle}}%
		 {\thefield{entrykey}}%
		 {\postnotefirst}%
		 {\postnotesecond}}}}%


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%  INDEX: DRIVERS
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\newbibmacro*{default:index}{%
  \usebibmacro{begentry}%
  \printfield[default]{title}%
  \newunit
  \iffieldundef{year}{}
  {\printtext{\mkbibparens{\printfield{year}}}}%
  \newunit
  \usebibmacro{finentry}}

\DeclareBibliographyDriver{book:index}{\usebibmacro{default:index}}
\DeclareBibliographyDriver{collection:index}{\usebibmacro{default:index}}
\DeclareBibliographyDriver{article:index}{\usebibmacro{default:index}}
\DeclareBibliographyDriver{thesis:index}{\usebibmacro{default:index}}
\DeclareBibliographyDriver{inbook:index}{\usebibmacro{default:index}}
\DeclareBibliographyDriver{periodical:index}{\usebibmacro{default:index}}
\DeclareBibliographyDriver{patent:index}{\usebibmacro{default:index}}
\DeclareBibliographyDriver{inproceedings:index}{\usebibmacro{default:index}}
\DeclareBibliographyDriver{incollection:index}{\usebibmacro{default:index}}
\DeclareBibliographyDriver{mvbook:index}{\usebibmacro{default:index}}
\DeclareBibliographyDriver{reference:index}{\usebibmacro{default:index}}
\DeclareBibliographyDriver{mvreference:index}{\usebibmacro{default:index}}
\DeclareBibliographyDriver{proceedings:index}{\usebibmacro{default:index}}
\DeclareBibliographyDriver{inmvreference:index}{\usebibmacro{default:index}}
\DeclareBibliographyDriver{inreference:index}{\usebibmacro{default:index}}
\DeclareBibliographyDriver{misc:index}{%
  \iffieldequals{entrysubtype}{\undoctype}
    {\usebibmacro{undoc:index}}
    {\usebibmacro{default:index}}}
\DeclareBibliographyDriver{booklet:index}{\usebibmacro{default:index}}
\DeclareBibliographyDriver{techreport:index}{\usebibmacro{default:index}}
\DeclareBibliographyDriver{manual:index}{\usebibmacro{default:index}}
\DeclareBibliographyDriver{online:index}{\usebibmacro{default:index}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Improved way of checking if list contains something
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\DeclareListFormat{checkcontains}{%
  \bbx@check{#1}}

\newtoggle{bbx@institutiontoggle}

\newcommand\iflistcontains[2]{%
  \global\togglefalse{bbx@institutiontoggle}%
  \def\bbx@check##1{%
    \ifdefstring{#2}{##1}{\global\toggletrue{bbx@institutiontoggle}}{}}%
  \printlist[checkcontains]{#1}%
  \iftoggle{bbx@institutiontoggle}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Index names
%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\renewbibmacro*{index:name}[5]{%
  \begingroup
  \def\bbxinitsep{}%
  \ifuseprefix
    {\protected@edef\theindexentry{%
       \unexpanded{#1}[\bbx@namesindex]{%
         \ifblank{#4}{}{#4 }%
         \@firstofone #2% remove spurious braces
         \ifblank{#5}{}{ #5}%
         \ifblank{#3}{}{, #3}%
         \actualoperator
         \ifblank{#4}{}{\MakeCapital{#4} }%
         #2%
         \ifblank{#5}{}{ #5}%
         \ifblank{#3}{}{, #3}}}}
    {\protected@edef\theindexentry{%
       \unexpanded{#1}[\bbx@namesindex]{%
         \@firstofone #2% remove spurious brces
         \ifblank{#5}{}{ #5}%
         \ifblank{#3#4}{}{,}%
         \ifblank{#3}{}{ #3}%
         \ifblank{#4}{}{ #4}}}}%
  \theindexentry
  \endgroup}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Sorting Scheme : Sort includes INSTITUTION
%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\DeclareSortingTemplate{niyt}{
  \sort{
    \field{presort}
  }
  \sort[final]{
    \field{sortkey}
  }
  \sort{
    \field{sortname}
    \field{author}
    \field{editor}
    \field{translator}
    \field{institution}
    \field{sorttitle}
    \field{title}
    \field{booktitle}
    \field{maintitle}
  }
  \sort{
    \field{sortyear}
    \field{year}
  }
  \sort{
    \field{sorttitle}
    \field{title}
  }
  \sort{
    \field[padside=left,padwidth=4,padchar=0]{volume}
    \literal{0000}
  }
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Printindex early
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\printindexearly}{}

\AtEndPreamble{%
  \@ifpackageloaded{imakeidx}{
   \ifimki@splitindex
   \renewcommand{\printindexearly}[1][\jobname]{%
      \@ifundefined{#1@idxfile}{\imki@error{#1}}{\bbx@putimindextosplit{#1}}}
   \else
      \renewcommand{\printindexearly}[1][\jobname]{%
      \@ifundefined{#1@idxfile}{\imki@error{#1}}{\bbx@putimindex{#1}}}
   \fi}
   {\@ifpackageloaded{index}
    {\renewcommand{\printindexearly}{\@printindex}}
    {\renewcommand{\printindexearly}[1]{\PackageError{biblatex-oscola}{You need to load either the imakeidx or index package:}}}}}

% Based on imki@putindexsplit
\newcommand{\bbx@putimindex}[1]{%
  \let\imki@indexname\indexname
  \@nameuse{imki@set@#1}%
  \ifimki@nonewpage\else
    \imki@clearpage
  \fi
  \ifKV@imki@intoc
   \def\imki@maybeaddtotoc{\@nameuse{phantomsection}%
     \addcontentsline{toc}{\imki@toclevel}{\imki@title}}%
  \else
   \def\imki@maybeaddtotoc{}%
  \fi
  \ifx\imki@title\imki@check@indexname\else
    \def\indexname{\imki@title}%
  \fi
  \@input@{#1.ind}
  \let\indexname\imki@indexname
}
\newcommand{\bbx@putimindextosplit}[1]{%
  \let\imki@indexname\indexname
  \@nameuse{imki@set@#1}%
  \ifimki@nonewpage\else
    \imki@clearpage
  \fi
  \ifKV@imki@intoc
   \def\imki@maybeaddtotoc{\@nameuse{phantomsection}%
     \addcontentsline{toc}{\imki@toclevel}{\imki@title}}%
  \else
   \def\imki@maybeaddtotoc{}%
  \fi
  \ifx\imki@title\imki@check@indexname\else
    \def\indexname{\imki@title}%
  \fi
  \@input@{\jobname-#1.ind}
  \let\indexname\imki@indexname
}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% SOURCE MAPPING
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\DeclareLabeltitle[misc]{%
 \field{shorttitle}
 \field{titleaddon}
 \field{title}}

\DeclareStyleSourcemap{
  \maps[datatype=bibtex]{
  \map[overwrite=false]{
    \pertype{jurisdiction}
    \step[fieldsource=reporter,
          fieldtarget=journaltitle]
    \step[fieldsource=parvolume,
          fieldtarget=userb]
    \step[fieldsource=parreporter,
          fieldtarget=userc]
    \step[fieldsource=parseries,
          fieldtarget=userd]
    \step[fieldsource=parpages,
          fieldtarget=usere]
    \step[fieldsource=court,
          fieldtarget=institution]
    \step[fieldsource=additionalreports,
          fieldtarget=listb]
    \step[fieldsource=ecli,
          fieldtarget=verba]
  }
 \map[overwrite=false]{
   \pertype{legal}
   \step[fieldsource=reporter,
         fieldtarget=journaltitle]
 }
 \map[overwrite=true]{
    \pertype{legal}
    \step[fieldsource=parties,
          fieldtarget=institution]
    \step[fieldsource=execution,
          fieldtarget=lista]
 }
 \map[overwrite=false]{
   \pertype{inreference}
   \step[fieldsource=booktitle,
         fieldtarget=userb]
 }
 \map[overwrite=false]{
 \step[fieldsource=type,
       final=true]
 \step[fieldset=entrysubtype,
       origfieldval=true]
 }
 \map[overwrite=true]{
      \pertype{legislation}
      \step[fieldsource=keywords,	
            match={eu},
            final=true]
      \step[fieldsource=entrysubtype,
            match=\regexp{directive|decision},
            final=true]
      \step[fieldsource=number]
      \step[fieldset=indextitle,
            origfieldval=true]
      \step[fieldsource=indextitle,
            match=\regexp{(\S+)/(\d\d\d\d)\D}
            replace=\regexp{$1/0$2}]
      \step[fieldsource=indextitle,
            match=\regexp{(\S+)/(\d\d\d)\D},
            replace=\regexp{$1/00$2}]
      \step[fieldsource=indextitle,
            match=\regexp{(\S+)/(\d\d)\D},
            replace=\regexp{$1/000$2}]
      \step[fieldsource=indextitle,
            match=\regexp{(\S+)/(\d)\D},
            replace=\regexp{$1/0000$2}]
      \step[fieldsource=indextitle,
            match=\regexp{(\d+)/(\d+)(\D*)},
            replace=\regexp{$1$2}]
 }
 \map[overwrite=true]{
    \pertype{legislation}
    \step[fieldsource=keywords,
          match={eu},
          final=true]
    \step[fieldsource=entrysubtype,
          match={regulation},
          final=true]
    \step[fieldsource=number]
    \step[fieldset=indextitle,
          origfieldval=true]
    \step[fieldsource=indextitle,
          match=\regexp{\D*(\d+)/(\d\d)\D}
          replace=\regexp{$1/19$2}]
    \step[fieldsource=indextitle,
          match=\regexp{(\d\d\d\d)/(\d+)},
          replace=\regexp{0$1/$2}]
    \step[fieldsource=indextitle,
          match=\regexp{(\d\d\d)/(\d+)},
          replace={00$1/$2}]
    \step[fieldsource=indextitle,
          match=\regexp{(\d\d)/(\d+)},
          replace=\regexp{000$1/$2}]
    \step[fieldsource=indextitle,
          match=\regexp{(\d)/(\d+)},
          replace=\regexp{0000$1/$2}]
    \step[fieldsource=indextitle,
          match=\regexp{(\d+)/(\d+)},
          replace=\regexp{$2$1}]
 }
 \map[overwrite=false]{
    \pertype{jurisdiction}
    \step[fieldsource=keywords, 
          match=eu,
          final=true]
    \step[fieldsource=number]
    \step[fieldset=userf,
          origfieldval=true]
 }
 \map[overwrite=true]{
    \pertype{jurisdiction}
    \step[fieldsource=keywords,
          match={eu},
          final=true]
    \step[fieldsource=userf,
          match=\regexp{^(\d+)/(\d+)},
          replace=\regexp{C-$1/$2}]
    \step[fieldsource=userf,
          match=\regexp{([^/]+)/(\d+)[-,].*$},
          replace=\regexp{$1/$2}]
    \step[fieldsource=userf,
          match=\regexp{(\D)\D*(\d+)/(\d+)},
          replace=\regexp{$1A$2A$3}]
    \step[fieldsource=userf,
          match=\regexp{([^A]*)A([^A]*)A([01234]\d)$},
          replace=\regexp{$1A$2A20$3}]
    \step[fieldsource=userf,
           match=\regexp{([^A]*)A([^A]*)A([56789]\d)$},
           replace=\regexp{$1A$2A19$3}]
    \step[fieldsource=userf,
          match=\regexp{(\d\d\d)A},
          replace=\regexp{0$1A}]
    \step[fieldsource=userf,
           match=\regexp{A(\d\d)A},
           replace=\regexp{A00$1A}]
    \step[fieldsource=userf,
           match=\regexp{A(\d)A},
           replace=\regexp{A000$1A}]
    \step[fieldsource=userf,
          match=\regexp{CA(.*)},
          replace=\regexp{0A$1}]
    \step[fieldsource=userf,
          match=\regexp{(T)},
          replace={1}]
    \step[fieldsource=userf,
          match=\regexp{(\d)A(\d\d\d\d)A(\d\d\d\d)},
          replace=\regexp{$3$2$1}]
   }
    \map[overwrite=true]{
     \pertype{jurisdiction}
     \pertype{legislation}
     \pertype{legal}
     \step[fieldsource=title,
           match=\regexp{(\d)\.(\d)},
           replace=\regexp{$1.$2}]
     \step[fieldsource=title,
           match=\regexp{(\D)\.(\d)},
           replace=\regexp{$1 $2}]
     \step[fieldsource=title,
            match=\regexp{\.(\D)},
            replace=\regexp{$1}]
     \step [fieldsource=title,
            match=\regexp{(\D)\.},
            replace=\regexp{$1}]
     \step[fieldsource=shorttitle,
           match=\regexp{(\d)\.(\d)},
           replace=\regexp{$1.$2}]
     \step[fieldsource=shorttitle,
           match=\regexp{(\D)\.(\d)},
           replace=\regexp{$1 $2}]
     \step[fieldsource=shorttitle,
            match=\regexp{\.(\D)},
            replace=\regexp{$1}]
     \step [fieldsource=shorttitle,
            match=\regexp{(\D)\.},
            replace=\regexp{$1}]
  }
  \map[overwrite=true]{
     \step[fieldsource=userc,
           match=\regexp{(\d)\.(\d)},
           replace=\regexp{$1.$2}]
     \step[fieldsource=userc,
           match=\regexp{(\D)\.(\d)},
           replace=\regexp{$1 $2}]
     \step[fieldsource=userc,
            match=\regexp{\.(\D)},
            replace=\regexp{$1}]
     \step [fieldsource=userc,
            match=\regexp{(\D)\.},
            replace=\regexp{$1}]
     \step[fieldsource=journaltitle,
           match=\regexp{(\d)\.(\d)},
           replace=\regexp{$1.$2}]
     \step[fieldsource=journaltitle,
           match=\regexp{(\D)\.(\d)},
           replace=\regexp{$1 $2}]
     \step[fieldsource=journaltitle,
            match=\regexp{\.(\D)},
            replace=\regexp{$1}]
     \step [fieldsource=journaltitle,
            match=\regexp{(\D)\.},
            replace=\regexp{$1}]
     \step[fieldsource=institution,
           match=\regexp{(\d)\.(\d)},
           replace=\regexp{$1.$2}]
     \step[fieldsource=institution,
           match=\regexp{(\D)\.(\d)},
           replace=\regexp{$1 $2}]
     \step[fieldsource=institution,
            match=\regexp{\.(\D)},
            replace=\regexp{$1}]
     \step[fieldsource=institution,
            match=\regexp{(\D)\.},
            replace=\regexp{$1}]
     \step[fieldsource=publisher,
           match=\regexp{(\d)\.(\d)},
           replace=\regexp{$1.$2}]
     \step[fieldsource=publisher,
           match=\regexp{(\D)\.(\d)},
           replace=\regexp{$1 $2}]
     \step[fieldsource=publisher,
            match=\regexp{\.(\D)},
            replace=\regexp{$1}]
     \step [fieldsource=publisher,
            match=\regexp{(\D)\.},
            replace=\regexp{$1}]
     \step[fieldsource=location,
           match=\regexp{(\d)\.(\d)},
           replace=\regexp{$1.$2}]
     \step[fieldsource=location,
           match=\regexp{(\D)\.(\d)},
           replace=\regexp{$1 $2}]
     \step[fieldsource=location,
            match=\regexp{\.(\D)},
            replace=\regexp{$1}]
     \step [fieldsource=location,
            match=\regexp{(\D)\.},
            replace=\regexp{$1}]
     \step[fieldsource=series,
           match=\regexp{(\d)\.(\d)},
           replace=\regexp{$1.$2}]
     \step[fieldsource=series,
           match=\regexp{(\D)\.(\d)},
           replace=\regexp{$1 $2}]
     \step[fieldsource=series,
            match=\regexp{\.(\D)},
            replace=\regexp{$1}]
     \step [fieldsource=series,
            match=\regexp{(\D)\.},
            replace=\regexp{$1}]
     \step[fieldsource=indextitle,
           match=\regexp{(\d)\.(\d)},
           replace=\regexp{$1.$2}]
     \step[fieldsource=indextitle,
           match=\regexp{(\D)\.(\d)},
           replace=\regexp{$1 $2}]
     \step[fieldsource=indextitle,
            match=\regexp{\.(\D)},
            replace=\regexp{$1}]
     \step [fieldsource=indextitle,
            match=\regexp{(\D)\.},
            replace=\regexp{$1}]
}
 \map[overwrite=true]{
    \step[fieldsource=author,
          match=\regexp{(\w)\.},          
          replace=\regexp{$1\\bbxinitsep\x20}]
  }
 \map[overwrite=true]{
    \step[fieldsource=editor,
          match=\regexp{(\w)\.},
          replace=\regexp{$1\\bbxinitsep\x20}]
  }
 \map[overwrite=true]{
    \step[fieldsource=translator,
          match=\regexp{(\w)\.},
          replace=\regexp{$1\\bbxinitsep\x20}]
  }
 \map[overwrite=true]{
    \step[fieldsource=tabulate,
          fieldtarget=usera]
  }
 \map[overwrite=false]{
    \pertype{misc}
    \step[fieldsource=entrysubtype,
          match={undoc},
          final=true]
    \step[fieldsource=instrument_no,
          fieldtarget=titleaddon,
          origfieldval=true]
   \step[fieldsource=doc_no,
	 fieldtarget=number,
         origfieldval=true]
   }
 \map[overwrite]{
    \pertype{misc}
    \step[fieldsource=institution,
          fieldset=scratch,
          origfieldval=true,
          append=true]
    \step[fieldsource=titleaddon,
          fieldset=scratch,
          origfieldval=true,
          append=true]   
 }
  \map[overwrite=false]{
   \pertype{misc}
   \step[fieldsource=scratch]
   \step[fieldsource=title]
   \step[fieldset=indextitle,
         origfieldval=true]
  }
 }
}

\endinput