if (fLeaveUnconstrainedRaw) {
if (leaveUnconstraindRaw) {
	private Type[] getTypeArguments(Type baseType, ArrayList typeArgumentCvs, CompilationUnitRewrite rewrite) {		if (typeArgumentCvs.size() == 0)			return null;				Type[] typeArguments= new Type[typeArgumentCvs.size()];		for (int i= 0; i < typeArgumentCvs.size(); i++) {			CollectionElementVariable2 elementCv= (CollectionElementVariable2) typeArgumentCvs.get(i);			Type typeArgument;			TType chosenType= InferTypeArgumentsConstraintsSolver.getChosenType(elementCv);			if (chosenType != null) {				if (chosenType.isWildcardType() && ! unboundedWildcardAllowed(baseType))					return null; // can't e.g. write "new ArrayList<?>()".				if (chosenType.isParameterizedType()) // workaround for bug 99124					chosenType= chosenType.getTypeDeclaration();				BindingKey bindingKey= new BindingKey(chosenType.getBindingKey());				typeArgument= rewrite.getImportRewrite().addImportFromSignature(bindingKey.internalToSignature(), rewrite.getAST());				ArrayList nestedTypeArgumentCvs= getTypeArgumentCvs(elementCv);				Type[] nestedTypeArguments= getTypeArguments(typeArgument, nestedTypeArgumentCvs, rewrite); //recursion				if (nestedTypeArguments != null) {					ParameterizedType parameterizedType= rewrite.getAST().newParameterizedType(typeArgument);					for (int j= 0; j < nestedTypeArguments.length; j++)						parameterizedType.typeArguments().add(nestedTypeArguments[j]);					typeArgument= parameterizedType;				}			} else { // couldn't infer an element type (no constraints)				if (fLeaveUnconstrainedRaw) {					// every guess could be wrong => leave the whole thing raw					return null;				} else {					if (unboundedWildcardAllowed(baseType)) {						typeArgument= rewrite.getAST().newWildcardType();					} else {						String object= rewrite.getImportRewrite().addImport("java.lang.Object"); //$NON-NLS-1$						typeArgument= (Type) rewrite.getASTRewrite().createStringPlaceholder(object, ASTNode.SIMPLE_TYPE);					}				}//				ASTNode baseTypeParent= baseType.getParent();//				if (baseTypeParent instanceof ClassInstanceCreation) {//					//No ? allowed. Take java.lang.Object.//					typeArgument= rewrite.getAST().newSimpleType(rewrite.getAST().newName(rewrite.getImportRewrite().addImport("java.lang.Object"))); //$NON-NLS-1$//				} else if (baseTypeParent instanceof ArrayCreation || baseTypeParent instanceof InstanceofExpression) {//					//Only ? allowed.//					typeArgument= rewrite.getAST().newWildcardType();//				} else {//					//E.g. field type: can put anything. Choosing ? in order to be most constraining.//					typeArgument= rewrite.getAST().newWildcardType();//				}			}			typeArguments[i]= typeArgument;		}		return typeArguments;	}