if (superConstructor != null) {
String bodyStatement= ""; if (!omitSuper) {
	public static MethodDeclaration createConstructorStub(ICompilationUnit unit, ASTRewrite rewrite, ImportRewrite imports, ITypeBinding typeBinding, AST ast, IMethodBinding superConstructor, IVariableBinding[] variableBindings, int modifiers, CodeGenerationSettings settings) throws CoreException {		MethodDeclaration decl= ast.newMethodDeclaration();		decl.modifiers().addAll(ASTNodeFactory.newModifiers(ast, modifiers & ~Modifier.ABSTRACT & ~Modifier.NATIVE));		decl.setName(ast.newSimpleName(typeBinding.getName()));		decl.setConstructor(true);		List parameters= decl.parameters();		if (superConstructor != null) {			ITypeBinding[] typeParams= superConstructor.getTypeParameters();			List typeParameters= decl.typeParameters();			for (int i= 0; i < typeParams.length; i++) {				ITypeBinding curr= typeParams[i];				TypeParameter newTypeParam= ast.newTypeParameter();				newTypeParam.setName(ast.newSimpleName(curr.getName()));				ITypeBinding[] typeBounds= curr.getTypeBounds();				if (typeBounds.length != 1 || !"java.lang.Object".equals(typeBounds[0].getQualifiedName())) {//$NON-NLS-1$					List newTypeBounds= newTypeParam.typeBounds();					for (int k= 0; k < typeBounds.length; k++) {						newTypeBounds.add(imports.addImport(typeBounds[k], ast));					}				}				typeParameters.add(newTypeParam);			}			createParameters(unit, imports, ast, superConstructor, decl);			List thrownExceptions= decl.thrownExceptions();			ITypeBinding[] excTypes= superConstructor.getExceptionTypes();			for (int i= 0; i < excTypes.length; i++) {				String excTypeName= imports.addImport(excTypes[i]);				thrownExceptions.add(ASTNodeFactory.newName(ast, excTypeName));			}		}		Block body= ast.newBlock();		decl.setBody(body);		String delimiter= StubUtility.getLineDelimiterUsed(unit);		if (superConstructor != null) {			SuperConstructorInvocation invocation= ast.newSuperConstructorInvocation();			SingleVariableDeclaration varDecl= null;			for (Iterator iterator= parameters.iterator(); iterator.hasNext();) {				varDecl= (SingleVariableDeclaration) iterator.next();				invocation.arguments().add(ast.newSimpleName(varDecl.getName().getIdentifier()));			}			body.statements().add(invocation);		}		List prohibited= new ArrayList();		for (final Iterator iterator= parameters.iterator(); iterator.hasNext();)			prohibited.add(((SingleVariableDeclaration) iterator.next()).getName().getIdentifier());		String param= null;		List list= new ArrayList(prohibited);		String[] excluded= null;		for (int i= 0; i < variableBindings.length; i++) {			SingleVariableDeclaration var= ast.newSingleVariableDeclaration();			var.setType(imports.addImport(variableBindings[i].getType(), ast));			if (Modifier.isFinal(variableBindings[i].getModifiers()))				var.modifiers().add(ast.newModifier(ModifierKeyword.FINAL_KEYWORD));			excluded= new String[list.size()];			list.toArray(excluded);			param= getParameterName(unit, variableBindings[i], excluded);			list.add(param);			var.setName(ast.newSimpleName(param));			parameters.add(var);		}		list= new ArrayList(prohibited);		for (int i= 0; i < variableBindings.length; i++) {			excluded= new String[list.size()];			list.toArray(excluded);			final String paramName= getParameterName(unit, variableBindings[i], excluded);			list.add(paramName);			final String fieldName= variableBindings[i].getName();			Expression expression= null;			if (paramName.equals(fieldName) || settings.useKeywordThis) {				FieldAccess access= ast.newFieldAccess();				access.setExpression(ast.newThisExpression());				access.setName(ast.newSimpleName(fieldName));				expression= access;			} else				expression= ast.newSimpleName(fieldName);			Assignment assignment= ast.newAssignment();			assignment.setLeftHandSide(expression);			assignment.setRightHandSide(ast.newSimpleName(paramName));			assignment.setOperator(Assignment.Operator.ASSIGN);			body.statements().add(ast.newExpressionStatement(assignment));		}				if (settings != null && settings.createComments) {			String string= CodeGeneration.getMethodComment(unit, typeBinding.getName(), decl, superConstructor, delimiter);			if (string != null) {				Javadoc javadoc= (Javadoc) rewrite.createStringPlaceholder(string, ASTNode.JAVADOC);				decl.setJavadoc(javadoc);			}		}		return decl;	}