   I. LeftJoin(BGP(..),{..})
  II. Join(BGP(..),Graph(varOrIRI,{..}))
 III. Join(BGP(..),Union(..,..))
  IV. Graph(varOrIRI,{..})
   V. LeftJoin({},{..})
  VI. Union(..,..)
 VII. BGP(..)
    Join(I.,I.)     => Join(LeftJoin(BGP(..),{..}),LeftJoin(BGP(..),{..}))
   Union(I.,I.)     => Union(LeftJoin(BGP(..),{..}),LeftJoin(BGP(..),{..}))
LeftJoin(I.,I.)     => LeftJoin(LeftJoin(BGP(..),{..}),LeftJoin(BGP(..),{..}))
    Join(I.,II.)    => Join(LeftJoin(BGP(..),{..}),Join(BGP(..),Graph(varOrIRI,{..})))
   Union(I.,II.)    => Union(LeftJoin(BGP(..),{..}),Join(BGP(..),Graph(varOrIRI,{..})))
LeftJoin(I.,II.)    => LeftJoin(LeftJoin(BGP(..),{..}),Join(BGP(..),Graph(varOrIRI,{..})))
    Join(I.,III.)   => Join(LeftJoin(BGP(..),{..}),Join(BGP(..),Union(..,..)))
   Union(I.,III.)   => Union(LeftJoin(BGP(..),{..}),Join(BGP(..),Union(..,..)))
LeftJoin(I.,III.)   => LeftJoin(LeftJoin(BGP(..),{..}),Join(BGP(..),Union(..,..)))
    Join(I.,IV.)    => Join(LeftJoin(BGP(..),{..}),Graph(varOrIRI,{..}))
   Union(I.,IV.)    => Union(LeftJoin(BGP(..),{..}),Graph(varOrIRI,{..}))
LeftJoin(I.,IV.)    => LeftJoin(LeftJoin(BGP(..),{..}),Graph(varOrIRI,{..}))
    Join(I.,V.)     => Join(LeftJoin(BGP(..),{..}),LeftJoin({},{..}))
   Union(I.,V.)     => Union(LeftJoin(BGP(..),{..}),LeftJoin({},{..}))
LeftJoin(I.,V.)     => LeftJoin(LeftJoin(BGP(..),{..}),LeftJoin({},{..}))
    Join(I.,VI.)    => Join(LeftJoin(BGP(..),{..}),Union(..,..))
   Union(I.,VI.)    => Union(LeftJoin(BGP(..),{..}),Union(..,..))
LeftJoin(I.,VI.)    => LeftJoin(LeftJoin(BGP(..),{..}),Union(..,..))
    Join(I.,VII.)   => Join(LeftJoin(BGP(..),{..}),BGP(..))
   Union(I.,VII.)   => Union(LeftJoin(BGP(..),{..}),BGP(..))
LeftJoin(I.,VII.)   => LeftJoin(LeftJoin(BGP(..),{..}),BGP(..))
LeftJoin(II.,I.)    => LeftJoin(Join(BGP(..),Graph(varOrIRI,{..})),LeftJoin(BGP(..),{..}))
    Join(II.,II.)   => Join(Join(BGP(..),Graph(varOrIRI,{..})),Join(BGP(..),Graph(varOrIRI,{..})))
   Union(II.,II.)   => Union(Join(BGP(..),Graph(varOrIRI,{..})),Join(BGP(..),Graph(varOrIRI,{..})))
LeftJoin(II.,II.)   => LeftJoin(Join(BGP(..),Graph(varOrIRI,{..})),Join(BGP(..),Graph(varOrIRI,{..})))
    Join(II.,III.)  => Join(Join(BGP(..),Graph(varOrIRI,{..})),Join(BGP(..),Union(..,..)))
   Union(II.,III.)  => Union(Join(BGP(..),Graph(varOrIRI,{..})),Join(BGP(..),Union(..,..)))
LeftJoin(II.,III.)  => LeftJoin(Join(BGP(..),Graph(varOrIRI,{..})),Join(BGP(..),Union(..,..)))
    Join(II.,IV.)   => Join(Join(BGP(..),Graph(varOrIRI,{..})),Graph(varOrIRI,{..}))
   Union(II.,IV.)   => Union(Join(BGP(..),Graph(varOrIRI,{..})),Graph(varOrIRI,{..}))
