//////////////////////////// third part: variable part
 private ISkolemPart generatePartForVariable(
     SkolemFunctionGenerator generator,
     Map<VariableJoinCondition, ISkolemPart> partsForJoins,
     MappingTask mappingTask) {
   if (generator.getJoinConditions().isEmpty()) {
     return NullSkolemPart.getInstance();
   }
   ISkolemPart append =
       new AppendSkolemPart(mappingTask.getConfig().useSortInSkolems(), "", "", ", ");
   for (VariableJoinCondition variableJoinCondition : generator.getJoinConditions()) {
     append.addChild(partsForJoins.get(variableJoinCondition));
   }
   return append;
 }
 /////////////////////////////////   LOCAL NODE   /////////////////////////////////////////////////
 private ISkolemPart generateLocalSkolemFunction(
     SkolemFunctionGenerator generator, MappingTask mappingTask) {
   StringBuilder functionName = new StringBuilder();
   functionName.append("SK_");
   functionName.append("TGD").append(compactHashCode(generator.getTgd().hashCode())).append("_");
   functionName
       .append("N")
       .append(compactHashCode(generator.getJoinConditions().toString().hashCode()));
   if (generator.getPosition() != null) {
     functionName.append("_Pos=").append(generator.getPosition());
   }
   return generateAppendWithFunctionName(functionName.toString(), generator, mappingTask);
 }