Temporary header file '/tmp/Q3kwDXzl9C/dump1.h' with the following content will be compiled to create GCC translation unit dump:

  // add defines
  #define __STDC_VERSION__ 201710L
#define _GXX_NULLPTR_T
#define CLUTTER_ENABLE_COMPOSITOR_API 1
#define _REGEX_NELTS(n)
#define _Atomic
#define PACKED
#define getaddrinfo_a(a,b,c,d)

  // add includes
  #include "/usr/include/braiding.h"
  #include "/usr/include/cbraid.h"
  #include "/usr/include/cbraid_implementation.h"
  #include "/usr/include/cbraid_interface.h"

  // add namespaces
  namespace Braiding{typedef int tmp_add_type_1;}
  Braiding::tmp_add_type_1 tmp_add_func_1(){return 0;};
  namespace CBraid{typedef int tmp_add_type_2;}
  CBraid::tmp_add_type_2 tmp_add_func_2(){return 0;};

  // add classes
  ArtinPresentation* tmp_add_class_0;
  BandPresentation* tmp_add_class_1;
  NegativeBraidError* tmp_add_class_2;
  OddIndexError* tmp_add_class_3;
  _G_fpos64_t* tmp_add_class_4;
  _G_fpos_t* tmp_add_class_5;
  _IO_cookie_io_functions_t* tmp_add_class_6;

The GCC parameters:
  gcc -fdump-lang-raw -fkeep-inline-functions -c -x c++ -fpermissive -w "/tmp/Q3kwDXzl9C/dump1.h"

In file included from /tmp/Q3kwDXzl9C/dump1.h:14:
/usr/include/cbraid_implementation.h:112:8: error: redefinition of ‘CBraid::ArtinPresentation::ArtinPresentation(CBraid::sint16)’
  112 | inline ArtinPresentation::ArtinPresentation(sint16 n)
      |        ^~~~~~~~~~~~~~~~~
In file included from /usr/include/cbraid.h:53,
                 from /usr/include/braiding.h:25,
                 from /tmp/Q3kwDXzl9C/dump1.h:12:
/usr/include/cbraid_implementation.h:112:8: note: ‘CBraid::ArtinPresentation::ArtinPresentation(CBraid::sint16)’ previously defined here
  112 | inline ArtinPresentation::ArtinPresentation(sint16 n)
      |        ^~~~~~~~~~~~~~~~~
/usr/include/cbraid_implementation.h:127:15: error: redefinition of ‘CBraid::sint16 CBraid::ArtinPresentation::Index() const’
  127 | inline sint16 ArtinPresentation::Index() const
      |               ^~~~~~~~~~~~~~~~~
/usr/include/cbraid_implementation.h:127:15: note: ‘CBraid::sint16 CBraid::ArtinPresentation::Index() const’ previously defined here
  127 | inline sint16 ArtinPresentation::Index() const
      |               ^~~~~~~~~~~~~~~~~
/usr/include/cbraid_implementation.h:133:15: error: redefinition of ‘CBraid::sint16 CBraid::ArtinPresentation::DeltaTable(CBraid::sint16, CBraid::sint32) const’
  133 | inline sint16 ArtinPresentation::DeltaTable(sint16 i, sint32 k) const
      |               ^~~~~~~~~~~~~~~~~
/usr/include/cbraid_implementation.h:133:15: note: ‘CBraid::sint16 CBraid::ArtinPresentation::DeltaTable(CBraid::sint16, CBraid::sint32) const’ previously defined here
  133 | inline sint16 ArtinPresentation::DeltaTable(sint16 i, sint32 k) const
      |               ^~~~~~~~~~~~~~~~~
/usr/include/cbraid_implementation.h:139:13: error: redefinition of ‘void CBraid::ArtinPresentation::Randomize(CBraid::sint16*) const’
  139 | inline void ArtinPresentation::Randomize(sint16* r) const
      |             ^~~~~~~~~~~~~~~~~
/usr/include/cbraid_implementation.h:139:13: note: ‘void CBraid::ArtinPresentation::Randomize(CBraid::sint16*) const’ previously defined here
  139 | inline void ArtinPresentation::Randomize(sint16* r) const
      |             ^~~~~~~~~~~~~~~~~
