code: public static RAExpression joinUsing(RAExpression re1, RAExpression re2,
                                           ImmutableSet<QuotedID> using, TermFactory termFactory) throws IllegalJoinException {
  
          RAExpressionAttributes attributes =
                  RAExpressionAttributes.joinUsing(re1.attributes, re2.attributes, using);
  
          return new RAExpression(union(re1.dataAtoms, re2.dataAtoms),
                  union(re1.filterAtoms, re2.filterAtoms,
                          getJoinOnFilter(re1.attributes, re2.attributes, using, termFactory)),
                  attributes, termFactory);
      }
docs: JOIN USING
  
  @param re1 a {@link RAExpression}
  @param re2 a {@link RAExpression}
  @param using a {@link ImmutableSet}<{@link QuotedID}>
  @return a {@link RAExpression}
  @throws IllegalJoinException if the same alias occurs in both arguments
  or one of the `using' attributes is ambiguous or absent