code: KJoin newJoin(final KJoin join) {
  		return new KJoin() {
  
  			@Override
  			public boolean isEnabled(KProcess process) {
  				return !process.getElementsInError().contains(KWhileLoop.this) && predicate.verify(process)
  						&& (started.contains(process) || join
  								.isEnabled(process));
  			}
  
  			@Override
  			public void join(KCall call) {
  				if (!started.contains(call.getProcess())) {
  					join.join(call);
  					started.produce(call.getProcess());
  				}
  				diff.produce(call.getProcess());
  				KWhileLoop.this.iterating(call);
  				
  			}
  
  			@Override
  			public KElement getProcedure() {
  				return KWhileLoop.this;
  			}
  		};
  	}
docs: Return a {@link KAbstractJoin} that encapsulated the join passed as
  parameter.
  
  @param join
  @return