<s> package org . eclipse . jdt . internal . codeassist . complete ; import org . eclipse . jdt . internal . compiler . ast . * ; import org . eclipse . jdt . internal . compiler . lookup . * ; public class CompletionOnMessageSend extends MessageSend { public TypeBinding resolveType ( BlockScope scope ) { if ( this . arguments != null ) { int argsLength = this . arguments . length ; for ( int a = argsLength ; -- a >= 0 ; ) this . arguments [ a ] . resolveType ( scope ) ; } if ( this . receiver . isImplicitThis ( ) ) throw new CompletionNodeFound ( this , null , scope ) ; this . actualReceiverType = this . receiver . resolveType ( scope ) ; if ( this . actualReceiverType == null || this . actualReceiverType . isBaseType ( ) ) throw new CompletionNodeFound ( ) ; if ( this . actualReceiverType . isArrayType ( ) ) this . actualReceiverType = scope . getJavaLangObject ( ) ; throw new CompletionNodeFound ( this , this . actualReceiverType , scope ) ; } public StringBuffer printExpression ( int indent , StringBuffer output ) { output . append ( "" ) ; 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 ( ", " ) ; } 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 ( ", " ) ; this . arguments [ i ] . printExpression ( 0 , output ) ; } } return output . append ( ")>" ) ; } } </s>