LeftJoin(II.,IV.)   => LeftJoin(Join(BGP(..),Graph(varOrIRI,{..})),Graph(varOrIRI,{..}))
    Join(II.,V.)    => Join(Join(BGP(..),Graph(varOrIRI,{..})),LeftJoin({},{..}))
   Union(II.,V.)    => Union(Join(BGP(..),Graph(varOrIRI,{..})),LeftJoin({},{..}))
LeftJoin(II.,V.)    => LeftJoin(Join(BGP(..),Graph(varOrIRI,{..})),LeftJoin({},{..}))
    Join(II.,VI.)   => Join(Join(BGP(..),Graph(varOrIRI,{..})),Union(..,..))
   Union(II.,VI.)   => Union(Join(BGP(..),Graph(varOrIRI,{..})),Union(..,..))
LeftJoin(II.,VI.)   => LeftJoin(Join(BGP(..),Graph(varOrIRI,{..})),Union(..,..))
    Join(II.,VII.)  => Join(Join(BGP(..),Graph(varOrIRI,{..})),BGP(..))
   Union(II.,VII.)  => Union(Join(BGP(..),Graph(varOrIRI,{..})),BGP(..))
LeftJoin(II.,VII.)  => LeftJoin(Join(BGP(..),Graph(varOrIRI,{..})),BGP(..))
LeftJoin(III.,I.)   => LeftJoin(Join(BGP(..),Union(..,..)),LeftJoin(BGP(..),{..}))
LeftJoin(III.,II.)  => LeftJoin(Join(BGP(..),Union(..,..)),Join(BGP(..),Graph(varOrIRI,{..})))
    Join(III.,III.) => Join(Join(BGP(..),Union(..,..)),Join(BGP(..),Union(..,..)))
   Union(III.,III.) => Union(Join(BGP(..),Union(..,..)),Join(BGP(..),Union(..,..)))
LeftJoin(III.,III.) => LeftJoin(Join(BGP(..),Union(..,..)),Join(BGP(..),Union(..,..)))
    Join(III.,IV.)  => Join(Join(BGP(..),Union(..,..)),Graph(varOrIRI,{..}))
   Union(III.,IV.)  => Union(Join(BGP(..),Union(..,..)),Graph(varOrIRI,{..}))
LeftJoin(III.,IV.)  => LeftJoin(Join(BGP(..),Union(..,..)),Graph(varOrIRI,{..}))
    Join(III.,V.)   => Join(Join(BGP(..),Union(..,..)),LeftJoin({},{..}))
   Union(III.,V.)   => Union(Join(BGP(..),Union(..,..)),LeftJoin({},{..}))
LeftJoin(III.,V.)   => LeftJoin(Join(BGP(..),Union(..,..)),LeftJoin({},{..}))
    Join(III.,VI.)  => Join(Join(BGP(..),Union(..,..)),Union(..,..))
   Union(III.,VI.)  => Union(Join(BGP(..),Union(..,..)),Union(..,..))
LeftJoin(III.,VI.)  => LeftJoin(Join(BGP(..),Union(..,..)),Union(..,..))
    Join(III.,VII.) => Join(Join(BGP(..),Union(..,..)),BGP(..))
   Union(III.,VII.) => Union(Join(BGP(..),Union(..,..)),BGP(..))
LeftJoin(III.,VII.) => LeftJoin(Join(BGP(..),Union(..,..)),BGP(..))
LeftJoin(IV.,I.)    => LeftJoin(Graph(varOrIRI,{..}),LeftJoin(BGP(..),{..}))
LeftJoin(IV.,II.)   => LeftJoin(Graph(varOrIRI,{..}),Join(BGP(..),Graph(varOrIRI,{..})))
LeftJoin(IV.,III.)  => LeftJoin(Graph(varOrIRI,{..}),Join(BGP(..),Union(..,..)))
    Join(IV.,IV.)   => Join(Graph(varOrIRI,{..}),Graph(varOrIRI,{..}))
   Union(IV.,IV.)   => Union(Graph(varOrIRI,{..}),Graph(varOrIRI,{..}))
LeftJoin(IV.,IV.)   => LeftJoin(Graph(varOrIRI,{..}),Graph(varOrIRI,{..}))
    Join(IV.,V.)    => Join(Graph(varOrIRI,{..}),LeftJoin({},{..}))
   Union(IV.,V.)    => Union(Graph(varOrIRI,{..}),LeftJoin({},{..}))
