	@Test
	public void testReqIFIterator_ShouldFilterOutline() {

		final TestSpecification testSpecification = new TestSpecification();
		final List<TestSpecObject> testSpecObjects = new ArrayList<TestSpecObject>();

		ReqIF10Iterator iterator = new ReqIF10Iterator();
		final EList<Specification> specs = reqif.getCoreContent()
				.getSpecifications();
		iterator.iterateRecursivelyThrough(specs, new SpecificationCallback() {

			@Override
			public void call(SpecificationDTO specificationDto) {
				testSpecification.setLongName(specificationDto.getTypeName());
				testSpecification.setTitle(specificationDto.getAttributeValue(0));
			}
		}, new SpecObjectCallback() {

			public void call(final SpecObjectDTO specObject, final int depth) {
				if (specObject.getTypeName().equals("HeadlineType")) {
					TestSpecObject testSpecObject = new TestSpecObject();
					testSpecObject.setType(specObject.getTypeName());
					for (AttributeValue av : specObject.getSpecObject()
							.getValues()) {
						AttributeDefinition ad = ReqIF10Util
								.getAttributeDefinition(av);
						TestAttribute attribute = new TestAttribute();
						attribute.setName(ad.getLongName());
						attribute.setValue(AttributeValueConverter
								.getDefaultValue(av));
						attribute.setXhtml(AttributeValueConverter
								.hasXhtmlContent(av));
						testSpecObject.getAttributes().add(attribute);
					}
					testSpecObjects.add(testSpecObject);
				}
			}
		});

		assertEquals("Spec", testSpecification.getLongName());
		assertEquals("Test-Specification", testSpecification.getTitle());

		assertEquals(3, testSpecObjects.size());
		this.assertSpecObjectAttributes(testSpecObjects.get(0), "ID",
				"Chapter 1");
		this.assertSpecObjectAttributes(testSpecObjects.get(1), "ID",
				"Chapter 2");
		this.assertSpecObjectAttributes(testSpecObjects.get(2), "ID",
				"Section 2.2");
	}