/** INTERNAL: Print java for project class generation */
 @Override
 public void printJava(ExpressionJavaPrinter printer) {
   this.typeExpressionBase.printJava(printer);
   if (castClass != null) {
     printer.printString(".treat(" + castClass.getName() + ".class)");
   }
 }
 /** INTERNAL: Print java for project class generation */
 public void printJava(ExpressionJavaPrinter printer) {
   getBaseExpression().printJava(printer);
   if (!shouldUseOuterJoin()) {
     if (!shouldQueryToManyRelationship()) {
       printer.printString(".get(");
     } else {
       printer.printString(".anyOf(");
     }
   } else {
     if (!shouldQueryToManyRelationship()) {
       printer.printString(".getAllowingNull(");
     } else {
       printer.printString(".anyOfAllowingNone(");
     }
   }
   printer.printString("\"" + getName() + "\")");
 }