/usr/include/cbraid_implementation.h:156:13: error: redefinition of ‘void CBraid::ArtinPresentation::LeftMeet(const CBraid::sint16*, const CBraid::sint16*, CBraid::sint16*) const’
  156 | inline void ArtinPresentation::LeftMeet(
      |             ^~~~~~~~~~~~~~~~~
/usr/include/cbraid_implementation.h:156:13: note: ‘void CBraid::ArtinPresentation::LeftMeet(const CBraid::sint16*, const CBraid::sint16*, CBraid::sint16*) const’ previously defined here
  156 | inline void ArtinPresentation::LeftMeet(
      |             ^~~~~~~~~~~~~~~~~
/usr/include/cbraid_implementation.h:169:13: error: redefinition of ‘void CBraid::ArtinPresentation::RightMeet(const CBraid::sint16*, const CBraid::sint16*, CBraid::sint16*) const’
  169 | inline void ArtinPresentation::RightMeet(
      |             ^~~~~~~~~~~~~~~~~
/usr/include/cbraid_implementation.h:169:13: note: ‘void CBraid::ArtinPresentation::RightMeet(const CBraid::sint16*, const CBraid::sint16*, CBraid::sint16*) const’ previously defined here
  169 | inline void ArtinPresentation::RightMeet(
      |             ^~~~~~~~~~~~~~~~~
/usr/include/cbraid_implementation.h:184:8: error: redefinition of ‘CBraid::BandPresentation::BandPresentation(CBraid::sint16)’
  184 | inline BandPresentation::BandPresentation(sint16 n)
      |        ^~~~~~~~~~~~~~~~
/usr/include/cbraid_implementation.h:184:8: note: ‘CBraid::BandPresentation::BandPresentation(CBraid::sint16)’ previously defined here
  184 | inline BandPresentation::BandPresentation(sint16 n)
      |        ^~~~~~~~~~~~~~~~
/usr/include/cbraid_implementation.h:199:15: error: redefinition of ‘CBraid::sint16 CBraid::BandPresentation::Index() const’
  199 | inline sint16 BandPresentation::Index() const
      |               ^~~~~~~~~~~~~~~~
/usr/include/cbraid_implementation.h:199:15: note: ‘CBraid::sint16 CBraid::BandPresentation::Index() const’ previously defined here
  199 | inline sint16 BandPresentation::Index() const
      |               ^~~~~~~~~~~~~~~~
/usr/include/cbraid_implementation.h:205:15: error: redefinition of ‘CBraid::sint16 CBraid::BandPresentation::DeltaTable(CBraid::sint16, CBraid::sint32) const’
  205 | inline sint16 BandPresentation::DeltaTable(sint16 i, sint32 k) const
      |               ^~~~~~~~~~~~~~~~
/usr/include/cbraid_implementation.h:205:15: note: ‘CBraid::sint16 CBraid::BandPresentation::DeltaTable(CBraid::sint16, CBraid::sint32) const’ previously defined here
  205 | inline sint16 BandPresentation::DeltaTable(sint16 i, sint32 k) const
      |               ^~~~~~~~~~~~~~~~
/usr/include/cbraid_implementation.h:217:13: error: redefinition of ‘void CBraid::BandPresentation::PTtoDCDT(const CBraid::sint16*, CBraid::sint16*) const’
  217 | inline void BandPresentation::PTtoDCDT(const sint16* a, sint16* x) const
      |             ^~~~~~~~~~~~~~~~
/usr/include/cbraid_implementation.h:217:13: note: ‘void CBraid::BandPresentation::PTtoDCDT(const CBraid::sint16*, CBraid::sint16*) const’ previously defined here
  217 | inline void BandPresentation::PTtoDCDT(const sint16* a, sint16* x) const
      |             ^~~~~~~~~~~~~~~~
/usr/include/cbraid_implementation.h:230:13: error: redefinition of ‘void CBraid::BandPresentation::DCDTtoPT(const CBraid::sint16*, CBraid::sint16*) const’
  230 | inline void BandPresentation::DCDTtoPT(const sint16* x, sint16* a) const
      |             ^~~~~~~~~~~~~~~~
/usr/include/cbraid_implementation.h:230:13: note: ‘void CBraid::BandPresentation::DCDTtoPT(const CBraid::sint16*, CBraid::sint16*) const’ previously defined here
  230 | inline void BandPresentation::DCDTtoPT(const sint16* x, sint16* a) const
      |             ^~~~~~~~~~~~~~~~
/usr/include/cbraid_implementation.h:243:13: error: redefinition of ‘void CBraid::BandPresentation::BStoPT(const CBraid::sint8*, CBraid::sint16*) const’
  243 | inline void BandPresentation::BStoPT(const sint8* s, sint16* a) const
      |             ^~~~~~~~~~~~~~~~
/usr/include/cbraid_implementation.h:243:13: note: ‘void CBraid::BandPresentation::BStoPT(const CBraid::sint8*, CBraid::sint16*) const’ previously defined here
  243 | inline void BandPresentation::BStoPT(const sint8* s, sint16* a) const
      |             ^~~~~~~~~~~~~~~~
/usr/include/cbraid_implementation.h:271:13: error: redefinition of ‘void CBraid::BandPresentation::Randomize(CBraid::sint16*) const’
  271 | inline void BandPresentation::Randomize(sint16* r) const
      |             ^~~~~~~~~~~~~~~~
/usr/include/cbraid_implementation.h:271:13: note: ‘void CBraid::BandPresentation::Randomize(CBraid::sint16*) const’ previously defined here
  271 | inline void BandPresentation::Randomize(sint16* r) const
      |             ^~~~~~~~~~~~~~~~
/usr/include/cbraid_implementation.h:309:13: error: redefinition of ‘void CBraid::BandPresentation::LeftMeet(const CBraid::sint16*, const CBraid::sint16*, CBraid::sint16*) const’
  309 | inline void BandPresentation::LeftMeet(
      |             ^~~~~~~~~~~~~~~~
/usr/include/cbraid_implementation.h:309:13: note: ‘void CBraid::BandPresentation::LeftMeet(const CBraid::sint16*, const CBraid::sint16*, CBraid::sint16*) const’ previously defined here
  309 | inline void BandPresentation::LeftMeet(
      |             ^~~~~~~~~~~~~~~~
/usr/include/cbraid_implementation.h:364:13: error: redefinition of ‘void CBraid::BandPresentation::RightMeet(const CBraid::sint16*, const CBraid::sint16*, CBraid::sint16*) const’
  364 | inline void BandPresentation::RightMeet(
      |             ^~~~~~~~~~~~~~~~
/usr/include/cbraid_implementation.h:364:13: note: ‘void CBraid::BandPresentation::RightMeet(const CBraid::sint16*, const CBraid::sint16*, CBraid::sint16*) const’ previously defined here
  364 | inline void BandPresentation::RightMeet(
      |             ^~~~~~~~~~~~~~~~
/usr/include/cbraid_implementation.h:372:8: error: redefinition of ‘CBraid::Factor<P>::Factor(CBraid::sint16, CBraid::sint32)’
  372 | inline Factor<P>::Factor(sint16 n, sint32 k)
      |        ^~~~~~~~~
/usr/include/cbraid_implementation.h:372:8: note: ‘CBraid::Factor<P>::Factor(CBraid::sint16, CBraid::sint32)’ previously declared here
  372 | inline Factor<P>::Factor(sint16 n, sint32 k)
      |        ^~~~~~~~~
/usr/include/cbraid_implementation.h:391:8: error: redefinition of ‘CBraid::Factor<P>::Factor(const CBraid::Factor<P>&)’
  391 | inline Factor<P>::Factor(const Factor& f)
      |        ^~~~~~~~~
/usr/include/cbraid_implementation.h:391:8: note: ‘CBraid::Factor<P>::Factor(const CBraid::Factor<P>&)’ previously declared here
  391 | inline Factor<P>::Factor(const Factor& f)
      |        ^~~~~~~~~
/usr/include/cbraid_implementation.h:408:8: error: redefinition of ‘CBraid::Factor<P>::operator CBraid::sint16*()’
  408 | inline Factor<P>::operator sint16*()
      |        ^~~~~~~~~
/usr/include/cbraid_implementation.h:408:8: note: ‘CBraid::Factor<P>::operator CBraid::sint16*()’ previously declared here
  408 | inline Factor<P>::operator sint16*()
      |        ^~~~~~~~~
/usr/include/cbraid_implementation.h:415:8: error: redefinition of ‘CBraid::Factor<P>::operator const CBraid::sint16*() const’
  415 | inline Factor<P>::operator const sint16*() const
      |        ^~~~~~~~~
/usr/include/cbraid_implementation.h:415:8: note: ‘CBraid::Factor<P>::operator const CBraid::sint16*() const’ previously declared here
  415 | inline Factor<P>::operator const sint16*() const
      |        ^~~~~~~~~
/usr/include/cbraid_implementation.h:422:8: error: redefinition of ‘CBraid::Factor<P>::~Factor()’
  422 | inline Factor<P>::~Factor()
      |        ^~~~~~~~~
/usr/include/cbraid_implementation.h:422:8: note: ‘CBraid::Factor<P>::~Factor()’ previously declared here
  422 | inline Factor<P>::~Factor()
      |        ^~~~~~~~~
/usr/include/cbraid_implementation.h:429:19: error: redefinition of ‘CBraid::Factor<P>& CBraid::Factor<P>::Delta(CBraid::sint32)’
  429 | inline Factor<P>& Factor<P>::Delta(sint32 k)
      |                   ^~~~~~~~~
/usr/include/cbraid_implementation.h:429:19: note: ‘CBraid::Factor<P>& CBraid::Factor<P>::Delta(CBraid::sint32)’ previously declared here
  429 | inline Factor<P>& Factor<P>::Delta(sint32 k)
      |                   ^~~~~~~~~
/usr/include/cbraid_implementation.h:438:19: error: redefinition of ‘CBraid::Factor<P>& CBraid::Factor<P>::Identity()’
  438 | inline Factor<P>& Factor<P>::Identity()
      |                   ^~~~~~~~~
/usr/include/cbraid_implementation.h:438:19: note: ‘CBraid::Factor<P>& CBraid::Factor<P>::Identity()’ previously declared here
  438 | inline Factor<P>& Factor<P>::Identity()
      |                   ^~~~~~~~~
/usr/include/cbraid_implementation.h:445:19: error: redefinition of ‘CBraid::Factor<P>& CBraid::Factor<P>::LowerDelta(CBraid::sint32)’
  445 | inline Factor<P>& Factor<P>::LowerDelta(sint32 k)
      |                   ^~~~~~~~~
/usr/include/cbraid_implementation.h:445:19: note: ‘CBraid::Factor<P>& CBraid::Factor<P>::LowerDelta(CBraid::sint32)’ previously declared here
  445 | inline Factor<P>& Factor<P>::LowerDelta(sint32 k)
      |                   ^~~~~~~~~
/usr/include/cbraid_implementation.h:461:19: error: redefinition of ‘CBraid::Factor<P>& CBraid::Factor<P>::UpperDelta(CBraid::sint32)’
  461 | inline Factor<P>& Factor<P>::UpperDelta(sint32 k)
      |                   ^~~~~~~~~
/usr/include/cbraid_implementation.h:461:19: note: ‘CBraid::Factor<P>& CBraid::Factor<P>::UpperDelta(CBraid::sint32)’ previously declared here
  461 | inline Factor<P>& Factor<P>::UpperDelta(sint32 k)
      |                   ^~~~~~~~~
/usr/include/cbraid_implementation.h:477:15: error: redefinition of ‘CBraid::sint16 CBraid::Factor<P>::Index() const’
  477 | inline sint16 Factor<P>::Index() const
      |               ^~~~~~~~~
/usr/include/cbraid_implementation.h:477:15: note: ‘CBraid::sint16 CBraid::Factor<P>::Index() const’ previously declared here
  477 | inline sint16 Factor<P>::Index() const
      |               ^~~~~~~~~
/usr/include/cbraid_implementation.h:484:16: error: redefinition of ‘CBraid::sint16& CBraid::Factor<P>::At(CBraid::sint16)’
  484 | inline sint16& Factor<P>::At(sint16 n)
      |                ^~~~~~~~~
/usr/include/cbraid_implementation.h:484:16: note: ‘CBraid::sint16& CBraid::Factor<P>::At(CBraid::sint16)’ previously declared here
  484 | inline sint16& Factor<P>::At(sint16 n)
      |                ^~~~~~~~~
/usr/include/cbraid_implementation.h:491:15: error: redefinition of ‘CBraid::sint16 CBraid::Factor<P>::At(CBraid::sint16) const’
  491 | inline sint16 Factor<P>::At(sint16 n) const
      |               ^~~~~~~~~
/usr/include/cbraid_implementation.h:491:15: note: ‘CBraid::sint16 CBraid::Factor<P>::At(CBraid::sint16) const’ previously declared here
  491 | inline sint16 Factor<P>::At(sint16 n) const
      |               ^~~~~~~~~
/usr/include/cbraid_implementation.h:498:16: error: redefinition of ‘CBraid::sint16& CBraid::Factor<P>::operator[](CBraid::sint16)’
  498 | inline sint16& Factor<P>::operator[](sint16 n)
      |                ^~~~~~~~~
/usr/include/cbraid_implementation.h:498:16: note: ‘CBraid::sint16& CBraid::Factor<P>::operator[](CBraid::sint16)’ previously declared here
  498 | inline sint16& Factor<P>::operator[](sint16 n)
      |                ^~~~~~~~~
/usr/include/cbraid_implementation.h:505:15: error: redefinition of ‘CBraid::sint16 CBraid::Factor<P>::operator[](CBraid::sint16) const’
  505 | inline sint16 Factor<P>::operator[](sint16 n) const {
      |               ^~~~~~~~~
/usr/include/cbraid_implementation.h:505:15: note: ‘CBraid::sint16 CBraid::Factor<P>::operator[](CBraid::sint16) const’ previously declared here
  505 | inline sint16 Factor<P>::operator[](sint16 n) const {
      |               ^~~~~~~~~
/usr/include/cbraid_implementation.h:511:19: error: redefinition of ‘CBraid::Factor<P>& CBraid::Factor<P>::Assign(const CBraid::Factor<P>&)’
  511 | inline Factor<P>& Factor<P>::Assign(const Factor<P>& f)
      |                   ^~~~~~~~~
/usr/include/cbraid_implementation.h:511:19: note: ‘CBraid::Factor<P>& CBraid::Factor<P>::Assign(const CBraid::Factor<P>&)’ previously declared here
  511 | inline Factor<P>& Factor<P>::Assign(const Factor<P>& f)
      |                   ^~~~~~~~~
/usr/include/cbraid_implementation.h:531:19: error: redefinition of ‘CBraid::Factor<P>& CBraid::Factor<P>::operator=(const CBraid::Factor<P>&)’
  531 | inline Factor<P>& Factor<P>::operator=(const Factor& f)
      |                   ^~~~~~~~~
/usr/include/cbraid_implementation.h:531:19: note: ‘CBraid::Factor<P>& CBraid::Factor<P>::operator=(const CBraid::Factor<P>&)’ previously declared here
  531 | inline Factor<P>& Factor<P>::operator=(const Factor& f)
      |                   ^~~~~~~~~
/usr/include/cbraid_implementation.h:538:13: error: redefinition of ‘bool CBraid::Factor<P>::Compare(const CBraid::Factor<P>&) const’
  538 | inline bool Factor<P>::Compare(const Factor<P>& f) const
      |             ^~~~~~~~~
/usr/include/cbraid_implementation.h:538:13: note: ‘bool CBraid::Factor<P>::Compare(const CBraid::Factor<P>&) const’ previously declared here
  538 | inline bool Factor<P>::Compare(const Factor<P>& f) const
      |             ^~~~~~~~~
/usr/include/cbraid_implementation.h:557:13: error: redefinition of ‘bool CBraid::Factor<P>::operator==(const CBraid::Factor<P>&) const’
  557 | inline bool Factor<P>::operator==(const Factor& f) const
      |             ^~~~~~~~~
/usr/include/cbraid_implementation.h:557:13: note: ‘bool CBraid::Factor<P>::operator==(const CBraid::Factor<P>&) const’ previously declared here
  557 | inline bool Factor<P>::operator==(const Factor& f) const
      |             ^~~~~~~~~
/usr/include/cbraid_implementation.h:564:13: error: redefinition of ‘bool CBraid::Factor<P>::operator!=(const CBraid::Factor<P>&) const’
  564 | inline bool Factor<P>::operator!=(const Factor& f) const
      |             ^~~~~~~~~
/usr/include/cbraid_implementation.h:564:13: note: ‘bool CBraid::Factor<P>::operator!=(const CBraid::Factor<P>&) const’ previously declared here
  564 | inline bool Factor<P>::operator!=(const Factor& f) const
      |             ^~~~~~~~~
/usr/include/cbraid_implementation.h:571:13: error: redefinition of ‘bool CBraid::Factor<P>::CompareWithDelta(CBraid::sint32) const’
  571 | inline bool Factor<P>::CompareWithDelta(sint32 k) const
      |             ^~~~~~~~~
/usr/include/cbraid_implementation.h:571:13: note: ‘bool CBraid::Factor<P>::CompareWithDelta(CBraid::sint32) const’ previously declared here
  571 | inline bool Factor<P>::CompareWithDelta(sint32 k) const
      |             ^~~~~~~~~
/usr/include/cbraid_implementation.h:582:13: error: redefinition of ‘bool CBraid::Factor<P>::CompareWithIdentity() const’
  582 | inline bool Factor<P>::CompareWithIdentity() const
      |             ^~~~~~~~~
/usr/include/cbraid_implementation.h:582:13: note: ‘bool CBraid::Factor<P>::CompareWithIdentity() const’ previously declared here
  582 | inline bool Factor<P>::CompareWithIdentity() const
      |             ^~~~~~~~~
/usr/include/cbraid_implementation.h:589:18: error: redefinition of ‘CBraid::Factor<P> CBraid::Factor<P>::Composition(const CBraid::Factor<P>&) const’
  589 | inline Factor<P> Factor<P>::Composition(
      |                  ^~~~~~~~~
/usr/include/cbraid_implementation.h:589:18: note: ‘CBraid::Factor<P> CBraid::Factor<P>::Composition(const CBraid::Factor<P>&) const’ previously declared here
  589 | inline Factor<P> Factor<P>::Composition(
      |                  ^~~~~~~~~
/usr/include/cbraid_implementation.h:606:19: error: redefinition of ‘CBraid::Factor<P>& CBraid::Factor<P>::AssignComposition(const CBraid::Factor<P>&)’
  606 | inline Factor<P>& Factor<P>::AssignComposition(
      |                   ^~~~~~~~~
/usr/include/cbraid_implementation.h:606:19: note: ‘CBraid::Factor<P>& CBraid::Factor<P>::AssignComposition(const CBraid::Factor<P>&)’ previously declared here
  606 | inline Factor<P>& Factor<P>::AssignComposition(
      |                   ^~~~~~~~~
/usr/include/cbraid_implementation.h:622:19: error: redefinition of ‘CBraid::Factor<P>& CBraid::Factor<P>::operator*=(const CBraid::Factor<P>&)’
  622 | inline Factor<P>& Factor<P>::operator*=(const Factor& a)
      |                   ^~~~~~~~~
/usr/include/cbraid_implementation.h:622:19: note: ‘CBraid::Factor<P>& CBraid::Factor<P>::operator*=(const CBraid::Factor<P>&)’ previously declared here
  622 | inline Factor<P>& Factor<P>::operator*=(const Factor& a)
      |                   ^~~~~~~~~
/usr/include/cbraid_implementation.h:629:18: error: redefinition of ‘CBraid::Factor<P> CBraid::Factor<P>::operator*(const CBraid::Factor<P>&) const’
  629 | inline Factor<P> Factor<P>::operator*(const Factor& a) const
      |                  ^~~~~~~~~
/usr/include/cbraid_implementation.h:629:18: note: ‘CBraid::Factor<P> CBraid::Factor<P>::operator*(const CBraid::Factor<P>&) const’ previously declared here
  629 | inline Factor<P> Factor<P>::operator*(const Factor& a) const
      |                  ^~~~~~~~~
/usr/include/cbraid_implementation.h:636:18: error: redefinition of ‘CBraid::Factor<P> CBraid::Factor<P>::Inverse() const’
  636 | inline Factor<P> Factor<P>::Inverse() const
      |                  ^~~~~~~~~
/usr/include/cbraid_implementation.h:636:18: note: ‘CBraid::Factor<P> CBraid::Factor<P>::Inverse() const’ previously declared here
  636 | inline Factor<P> Factor<P>::Inverse() const
      |                  ^~~~~~~~~
/usr/include/cbraid_implementation.h:646:19: error: redefinition of ‘CBraid::Factor<P>& CBraid::Factor<P>::AssignInverse()’
  646 | inline Factor<P>& Factor<P>::AssignInverse()
      |                   ^~~~~~~~~
/usr/include/cbraid_implementation.h:646:19: note: ‘CBraid::Factor<P>& CBraid::Factor<P>::AssignInverse()’ previously declared here
  646 | inline Factor<P>& Factor<P>::AssignInverse()
      |                   ^~~~~~~~~
/usr/include/cbraid_implementation.h:653:18: error: redefinition of ‘CBraid::Factor<P> CBraid::Factor<P>::operator!() const’
  653 | inline Factor<P> Factor<P>::operator!() const
      |                  ^~~~~~~~~
/usr/include/cbraid_implementation.h:653:18: note: ‘CBraid::Factor<P> CBraid::Factor<P>::operator!() const’ previously declared here
  653 | inline Factor<P> Factor<P>::operator!() const
      |                  ^~~~~~~~~
/usr/include/cbraid_implementation.h:660:18: error: redefinition of ‘CBraid::Factor<P> CBraid::Factor<P>::Flip(CBraid::sint32) const’
  660 | inline Factor<P> Factor<P>::Flip(sint32 k) const
      |                  ^~~~~~~~~
/usr/include/cbraid_implementation.h:660:18: note: ‘CBraid::Factor<P> CBraid::Factor<P>::Flip(CBraid::sint32) const’ previously declared here
  660 | inline Factor<P> Factor<P>::Flip(sint32 k) const
      |                  ^~~~~~~~~
/usr/include/cbraid_implementation.h:670:19: error: redefinition of ‘CBraid::Factor<P>& CBraid::Factor<P>::AssignFlip(CBraid::sint32)’
  670 | inline Factor<P>& Factor<P>::AssignFlip(sint32 k)
      |                   ^~~~~~~~~
/usr/include/cbraid_implementation.h:670:19: note: ‘CBraid::Factor<P>& CBraid::Factor<P>::AssignFlip(CBraid::sint32)’ previously declared here
  670 | inline Factor<P>& Factor<P>::AssignFlip(sint32 k)
      |                   ^~~~~~~~~
/usr/include/cbraid_implementation.h:677:18: error: redefinition of ‘CBraid::Factor<P> CBraid::Factor<P>::LeftMeet(const CBraid::Factor<P>&) const’
  677 | inline Factor<P> Factor<P>::LeftMeet(const Factor<P>& a) const
      |                  ^~~~~~~~~
/usr/include/cbraid_implementation.h:677:18: note: ‘CBraid::Factor<P> CBraid::Factor<P>::LeftMeet(const CBraid::Factor<P>&) const’ previously declared here
  677 | inline Factor<P> Factor<P>::LeftMeet(const Factor<P>& a) const
      |                  ^~~~~~~~~
/usr/include/cbraid_implementation.h:694:18: error: redefinition of ‘CBraid::Factor<P> CBraid::Factor<P>::RightMeet(const CBraid::Factor<P>&) const’
  694 | inline Factor<P> Factor<P>::RightMeet(const Factor<P>& a) const
      |                  ^~~~~~~~~
/usr/include/cbraid_implementation.h:694:18: note: ‘CBraid::Factor<P> CBraid::Factor<P>::RightMeet(const CBraid::Factor<P>&) const’ previously declared here
  694 | inline Factor<P> Factor<P>::RightMeet(const Factor<P>& a) const
      |                  ^~~~~~~~~
/usr/include/cbraid_implementation.h:711:19: error: redefinition of ‘CBraid::Factor<P>& CBraid::Factor<P>::Randomize()’
  711 | inline Factor<P>& Factor<P>::Randomize()
      |                   ^~~~~~~~~
/usr/include/cbraid_implementation.h:711:19: note: ‘CBraid::Factor<P>& CBraid::Factor<P>::Randomize()’ previously declared here
  711 | inline Factor<P>& Factor<P>::Randomize()
      |                   ^~~~~~~~~
/usr/include/cbraid_implementation.h:788:8: error: redefinition of ‘CBraid::Braid<P>::Braid(CBraid::sint16)’
  788 | inline Braid<P>::Braid(sint16 n)
      |        ^~~~~~~~
/usr/include/cbraid_implementation.h:788:8: note: ‘CBraid::Braid<P>::Braid(CBraid::sint16)’ previously declared here
  788 | inline Braid<P>::Braid(sint16 n)
      |        ^~~~~~~~
/usr/include/cbraid_implementation.h:796:8: error: redefinition of ‘CBraid::Braid<P>::Braid(const CBraid::Braid<P>&)’
  796 | inline Braid<P>::Braid(const Braid& b)
      |        ^~~~~~~~
/usr/include/cbraid_implementation.h:796:8: note: ‘CBraid::Braid<P>::Braid(const CBraid::Braid<P>&)’ previously declared here
  796 | inline Braid<P>::Braid(const Braid& b)
      |        ^~~~~~~~
/usr/include/cbraid_implementation.h:805:8: error: redefinition of ‘CBraid::Braid<P>::Braid(const CBraid::Factor<P>&)’
  805 | inline Braid<P>::Braid(const Factor<P>& f)
      |        ^~~~~~~~
/usr/include/cbraid_implementation.h:805:8: note: ‘CBraid::Braid<P>::Braid(const CBraid::Factor<P>&)’ previously declared here
  805 | inline Braid<P>::Braid(const Factor<P>& f)
      |        ^~~~~~~~
/usr/include/cbraid_implementation.h:815:8: error: redefinition of ‘CBraid::Braid<P>::~Braid()’
  815 | inline Braid<P>::~Braid()
      |        ^~~~~~~~
/usr/include/cbraid_implementation.h:815:8: note: ‘CBraid::Braid<P>::~Braid()’ previously declared here
  815 | inline Braid<P>::~Braid()
      |        ^~~~~~~~
/usr/include/cbraid_implementation.h:821:15: error: redefinition of ‘CBraid::sint16 CBraid::Braid<P>::Index() const’
  821 | inline sint16 Braid<P>::Index() const
      |               ^~~~~~~~
/usr/include/cbraid_implementation.h:821:15: note: ‘CBraid::sint16 CBraid::Braid<P>::Index() const’ previously declared here
  821 | inline sint16 Braid<P>::Index() const
      |               ^~~~~~~~
/usr/include/cbraid_implementation.h:828:18: error: redefinition of ‘CBraid::Braid<P>& CBraid::Braid<P>::Identity()’
  828 | inline Braid<P>& Braid<P>::Identity()
      |                  ^~~~~~~~
/usr/include/cbraid_implementation.h:828:18: note: ‘CBraid::Braid<P>& CBraid::Braid<P>::Identity()’ previously declared here
  828 | inline Braid<P>& Braid<P>::Identity()
      |                  ^~~~~~~~
/usr/include/cbraid_implementation.h:837:18: error: redefinition of ‘CBraid::Braid<P>& CBraid::Braid<P>::Assign(const CBraid::Braid<P>&)’
  837 | inline Braid<P>& Braid<P>::Assign(const Braid& b)
      |                  ^~~~~~~~
/usr/include/cbraid_implementation.h:837:18: note: ‘CBraid::Braid<P>& CBraid::Braid<P>::Assign(const CBraid::Braid<P>&)’ previously declared here
  837 | inline Braid<P>& Braid<P>::Assign(const Braid& b)
      |                  ^~~~~~~~
/usr/include/cbraid_implementation.h:856:18: error: redefinition of ‘CBraid::Braid<P>& CBraid::Braid<P>::operator=(const CBraid::Braid<P>&)’
  856 | inline Braid<P>& Braid<P>::operator=(const Braid& b)
      |                  ^~~~~~~~
/usr/include/cbraid_implementation.h:856:18: note: ‘CBraid::Braid<P>& CBraid::Braid<P>::operator=(const CBraid::Braid<P>&)’ previously declared here
  856 | inline Braid<P>& Braid<P>::operator=(const Braid& b)
      |                  ^~~~~~~~
/usr/include/cbraid_implementation.h:863:13: error: redefinition of ‘bool CBraid::Braid<P>::Compare(const CBraid::Braid<P>&) const’
  863 | inline bool Braid<P>::Compare(const Braid& b) const
      |             ^~~~~~~~
/usr/include/cbraid_implementation.h:863:13: note: ‘bool CBraid::Braid<P>::Compare(const CBraid::Braid<P>&) const’ previously declared here
  863 | inline bool Braid<P>::Compare(const Braid& b) const
      |             ^~~~~~~~
/usr/include/cbraid_implementation.h:879:13: error: redefinition of ‘bool CBraid::Braid<P>::operator==(const CBraid::Braid<P>&) const’
  879 | inline bool Braid<P>::operator==(const Braid& b) const
      |             ^~~~~~~~
/usr/include/cbraid_implementation.h:879:13: note: ‘bool CBraid::Braid<P>::operator==(const CBraid::Braid<P>&) const’ previously declared here
  879 | inline bool Braid<P>::operator==(const Braid& b) const
      |             ^~~~~~~~
/usr/include/cbraid_implementation.h:886:13: error: redefinition of ‘bool CBraid::Braid<P>::operator!=(const CBraid::Braid<P>&) const’
  886 | inline bool Braid<P>::operator!=(const Braid& b) const
      |             ^~~~~~~~
/usr/include/cbraid_implementation.h:886:13: note: ‘bool CBraid::Braid<P>::operator!=(const CBraid::Braid<P>&) const’ previously declared here
  886 | inline bool Braid<P>::operator!=(const Braid& b) const
      |             ^~~~~~~~
/usr/include/cbraid_implementation.h:893:13: error: redefinition of ‘bool CBraid::Braid<P>::CompareWithIdentity() const’
  893 | inline bool Braid<P>::CompareWithIdentity() const
      |             ^~~~~~~~
/usr/include/cbraid_implementation.h:893:13: note: ‘bool CBraid::Braid<P>::CompareWithIdentity() const’ previously declared here
  893 | inline bool Braid<P>::CompareWithIdentity() const
      |             ^~~~~~~~
/usr/include/cbraid_implementation.h:900:17: error: redefinition of ‘CBraid::Braid<P> CBraid::Braid<P>::Inverse() const’
  900 | inline Braid<P> Braid<P>::Inverse() const
      |                 ^~~~~~~~
/usr/include/cbraid_implementation.h:900:17: note: ‘CBraid::Braid<P> CBraid::Braid<P>::Inverse() const’ previously declared here
  900 | inline Braid<P> Braid<P>::Inverse() const
      |                 ^~~~~~~~
/usr/include/cbraid_implementation.h:923:17: error: redefinition of ‘CBraid::Braid<P> CBraid::Braid<P>::operator!() const’
  923 | inline Braid<P> Braid<P>::operator!() const
      |                 ^~~~~~~~
/usr/include/cbraid_implementation.h:923:17: note: ‘CBraid::Braid<P> CBraid::Braid<P>::operator!() const’ previously declared here
  923 | inline Braid<P> Braid<P>::operator!() const
      |                 ^~~~~~~~
/usr/include/cbraid_implementation.h:930:18: error: redefinition of ‘CBraid::Braid<P>& CBraid::Braid<P>::LeftMultiply(const CBraid::Factor<P>&)’
  930 | inline Braid<P>& Braid<P>::LeftMultiply(const Factor<P>& f)
      |                  ^~~~~~~~
/usr/include/cbraid_implementation.h:930:18: note: ‘CBraid::Braid<P>& CBraid::Braid<P>::LeftMultiply(const CBraid::Factor<P>&)’ previously declared here
  930 | inline Braid<P>& Braid<P>::LeftMultiply(const Factor<P>& f)
      |                  ^~~~~~~~
/usr/include/cbraid_implementation.h:946:18: error: redefinition of ‘CBraid::Braid<P>& CBraid::Braid<P>::RightMultiply(const CBraid::Factor<P>&)’
  946 | inline Braid<P>& Braid<P>::RightMultiply(const Factor<P>& f)
      |                  ^~~~~~~~
/usr/include/cbraid_implementation.h:946:18: note: ‘CBraid::Braid<P>& CBraid::Braid<P>::RightMultiply(const CBraid::Factor<P>&)’ previously declared here
  946 | inline Braid<P>& Braid<P>::RightMultiply(const Factor<P>& f)
      |                  ^~~~~~~~
/usr/include/cbraid_implementation.h:962:18: error: redefinition of ‘CBraid::Braid<P>& CBraid::Braid<P>::LeftMultiply(const CBraid::Braid<P>&)’
  962 | inline Braid<P>& Braid<P>::LeftMultiply(const Braid& a)
      |                  ^~~~~~~~
/usr/include/cbraid_implementation.h:962:18: note: ‘CBraid::Braid<P>& CBraid::Braid<P>::LeftMultiply(const CBraid::Braid<P>&)’ previously declared here
  962 | inline Braid<P>& Braid<P>::LeftMultiply(const Braid& a)
      |                  ^~~~~~~~
/usr/include/cbraid_implementation.h:984:18: error: redefinition of ‘CBraid::Braid<P>& CBraid::Braid<P>::RightMultiply(const CBraid::Braid<P>&)’
  984 | inline Braid<P>& Braid<P>::RightMultiply(const Braid& a)
      |                  ^~~~~~~~
/usr/include/cbraid_implementation.h:984:18: note: ‘CBraid::Braid<P>& CBraid::Braid<P>::RightMultiply(const CBraid::Braid<P>&)’ previously declared here
  984 | inline Braid<P>& Braid<P>::RightMultiply(const Braid& a)
      |                  ^~~~~~~~
/usr/include/cbraid_implementation.h:1006:18: error: redefinition of ‘CBraid::Braid<P>& CBraid::Braid<P>::Multiply(const CBraid::Braid<P>&, const CBraid::Braid<P>&)’
 1006 | inline Braid<P>& Braid<P>::Multiply(const Braid& a, const Braid& b)
      |                  ^~~~~~~~
/usr/include/cbraid_implementation.h:1006:18: note: ‘CBraid::Braid<P>& CBraid::Braid<P>::Multiply(const CBraid::Braid<P>&, const CBraid::Braid<P>&)’ previously declared here
 1006 | inline Braid<P>& Braid<P>::Multiply(const Braid& a, const Braid& b)
      |                  ^~~~~~~~
/usr/include/cbraid_implementation.h:1013:17: error: redefinition of ‘CBraid::Braid<P> CBraid::Braid<P>::operator*(const CBraid::Braid<P>&) const’
 1013 | inline Braid<P> Braid<P>::operator*(const Braid& a) const
      |                 ^~~~~~~~
/usr/include/cbraid_implementation.h:1013:17: note: ‘CBraid::Braid<P> CBraid::Braid<P>::operator*(const CBraid::Braid<P>&) const’ previously declared here
 1013 | inline Braid<P> Braid<P>::operator*(const Braid& a) const
      |                 ^~~~~~~~
/usr/include/cbraid_implementation.h:1021:18: error: redefinition of ‘CBraid::Braid<P>& CBraid::Braid<P>::operator*=(const CBraid::Braid<P>&)’
 1021 | inline Braid<P>& Braid<P>::operator*=(const Braid& a)
      |                  ^~~~~~~~
/usr/include/cbraid_implementation.h:1021:18: note: ‘CBraid::Braid<P>& CBraid::Braid<P>::operator*=(const CBraid::Braid<P>&)’ previously declared here
 1021 | inline Braid<P>& Braid<P>::operator*=(const Braid& a)
      |                  ^~~~~~~~
/usr/include/cbraid_implementation.h:1028:36: error: redefinition of ‘CBraid::Braid<P>::CanonicalFactor CBraid::Braid<P>::GetPerm() const’
 1028 | typename Braid<P>::CanonicalFactor Braid<P>::GetPerm() const
      |                                    ^~~~~~~~
/usr/include/cbraid_implementation.h:1028:36: note: ‘CBraid::Braid<P>::CanonicalFactor CBraid::Braid<P>::GetPerm() const’ previously declared here
 1028 | typename Braid<P>::CanonicalFactor Braid<P>::GetPerm() const
      |                                    ^~~~~~~~
/usr/include/cbraid_implementation.h:1039:11: error: redefinition of ‘CBraid::Braid<P>& CBraid::Braid<P>::MakeLCF()’
 1039 | Braid<P>& Braid<P>::MakeLCF()
      |           ^~~~~~~~
/usr/include/cbraid_implementation.h:1039:11: note: ‘CBraid::Braid<P>& CBraid::Braid<P>::MakeLCF()’ previously declared here
 1039 | Braid<P>& Braid<P>::MakeLCF()
      |           ^~~~~~~~
/usr/include/cbraid_implementation.h:1057:11: error: redefinition of ‘CBraid::Braid<P>& CBraid::Braid<P>::MakeRCF()’
 1057 | Braid<P>& Braid<P>::MakeRCF()
      |           ^~~~~~~~
/usr/include/cbraid_implementation.h:1057:11: note: ‘CBraid::Braid<P>& CBraid::Braid<P>::MakeRCF()’ previously declared here
 1057 | Braid<P>& Braid<P>::MakeRCF()
      |           ^~~~~~~~
/usr/include/cbraid_implementation.h:1075:10: error: redefinition of ‘CBraid::Braid<P> CBraid::Braid<P>::ReduceLeftLower()’
 1075 | Braid<P> Braid<P>::ReduceLeftLower()
      |          ^~~~~~~~
/usr/include/cbraid_implementation.h:1075:10: note: ‘CBraid::Braid<P> CBraid::Braid<P>::ReduceLeftLower()’ previously declared here
 1075 | Braid<P> Braid<P>::ReduceLeftLower()
      |          ^~~~~~~~
/usr/include/cbraid_implementation.h:1082:10: error: redefinition of ‘CBraid::Braid<P> CBraid::Braid<P>::ReduceLeftUpper()’
 1082 | Braid<P> Braid<P>::ReduceLeftUpper()
      |          ^~~~~~~~
/usr/include/cbraid_implementation.h:1082:10: note: ‘CBraid::Braid<P> CBraid::Braid<P>::ReduceLeftUpper()’ previously declared here
 1082 | Braid<P> Braid<P>::ReduceLeftUpper()
      |          ^~~~~~~~
/usr/include/cbraid_implementation.h:1089:10: error: redefinition of ‘CBraid::Braid<P> CBraid::Braid<P>::ReduceRightLower()’
 1089 | Braid<P> Braid<P>::ReduceRightLower()
      |          ^~~~~~~~
/usr/include/cbraid_implementation.h:1089:10: note: ‘CBraid::Braid<P> CBraid::Braid<P>::ReduceRightLower()’ previously declared here
 1089 | Braid<P> Braid<P>::ReduceRightLower()
      |          ^~~~~~~~
/usr/include/cbraid_implementation.h:1096:10: error: redefinition of ‘CBraid::Braid<P> CBraid::Braid<P>::ReduceRightUpper()’
 1096 | Braid<P> Braid<P>::ReduceRightUpper()
      |          ^~~~~~~~
/usr/include/cbraid_implementation.h:1096:10: note: ‘CBraid::Braid<P> CBraid::Braid<P>::ReduceRightUpper()’ previously declared here
 1096 | Braid<P> Braid<P>::ReduceRightUpper()
      |          ^~~~~~~~
/usr/include/cbraid_implementation.h:1103:10: error: redefinition of ‘CBraid::Braid<P> CBraid::Braid<P>::ReduceLeftSub(const CBraid::Factor<P>&)’
 1103 | Braid<P> Braid<P>::ReduceLeftSub(const Factor<P>& SmallDelta)
      |          ^~~~~~~~
/usr/include/cbraid_implementation.h:1103:10: note: ‘CBraid::Braid<P> CBraid::Braid<P>::ReduceLeftSub(const CBraid::Factor<P>&)’ previously declared here
 1103 | Braid<P> Braid<P>::ReduceLeftSub(const Factor<P>& SmallDelta)
      |          ^~~~~~~~
/usr/include/cbraid_implementation.h:1135:10: error: redefinition of ‘CBraid::Braid<P> CBraid::Braid<P>::ReduceRightSub(const CBraid::Factor<P>&)’
 1135 | Braid<P> Braid<P>::ReduceRightSub(const Factor<P>& SmallDelta)
      |          ^~~~~~~~
/usr/include/cbraid_implementation.h:1135:10: note: ‘CBraid::Braid<P> CBraid::Braid<P>::ReduceRightSub(const CBraid::Factor<P>&)’ previously declared here
 1135 | Braid<P> Braid<P>::ReduceRightSub(const Factor<P>& SmallDelta)
      |          ^~~~~~~~
/usr/include/cbraid_implementation.h:1167:11: error: redefinition of ‘CBraid::Braid<P>& CBraid::Braid<P>::Randomize(CBraid::sint32)’
 1167 | Braid<P>& Braid<P>::Randomize(sint32 cl)
      |           ^~~~~~~~
/usr/include/cbraid_implementation.h:1167:11: note: ‘CBraid::Braid<P>& CBraid::Braid<P>::Randomize(CBraid::sint32)’ previously declared here
 1167 | Braid<P>& Braid<P>::Randomize(sint32 cl)
      |           ^~~~~~~~
In file included from /tmp/Q3kwDXzl9C/dump1.h:15:
/usr/include/cbraid_interface.h:293:1: error: reference to ‘Factor’ is ambiguous
  293 | Factor<P> LeftMeet(const Factor<P>& a, const Factor<P>& b);
      | ^~~~~~
In file included from /usr/include/cbraid.h:48:
/usr/include/cbraid_interface.h:182:25: note: candidates are: ‘template<class P> class CBraid::Factor’
  182 | template<class P> class Factor {
      |                         ^~~~~~
/usr/include/cbraid_interface.h:182:25: note:                 ‘template<class P> class Factor’
  182 | template<class P> class Factor {
      |                         ^~~~~~
/usr/include/cbraid_interface.h:295:1: error: reference to ‘Factor’ is ambiguous
  295 | Factor<P> RightMeet(const Factor<P>& a, const Factor<P>& b);
      | ^~~~~~
/usr/include/cbraid_interface.h:182:25: note: candidates are: ‘template<class P> class CBraid::Factor’
  182 | template<class P> class Factor {
      |                         ^~~~~~
/usr/include/cbraid_interface.h:182:25: note:                 ‘template<class P> class Factor’
  182 | template<class P> class Factor {
      |                         ^~~~~~
/usr/include/cbraid_interface.h:299:41: error: ‘template<class P> bool MakeLeftWeighted’ conflicts with a previous declaration
  299 | template<class P> bool MakeLeftWeighted(Factor<P>& a, Factor<P>& b);
      |                                         ^~~~~~
/usr/include/cbraid_implementation.h:733:13: note: previous declaration ‘bool MakeLeftWeighted(CBraid::Factor<P>&, CBraid::Factor<P>&)’
  733 | inline bool MakeLeftWeighted(Factor<P>&a, Factor<P>&b)
      |             ^~~~~~~~~~~~~~~~
/usr/include/cbraid_interface.h:299:41: error: reference to ‘Factor’ is ambiguous
  299 | template<class P> bool MakeLeftWeighted(Factor<P>& a, Factor<P>& b);
      |                                         ^~~~~~
/usr/include/cbraid_interface.h:182:25: note: candidates are: ‘template<class P> class CBraid::Factor’
  182 | template<class P> class Factor {
      |                         ^~~~~~
/usr/include/cbraid_interface.h:182:25: note:                 ‘template<class P> class Factor’
  182 | template<class P> class Factor {
      |                         ^~~~~~
/usr/include/cbraid_interface.h:299:49: error: expected primary-expression before ‘>’ token
  299 | template<class P> bool MakeLeftWeighted(Factor<P>& a, Factor<P>& b);
      |                                                 ^
/usr/include/cbraid_interface.h:299:52: error: ‘a’ was not declared in this scope
  299 | template<class P> bool MakeLeftWeighted(Factor<P>& a, Factor<P>& b);
      |                                                    ^
/usr/include/cbraid_interface.h:299:55: error: reference to ‘Factor’ is ambiguous
  299 | template<class P> bool MakeLeftWeighted(Factor<P>& a, Factor<P>& b);
      |                                                       ^~~~~~
/usr/include/cbraid_interface.h:182:25: note: candidates are: ‘template<class P> class CBraid::Factor’
  182 | template<class P> class Factor {
      |                         ^~~~~~
/usr/include/cbraid_interface.h:182:25: note:                 ‘template<class P> class Factor’
  182 | template<class P> class Factor {
      |                         ^~~~~~
/usr/include/cbraid_interface.h:299:63: error: expected primary-expression before ‘>’ token
  299 | template<class P> bool MakeLeftWeighted(Factor<P>& a, Factor<P>& b);
      |                                                               ^
/usr/include/cbraid_interface.h:299:66: error: ‘b’ was not declared in this scope
  299 | template<class P> bool MakeLeftWeighted(Factor<P>& a, Factor<P>& b);
      |                                                                  ^
/usr/include/cbraid_interface.h:300:42: error: ‘template<class P> bool MakeRightWeighted’ conflicts with a previous declaration
  300 | template<class P> bool MakeRightWeighted(Factor<P>& a, Factor<P>& b);
      |                                          ^~~~~~
/usr/include/cbraid_implementation.h:755:13: note: previous declaration ‘bool MakeRightWeighted(CBraid::Factor<P>&, CBraid::Factor<P>&)’
  755 | inline bool MakeRightWeighted(Factor<P>& a, Factor<P>& b)
      |             ^~~~~~~~~~~~~~~~~
/usr/include/cbraid_interface.h:300:42: error: reference to ‘Factor’ is ambiguous
  300 | template<class P> bool MakeRightWeighted(Factor<P>& a, Factor<P>& b);
      |                                          ^~~~~~
/usr/include/cbraid_interface.h:182:25: note: candidates are: ‘template<class P> class CBraid::Factor’
  182 | template<class P> class Factor {
      |                         ^~~~~~
/usr/include/cbraid_interface.h:182:25: note:                 ‘template<class P> class Factor’
  182 | template<class P> class Factor {
      |                         ^~~~~~
/usr/include/cbraid_interface.h:300:50: error: expected primary-expression before ‘>’ token
  300 | template<class P> bool MakeRightWeighted(Factor<P>& a, Factor<P>& b);
      |                                                  ^
/usr/include/cbraid_interface.h:300:53: error: ‘a’ was not declared in this scope
  300 | template<class P> bool MakeRightWeighted(Factor<P>& a, Factor<P>& b);
      |                                                     ^
/usr/include/cbraid_interface.h:300:56: error: reference to ‘Factor’ is ambiguous
  300 | template<class P> bool MakeRightWeighted(Factor<P>& a, Factor<P>& b);
      |                                                        ^~~~~~
/usr/include/cbraid_interface.h:182:25: note: candidates are: ‘template<class P> class CBraid::Factor’
  182 | template<class P> class Factor {
      |                         ^~~~~~
/usr/include/cbraid_interface.h:182:25: note:                 ‘template<class P> class Factor’
  182 | template<class P> class Factor {
      |                         ^~~~~~
/usr/include/cbraid_interface.h:300:64: error: expected primary-expression before ‘>’ token
  300 | template<class P> bool MakeRightWeighted(Factor<P>& a, Factor<P>& b);
      |                                                                ^
/usr/include/cbraid_interface.h:300:67: error: ‘b’ was not declared in this scope
  300 | template<class P> bool MakeRightWeighted(Factor<P>& a, Factor<P>& b);
      |                                                                   ^
/usr/include/cbraid_interface.h:304:50: error: reference to ‘Factor’ is ambiguous
  304 | std::ostream& operator<<(std::ostream& os, const Factor<P>& f);
      |                                                  ^~~~~~
/usr/include/cbraid_interface.h:182:25: note: candidates are: ‘template<class P> class CBraid::Factor’
  182 | template<class P> class Factor {
      |                         ^~~~~~
/usr/include/cbraid_interface.h:182:25: note:                 ‘template<class P> class Factor’
  182 | template<class P> class Factor {
      |                         ^~~~~~
/usr/include/cbraid_interface.h:304:56: error: expected ‘,’ or ‘...’ before ‘<’ token
  304 | std::ostream& operator<<(std::ostream& os, const Factor<P>& f);
      |                                                        ^
/usr/include/cbraid_interface.h:308:9: error: reference to ‘Factor’ is ambiguous
  308 | typedef Factor<ArtinPresentation> ArtinFactor;
      |         ^~~~~~
/usr/include/cbraid_interface.h:182:25: note: candidates are: ‘template<class P> class CBraid::Factor’
  182 | template<class P> class Factor {
      |                         ^~~~~~
/usr/include/cbraid_interface.h:182:25: note:                 ‘template<class P> class Factor’
  182 | template<class P> class Factor {
      |                         ^~~~~~
/usr/include/cbraid_interface.h:309:9: error: reference to ‘Factor’ is ambiguous
  309 | typedef Factor<BandPresentation> BandFactor;
      |         ^~~~~~
/usr/include/cbraid_interface.h:182:25: note: candidates are: ‘template<class P> class CBraid::Factor’
  182 | template<class P> class Factor {
      |                         ^~~~~~
/usr/include/cbraid_interface.h:182:25: note:                 ‘template<class P> class Factor’
  182 | template<class P> class Factor {
      |                         ^~~~~~
/usr/include/cbraid_interface.h:320:50: error: reference to ‘Braid’ is ambiguous
  320 | std::ostream& operator<<(std::ostream& os, const Braid<P>& b);
      |                                                  ^~~~~
/usr/include/cbraid_interface.h:316:25: note: candidates are: ‘template<class P> class CBraid::Braid’
  316 | template<class P> class Braid;
      |                         ^~~~~
/usr/include/cbraid_interface.h:316:25: note:                 ‘template<class P> class Braid’
  316 | template<class P> class Braid;
      |                         ^~~~~
/usr/include/cbraid_interface.h:320:55: error: expected ‘,’ or ‘...’ before ‘<’ token
  320 | std::ostream& operator<<(std::ostream& os, const Braid<P>& b);
      |                                                       ^
/usr/include/cbraid_interface.h:330:13: error: reference to ‘Factor’ is ambiguous
  330 |     typedef Factor<P> CanonicalFactor;
      |             ^~~~~~
/usr/include/cbraid_interface.h:182:25: note: candidates are: ‘template<class P> class CBraid::Factor’
  182 | template<class P> class Factor {
      |                         ^~~~~~
/usr/include/cbraid_interface.h:182:25: note:                 ‘template<class P> class Factor’
  182 | template<class P> class Factor {
      |                         ^~~~~~
/usr/include/cbraid_interface.h:351:25: error: template argument 1 is invalid
  351 |     std::list<Factor<P> > FactorList;
      |                         ^
/usr/include/cbraid_interface.h:351:25: error: template argument 2 is invalid
/usr/include/cbraid_interface.h:355:42: error: template argument 1 is invalid
  355 |     typedef typename std::list<Factor<P> >::iterator FactorItr;
      |                                          ^
/usr/include/cbraid_interface.h:355:42: error: template argument 2 is invalid
/usr/include/cbraid_interface.h:355:43: error: expected identifier before ‘::’ token
  355 |     typedef typename std::list<Factor<P> >::iterator FactorItr;
      |                                           ^~
/usr/include/cbraid_interface.h:355:43: error: typedef name may not be a nested-name-specifier
/usr/include/cbraid_interface.h:355:45: error: expected ‘;’ at end of member declaration
  355 |     typedef typename std::list<Factor<P> >::iterator FactorItr;
      |                                             ^~~~~~~~
      |                                                     ;
/usr/include/cbraid_interface.h:355:54: error: ‘FactorItr’ does not name a type; did you mean ‘Factor’?
  355 |     typedef typename std::list<Factor<P> >::iterator FactorItr;
      |                                                      ^~~~~~~~~
      |                                                      Factor
/usr/include/cbraid_interface.h:356:42: error: template argument 1 is invalid
  356 |     typedef typename std::list<Factor<P> >::const_iterator ConstFactorItr;
      |                                          ^
/usr/include/cbraid_interface.h:356:42: error: template argument 2 is invalid
/usr/include/cbraid_interface.h:356:43: error: expected identifier before ‘::’ token
  356 |     typedef typename std::list<Factor<P> >::const_iterator ConstFactorItr;
      |                                           ^~
/usr/include/cbraid_interface.h:356:43: error: typedef name may not be a nested-name-specifier
/usr/include/cbraid_interface.h:356:45: error: expected ‘;’ at end of member declaration
  356 |     typedef typename std::list<Factor<P> >::const_iterator ConstFactorItr;
      |                                             ^~~~~~~~~~~~~~
      |                                                           ;
/usr/include/cbraid_interface.h:356:60: error: ‘ConstFactorItr’ does not name a type
  356 |     typedef typename std::list<Factor<P> >::const_iterator ConstFactorItr;
      |                                                            ^~~~~~~~~~~~~~
/usr/include/cbraid_interface.h:357:42: error: template argument 1 is invalid
  357 |     typedef typename std::list<Factor<P> >::reverse_iterator RevFactorItr;
      |                                          ^
/usr/include/cbraid_interface.h:357:42: error: template argument 2 is invalid
/usr/include/cbraid_interface.h:357:43: error: expected identifier before ‘::’ token
  357 |     typedef typename std::list<Factor<P> >::reverse_iterator RevFactorItr;
      |                                           ^~
/usr/include/cbraid_interface.h:357:43: error: typedef name may not be a nested-name-specifier
/usr/include/cbraid_interface.h:357:45: error: expected ‘;’ at end of member declaration
  357 |     typedef typename std::list<Factor<P> >::reverse_iterator RevFactorItr;
      |                                             ^~~~~~~~~~~~~~~~
      |                                                             ;
/usr/include/cbraid_interface.h:357:62: error: ‘RevFactorItr’ does not name a type
  357 |     typedef typename std::list<Factor<P> >::reverse_iterator RevFactorItr;
      |                                                              ^~~~~~~~~~~~
/usr/include/cbraid_interface.h:358:42: error: template argument 1 is invalid
  358 |     typedef typename std::list<Factor<P> >::const_reverse_iterator ConstRevFactorItr;
      |                                          ^
/usr/include/cbraid_interface.h:358:42: error: template argument 2 is invalid
/usr/include/cbraid_interface.h:358:43: error: expected identifier before ‘::’ token
  358 |     typedef typename std::list<Factor<P> >::const_reverse_iterator ConstRevFactorItr;
      |                                           ^~
/usr/include/cbraid_interface.h:358:43: error: typedef name may not be a nested-name-specifier
/usr/include/cbraid_interface.h:358:45: error: expected ‘;’ at end of member declaration
  358 |     typedef typename std::list<Factor<P> >::const_reverse_iterator ConstRevFactorItr;
      |                                             ^~~~~~~~~~~~~~~~~~~~~~
      |                                                                   ;
/usr/include/cbraid_interface.h:358:68: error: ‘ConstRevFactorItr’ does not name a type
  358 |     typedef typename std::list<Factor<P> >::const_reverse_iterator ConstRevFactorItr;
      |                                                                    ^~~~~~~~~~~~~~~~~
/usr/include/cbraid_interface.h:368:17: error: reference to ‘Factor’ is ambiguous
  368 |     Braid(const Factor<P>& f);
      |                 ^~~~~~
/usr/include/cbraid_interface.h:182:25: note: candidates are: ‘template<class P> class CBraid::Factor’
  182 | template<class P> class Factor {
      |                         ^~~~~~
/usr/include/cbraid_interface.h:182:25: note:                 ‘template<class P> class Factor’
  182 | template<class P> class Factor {
      |                         ^~~~~~
/usr/include/cbraid_interface.h:368:23: error: expected ‘,’ or ‘...’ before ‘<’ token
  368 |     Braid(const Factor<P>& f);
      |                       ^
/usr/include/cbraid_interface.h:368:5: error: ‘Braid<P>::Braid(int)’ cannot be overloaded with ‘Braid<P>::Braid(sint16)’
  368 |     Braid(const Factor<P>& f);
      |     ^~~~~
/usr/include/cbraid_interface.h:362:5: note: previous declaration ‘Braid<P>::Braid(sint16)’
  362 |     Braid(sint16 n);
      |     ^~~~~
/usr/include/cbraid_interface.h:406:31: error: reference to ‘Factor’ is ambiguous
  406 |     Braid& LeftMultiply(const Factor<P>& f);
      |                               ^~~~~~
/usr/include/cbraid_interface.h:182:25: note: candidates are: ‘template<class P> class CBraid::Factor’
  182 | template<class P> class Factor {
      |                         ^~~~~~
/usr/include/cbraid_interface.h:182:25: note:                 ‘template<class P> class Factor’
  182 | template<class P> class Factor {
      |                         ^~~~~~
/usr/include/cbraid_interface.h:406:37: error: expected ‘,’ or ‘...’ before ‘<’ token
  406 |     Braid& LeftMultiply(const Factor<P>& f);
      |                                     ^
/usr/include/cbraid_interface.h:407:32: error: reference to ‘Factor’ is ambiguous
  407 |     Braid& RightMultiply(const Factor<P>& f);
      |                                ^~~~~~
/usr/include/cbraid_interface.h:182:25: note: candidates are: ‘template<class P> class CBraid::Factor’
  182 | template<class P> class Factor {
      |                         ^~~~~~
/usr/include/cbraid_interface.h:182:25: note:                 ‘template<class P> class Factor’
  182 | template<class P> class Factor {
      |                         ^~~~~~
/usr/include/cbraid_interface.h:407:38: error: expected ‘,’ or ‘...’ before ‘<’ token
  407 |     Braid& RightMultiply(const Factor<P>& f);
      |                                      ^
/usr/include/cbraid_interface.h:415:5: error: reference to ‘Factor’ is ambiguous
  415 |     Factor<P> GetPerm() const;
      |     ^~~~~~
/usr/include/cbraid_interface.h:182:25: note: candidates are: ‘template<class P> class CBraid::Factor’
  182 | template<class P> class Factor {
      |                         ^~~~~~
/usr/include/cbraid_interface.h:182:25: note:                 ‘template<class P> class Factor’
  182 | template<class P> class Factor {
      |                         ^~~~~~
/usr/include/cbraid_interface.h:433:31: error: reference to ‘Factor’ is ambiguous
  433 |     Braid ReduceLeftSub(const Factor<P>& f);
      |                               ^~~~~~
/usr/include/cbraid_interface.h:182:25: note: candidates are: ‘template<class P> class CBraid::Factor’
  182 | template<class P> class Factor {
      |                         ^~~~~~
/usr/include/cbraid_interface.h:182:25: note:                 ‘template<class P> class Factor’
  182 | template<class P> class Factor {
      |                         ^~~~~~
/usr/include/cbraid_interface.h:433:37: error: expected ‘,’ or ‘...’ before ‘<’ token
  433 |     Braid ReduceLeftSub(const Factor<P>& f);
      |                                     ^
/usr/include/cbraid_interface.h:434:32: error: reference to ‘Factor’ is ambiguous
  434 |     Braid ReduceRightSub(const Factor<P>& f);
      |                                ^~~~~~
/usr/include/cbraid_interface.h:182:25: note: candidates are: ‘template<class P> class CBraid::Factor’
  182 | template<class P> class Factor {
      |                         ^~~~~~
/usr/include/cbraid_interface.h:182:25: note:                 ‘template<class P> class Factor’
  182 | template<class P> class Factor {
      |                         ^~~~~~
/usr/include/cbraid_interface.h:434:38: error: expected ‘,’ or ‘...’ before ‘<’ token
  434 |     Braid ReduceRightSub(const Factor<P>& f);
      |                                      ^
/usr/include/cbraid_interface.h:450:9: error: reference to ‘Braid’ is ambiguous
  450 | typedef Braid<ArtinPresentation> ArtinBraid;
      |         ^~~~~
/usr/include/cbraid_interface.h:316:25: note: candidates are: ‘template<class P> class CBraid::Braid’
  316 | template<class P> class Braid;
      |                         ^~~~~
/usr/include/cbraid_interface.h:316:25: note:                 ‘template<class P> class Braid’
  316 | template<class P> class Braid;
      |                         ^~~~~
/usr/include/cbraid_interface.h:451:9: error: reference to ‘Braid’ is ambiguous
  451 | typedef Braid<BandPresentation> BandBraid;
      |         ^~~~~
/usr/include/cbraid_interface.h:316:25: note: candidates are: ‘template<class P> class CBraid::Braid’
  316 | template<class P> class Braid;
      |                         ^~~~~
/usr/include/cbraid_interface.h:316:25: note:                 ‘template<class P> class Braid’
  316 | template<class P> class Braid;
      |                         ^~~~~
/tmp/Q3kwDXzl9C/dump1.h:24:3: error: reference to ‘ArtinPresentation’ is ambiguous
   24 |   ArtinPresentation* tmp_add_class_0;
      |   ^~~~~~~~~~~~~~~~~
/usr/include/cbraid_interface.h:105:7: note: candidates are: ‘class CBraid::ArtinPresentation’
  105 | class ArtinPresentation {
      |       ^~~~~~~~~~~~~~~~~
/usr/include/cbraid_interface.h:105:7: note:                 ‘class ArtinPresentation’
  105 | class ArtinPresentation {
      |       ^~~~~~~~~~~~~~~~~
/tmp/Q3kwDXzl9C/dump1.h:25:3: error: reference to ‘BandPresentation’ is ambiguous
   25 |   BandPresentation* tmp_add_class_1;
      |   ^~~~~~~~~~~~~~~~
/usr/include/cbraid_interface.h:144:7: note: candidates are: ‘class CBraid::BandPresentation’
  144 | class BandPresentation {
      |       ^~~~~~~~~~~~~~~~
/usr/include/cbraid_interface.h:144:7: note:                 ‘class BandPresentation’
  144 | class BandPresentation {
      |       ^~~~~~~~~~~~~~~~
/tmp/Q3kwDXzl9C/dump1.h:26:3: error: reference to ‘NegativeBraidError’ is ambiguous
   26 |   NegativeBraidError* tmp_add_class_2;
      |   ^~~~~~~~~~~~~~~~~~
/usr/include/cbraid_interface.h:98:8: note: candidates are: ‘struct CBraid::NegativeBraidError’
   98 | struct NegativeBraidError {};
      |        ^~~~~~~~~~~~~~~~~~
/usr/include/cbraid_interface.h:98:8: note:                 ‘struct NegativeBraidError’
   98 | struct NegativeBraidError {};
      |        ^~~~~~~~~~~~~~~~~~
/tmp/Q3kwDXzl9C/dump1.h:27:3: error: reference to ‘OddIndexError’ is ambiguous
   27 |   OddIndexError* tmp_add_class_3;
      |   ^~~~~~~~~~~~~
/usr/include/cbraid_interface.h:97:8: note: candidates are: ‘struct CBraid::OddIndexError’
   97 | struct OddIndexError {};
      |        ^~~~~~~~~~~~~
/usr/include/cbraid_interface.h:97:8: note:                 ‘struct OddIndexError’
   97 | struct OddIndexError {};
      |        ^~~~~~~~~~~~~

