code: private void constructRandomVariableUniqueVariable(RandomVariable randomVariable, boolean isConstant, ArrayList<RandomVariableUniqueVariable> parentVariables, OperatorType parentOperatorType){
  		/*
  		 * by calling the method in the factory it will produce a new object of RandomVariable and
  		 * the new item will be stored in its factory internal array list
  		 */
  		RandomVariable normalrandomvariable = factory.createRandomVariable(randomVariable, isConstant, parentVariables, parentOperatorType);
  
  		/* by construction this object can be up-casted to RandomVariableUniqueVariable */
  		RandomVariableUniqueVariable newrandomvariableuniquevariable = (RandomVariableUniqueVariable)normalrandomvariable;
  
  		/* now we have access to the internal variables of the new RandomVarialeUniqueVariable */
  		variableID = newrandomvariableuniquevariable.getVariableID();
  		this.isConstant = newrandomvariableuniquevariable.isConstant();
  		parentsVariables = newrandomvariableuniquevariable.getParentVariables();
  		this.parentOperatorType = newrandomvariableuniquevariable.getParentOperatorType();
  	}
docs: Function calls {@link RandomVariableUniqueVariableFactory} to use the given {@link RandomVariableFromDoubleArray}
  and save it to its internal ArrayList. The index of the object will be give to the new {@link RandomVariableUniqueVariable}
  object.
  
  @param randomVariable
  @param isConstant