LeftJoin(IV.,V.)    => LeftJoin(Graph(varOrIRI,{..}),LeftJoin({},{..}))
    Join(IV.,VI.)   => Join(Graph(varOrIRI,{..}),Union(..,..))
   Union(IV.,VI.)   => Union(Graph(varOrIRI,{..}),Union(..,..))
LeftJoin(IV.,VI.)   => LeftJoin(Graph(varOrIRI,{..}),Union(..,..))
    Join(IV.,VII.)  => Join(Graph(varOrIRI,{..}),BGP(..))
   Union(IV.,VII.)  => Union(Graph(varOrIRI,{..}),BGP(..))
LeftJoin(IV.,VII.)  => LeftJoin(Graph(varOrIRI,{..}),BGP(..))
LeftJoin(V.,I.)     => LeftJoin(LeftJoin({},{..}),LeftJoin(BGP(..),{..}))
LeftJoin(V.,II.)    => LeftJoin(LeftJoin({},{..}),Join(BGP(..),Graph(varOrIRI,{..})))
LeftJoin(V.,III.)   => LeftJoin(LeftJoin({},{..}),Join(BGP(..),Union(..,..)))
LeftJoin(V.,IV.)    => LeftJoin(LeftJoin({},{..}),Graph(varOrIRI,{..}))
    Join(V.,V.)     => Join(LeftJoin({},{..}),LeftJoin({},{..}))
   Union(V.,V.)     => Union(LeftJoin({},{..}),LeftJoin({},{..}))
LeftJoin(V.,V.)     => LeftJoin(LeftJoin({},{..}),LeftJoin({},{..}))
    Join(V.,VI.)    => Join(LeftJoin({},{..}),Union(..,..))
   Union(V.,VI.)    => Union(LeftJoin({},{..}),Union(..,..))
LeftJoin(V.,VI.)    => LeftJoin(LeftJoin({},{..}),Union(..,..))
    Join(V.,VII.)   => Join(LeftJoin({},{..}),BGP(..))
   Union(V.,VII.)   => Union(LeftJoin({},{..}),BGP(..))
LeftJoin(V.,VII.)   => LeftJoin(LeftJoin({},{..}),BGP(..))
LeftJoin(VI.,I.)    => LeftJoin(Union(..,..),LeftJoin(BGP(..),{..}))
LeftJoin(VI.,II.)   => LeftJoin(Union(..,..),Join(BGP(..),Graph(varOrIRI,{..})))
LeftJoin(VI.,III.)  => LeftJoin(Union(..,..),Join(BGP(..),Union(..,..)))
LeftJoin(VI.,IV.)   => LeftJoin(Union(..,..),Graph(varOrIRI,{..}))
LeftJoin(VI.,V.)    => LeftJoin(Union(..,..),LeftJoin({},{..}))
    Join(VI.,VI.)   => Join(Union(..,..),Union(..,..))
   Union(VI.,VI.)   => Union(Union(..,..),Union(..,..))
LeftJoin(VI.,VI.)   => LeftJoin(Union(..,..),Union(..,..))
    Join(VI.,VII.)  => Join(Union(..,..),BGP(..))
   Union(VI.,VII.)  => Union(Union(..,..),BGP(..))
LeftJoin(VI.,VII.)  => LeftJoin(Union(..,..),BGP(..))
LeftJoin(VII.,I.)   => LeftJoin(BGP(..),LeftJoin(BGP(..),{..}))
LeftJoin(VII.,II.)  => LeftJoin(BGP(..),Join(BGP(..),Graph(varOrIRI,{..})))
LeftJoin(VII.,III.) => LeftJoin(BGP(..),Join(BGP(..),Union(..,..)))
LeftJoin(VII.,IV.)  => LeftJoin(BGP(..),Graph(varOrIRI,{..}))
LeftJoin(VII.,V.)   => LeftJoin(BGP(..),LeftJoin({},{..}))
LeftJoin(VII.,VI.)  => LeftJoin(BGP(..),Union(..,..))
    Join(VII.,VII.) => Join(BGP(..),BGP(..))
   Union(VII.,VII.) => Union(BGP(..),BGP(..))
LeftJoin(VII.,VII.) => LeftJoin(BGP(..),BGP(..))
