if (!typeParameters.isEmpty() && isSourceLevelGreaterOrEqual(1, 5)) {
source.append('<');
Iterator<TypeParameter> iter = typeParameters.iterator();
TypeParameter typeParameter = iter.next();
source.append(typeParameter.getName().getIdentifier());
List<Type> typeBounds = typeParameter.typeBounds();
if (!typeBounds.isEmpty()) {
source.append(" extends "); //$NON-NLS-1$
Iterator<Type> iter2 = typeBounds.iterator();
source.append(getTypeName(iter2.next()));
while (iter2.hasNext()) {