private void rewriteTypeVariable(TypeVariable2 typeCv, CompilationUnitRewrite rewrite) {
private static boolean rewriteTypeVariable(TypeVariable2 typeCv, CompilationUnitRewrite rewrite, InferTypeArgumentsTCModel tCModel, boolean leaveUnconstraindRaw) {
	private void rewriteTypeVariable(TypeVariable2 typeCv, CompilationUnitRewrite rewrite) {		ASTNode node= typeCv.getRange().getNode(rewrite.getRoot());		if (node instanceof Name && node.getParent() instanceof Type) {			Type originalType= (Type) node.getParent();						// Must rewrite all type arguments in one batch. Do the rewrite when the first one is encountered; skip the others.			Object rewritten= originalType.getProperty(REWRITTEN); 			if (rewritten == REWRITTEN)				return;			originalType.setProperty(REWRITTEN, REWRITTEN);						ArrayList typeArgumentCvs= getTypeArgumentCvs(typeCv);			Type[] typeArguments= getTypeArguments(originalType, typeArgumentCvs, rewrite);			if (typeArguments == null)				return;						Type movingType= (Type) rewrite.getASTRewrite().createMoveTarget(originalType);			ParameterizedType newType= rewrite.getAST().newParameterizedType(movingType);						for (int i= 0; i < typeArguments.length; i++)				newType.typeArguments().add(typeArguments[i]);						rewrite.getASTRewrite().replace(originalType, newType, rewrite.createGroupDescription(RefactoringCoreMessages.InferTypeArgumentsRefactoring_addTypeArguments)); 		} //TODO: other node types?	}