public ArbitraryLengthPathNode(final TermNode left,final TermNode right,final VarNode tVarLeft,final VarNode tVarRight,final long lowerBound,final long upperBound){
  this(new BOp[]{new JoinGroupNode()},NV.asMap(new NV(Annotations.LEFT_TERM,left),new NV(Annotations.RIGHT_TERM,right),new NV(Annotations.TRANSITIVITY_VAR_LEFT,tVarLeft),new NV(Annotations.TRANSITIVITY_VAR_RIGHT,tVarRight),new NV(Annotations.DROP_VARS,new ArrayList<VarNode>()),new NV(Annotations.LOWER_BOUND,lowerBound),new NV(Annotations.UPPER_BOUND,upperBound)));
  final Set<VarNode> dropVars=new LinkedHashSet<>();
  dropVars.add(tVarLeft);
  dropVars.add(tVarRight);
  setProperty(Annotations.DROP_VARS,dropVars);
}

public ArbitraryLengthPathNode ( final TermNode left , final TermNode right , final VarNode tVarLeft , final VarNode tVarRight , final long lowerBound , final long upperBound ) { this ( new BOp [ ] { new JoinGroupNode ( ) } , NV . asMap ( new NV ( Annotations . LEFT_TERM , left ) , new NV ( Annotations . RIGHT_TERM , right ) , new NV ( Annotations . TRANSITIVITY_VAR_LEFT , tVarLeft ) , new NV ( Annotations . TRANSITIVITY_VAR_RIGHT , tVarRight ) , new NV ( Annotations . DROP_VARS , new ArrayList < VarNode > ( ) ) , new NV ( Annotations . LOWER_BOUND , lowerBound ) , new NV ( Annotations . UPPER_BOUND , upperBound ) ) ) ; final Set < VarNode > dropVars = new LinkedHashSet < > ( ) ; dropVars . add ( tVarLeft ) ; dropVars . add ( tVarRight ) ; setProperty ( Annotations . DROP_VARS , dropVars ) ; }
fully construct an arbitrary length path node with all required annotations .
