public StringBuffer printExpression(int indent, StringBuffer output) {
   switch (this.kind) {
     case K_CLASS:
       output.append("<CompleteOnClass:"); // $NON-NLS-1$
       break;
     case K_INTERFACE:
       output.append("<CompleteOnInterface:"); // $NON-NLS-1$
       break;
     case K_EXCEPTION:
       output.append("<CompleteOnException:"); // $NON-NLS-1$
       break;
     default:
       output.append("<CompleteOnType:"); // $NON-NLS-1$
       break;
   }
   for (int i = 0; i < this.tokens.length; i++) {
     output.append(this.tokens[i]);
     output.append('.');
   }
   output.append(this.completionIdentifier).append('>');
   return output;
 }
  public StringBuffer printExpression(int indent, StringBuffer output) {

    output.append("<CompleteOnMessageSend:"); // $NON-NLS-1$
    if (!this.receiver.isImplicitThis()) this.receiver.printExpression(0, output).append('.');
    if (this.typeArguments != null) {
      output.append('<');
      int max = this.typeArguments.length - 1;
      for (int j = 0; j < max; j++) {
        this.typeArguments[j].print(0, output);
        output.append(", "); // $NON-NLS-1$
      }
      this.typeArguments[max].print(0, output);
      output.append('>');
    }
    output.append(this.selector).append('(');
    if (this.arguments != null) {
      for (int i = 0; i < this.arguments.length; i++) {
        if (i > 0) output.append(", "); // $NON-NLS-1$
        this.arguments[i].printExpression(0, output);
      }
    }
    return output.append(")>"); // $NON-NLS-1$
  }