code: public TableOperation create(
  			TableOperation left,
  			TableOperation right,
  			JoinType joinType,
  			Expression condition,
  			boolean correlated) {
  		verifyConditionType(condition);
  		validateNamesAmbiguity(left, right);
  		validateCondition(right, joinType, condition, correlated);
  		return new JoinTableOperation(left, right, joinType, condition, correlated);
  	}
docs: Creates a valid {@link JoinTableOperation} operation.
  
  <p>It performs validations such as:
  <ul>
  <li>condition returns boolean</li>
  <li>the condition is either always true or contains equi join</li>
  <li>left and right side of the join do not contain ambiguous column names</li>
  <li>that correlated join is an INNER join</li>
  </ul>
  
  @param left left side of the relational operation
  @param right right side of the relational operation
  @param joinType what sort of join to create
  @param condition join condition to apply
  @param correlated if the join should be a correlated join
  @return valid join operation