| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
1056 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
968 | 
		final Collection<Type> expectedSupertypes = new ArrayList<>();
		expectedSupertypes.add(((ProductType) attr1Type).getAbstractPrototype());
		
		this.checkSupertypes(expectedSupertypes, supertypesAttr1);
		
		assertEquals(1, clssA.getSuperTypes().size());
		assertEquals(1, clssB.getSuperTypes().size());
		assertEquals(1, model.getString().getSuperTypes().size());
		assertEquals(1, model.getInteger().getSuperTypes().size());
	}
	
	/**
	 * Group:group=[A:class={Attribute1:{(name:String, alter: Integer, b:B, clss:Class),String};}; B:class=A+{};
	 * C:class=B+{}; D:class=B+{}; Class:class={};]; .
	 * 
	 * @throws Exception
	 *             Exception
	 */
	@Test
	public void testProductHierarchie3() throws Exception {
		final SimpleScannerInput input =
				new SimpleScannerInput(
						"Group:group=[A:class={Attribute1:{(name:String, alter: Integer, b:B, clss:Class),String};}; B:class=A+{}; C:class=B+{}; "
								+ "D:class=B+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final Iterator<GroupElement> iterator = model.getGroups().iterator().next().getGroupElements().iterator();
		final ClassType clssA = (ClassType) iterator.next();
		final ClassType clssB = (ClassType) iterator.next();
		iterator.next();
		iterator.next();
		final ClassType clss = (ClassType) iterator.next();
		
		final Iterator<Attribute> attrIterator = clssA.getAttributes().iterator();
		
		final Attribute attr1 = attrIterator.next();
		
		// Summe
		assertEquals(0, attr1.getAttrType().getSuperTypes().size());
		final Type attr1Type = attr1.getAttrType().getPrototype();
		final Collection<Type> supertypesAttr1 = attr1Type.getSuperTypes();
		
		Collection<Type> expectedSupertypes = new ArrayList<>();
		expectedSupertypes.add(model.getAnything().getPrototype());
		
		this.checkSupertypes(expectedSupertypes, supertypesAttr1);
		
		// Product
		final SumType sum = (SumType) attr1Type;
		final Iterator<Type> iterator2 = sum.getElements().iterator();
		iterator2.next();
		final ProductType productPrototyp = (ProductType) iterator2.next();
		
		expectedSupertypes = new ArrayList<>();
		final ProductType abstrProductCreated = ProductType.create(DummyToken.getInstance(), DummyToken.getInstance());
		ByReferenceState state = ByReferenceState.create(model.getString(), model.getString().getTypeName());
		TypeProxy typeProxy = TypeProxy.create(DummyToken.getInstance(), state);
		abstrProductCreated.addElement(ProductElementType.create("p$1", typeProxy, DummyToken.getInstance()));
		state = ByReferenceState.create(model.getInteger(), model.getInteger().getTypeName());
		typeProxy = TypeProxy.create(DummyToken.getInstance(), state);
		abstrProductCreated.addElement(ProductElementType.create("p$2", typeProxy, DummyToken.getInstance()));
		state = ByReferenceState.create(clssB, clssB.getName());
		typeProxy = TypeProxy.create(DummyToken.getInstance(), state);
		abstrProductCreated.addElement(ProductElementType.create("p$3", typeProxy, DummyToken.getInstance()));
		final ByReferenceState state2 = ByReferenceState.create(clss, clss.getName());
		final TypeProxy typeProxy2 = TypeProxy.create(DummyToken.getInstance(), state2);
		abstrProductCreated.addElement(ProductElementType.create("p$4", typeProxy2, DummyToken.getInstance()));
		expectedSupertypes.add(abstrProductCreated);
		expectedSupertypes.add(sum);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
1132 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
1046 | 
		assertEquals(1, model.getString().getSuperTypes().size());
		assertEquals(1, model.getInteger().getSuperTypes().size());
	}
	
	/**
	 * Group:group=[A:class={Attribute1:{(name:String, alter: Integer, b:B, clss:Class),(p1:String, p2: Integer, p3:B,
	 * p4:Class)};}; B:class=A+{}; C:class=B+{}; D:class=B+{}; Class:class={};]; .
	 * 
	 * @throws Exception
	 *             Exception
	 */
	@Test
	public void testProductHierarchie4() throws Exception {
		final SimpleScannerInput input =
				new SimpleScannerInput(
						"Group:group=[A:class={Attribute1:{(name:String, alter: Integer, b:B, clss:Class),(p1:String, p2: Integer, p3:B, p4:Class)};}; B:class=A+{}; C:class=B+{}; "
								+ "D:class=B+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final Iterator<GroupElement> iterator = model.getGroups().iterator().next().getGroupElements().iterator();
		final ClassType clssA = (ClassType) iterator.next();
		final ClassType clssB = (ClassType) iterator.next();
		iterator.next();
		iterator.next();
		final ClassType clss = (ClassType) iterator.next();
		
		final Iterator<Attribute> attrIterator = clssA.getAttributes().iterator();
		
		final Attribute attr1 = attrIterator.next();
		
		// Summe
		assertEquals(0, attr1.getAttrType().getSuperTypes().size());
		final Type attr1Type = attr1.getAttrType().getPrototype();
		final Collection<Type> supertypesAttr1 = attr1Type.getSuperTypes();
		
		Collection<Type> expectedSupertypes = new ArrayList<>();
		expectedSupertypes.add(model.getAnything().getPrototype());
		
		this.checkSupertypes(expectedSupertypes, supertypesAttr1);
		
		// Produkte
		final SumType sum = (SumType) attr1Type;
		final Iterator<Type> iterator2 = sum.getElements().iterator();
		final ProductType productPrototyp = (ProductType) iterator2.next();
		final ProductType productPrototyp2 = (ProductType) iterator2.next();
		
		expectedSupertypes = new ArrayList<>();
		final ProductType abstrProductCreated = ProductType.create(DummyToken.getInstance(), DummyToken.getInstance());
		ByReferenceState state = ByReferenceState.create(model.getString(), model.getString().getTypeName());
		TypeProxy typeProxy = TypeProxy.create(DummyToken.getInstance(), state);
		abstrProductCreated.addElement(ProductElementType.create("p$1", typeProxy, DummyToken.getInstance()));
		state = ByReferenceState.create(model.getInteger(), model.getInteger().getTypeName());
		typeProxy = TypeProxy.create(DummyToken.getInstance(), state);
		abstrProductCreated.addElement(ProductElementType.create("p$2", typeProxy, DummyToken.getInstance()));
		state = ByReferenceState.create(clssB, clssB.getName());
		typeProxy = TypeProxy.create(DummyToken.getInstance(), state);
		abstrProductCreated.addElement(ProductElementType.create("p$3", typeProxy, DummyToken.getInstance()));
		final ByReferenceState state2 = ByReferenceState.create(clss, clss.getName());
		final TypeProxy typeProxy2 = TypeProxy.create(DummyToken.getInstance(), state2);
		abstrProductCreated.addElement(ProductElementType.create("p$4", typeProxy2, DummyToken.getInstance()));
		expectedSupertypes.add(abstrProductCreated);
		expectedSupertypes.add(sum);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestTypeReferencer.java | 
240 | 
| de/fhdw/wtf/walker/tasks/test/TestTypeReferencer.java | 
415 | 
						+ "Class1:class = Group2>Group1>Class1 + {class21:Group2>Group1>Class1;};];];];");
		final IdentifierToken group1IdentifierToken =
				IdentifierToken.create("Group1", Position.create("", 0 + 1, 0 + 1, 0));
		final Model model = Model.create(group1IdentifierToken, null);
		
		final Name group1Name = UnqualifiedName.create(group1IdentifierToken);
		final Collection<GroupElement> group1Elements = new Vector<>();
		final Group group1 = Group.create(group1Name, group1Elements, group1IdentifierToken, null);
		model.addGroup(group1);
		final IdentifierToken group12IdentifierToken =
				IdentifierToken.create("Group2", Position.create("", 0 + 1, 0 + 1, 0));
		final Name group12Name = group1Name.addName(group12IdentifierToken);
		final Collection<GroupElement> group12Elements = new Vector<>();
		final Group group12 = Group.create(group12Name, group12Elements, group12IdentifierToken, null);
		group1Elements.add(group12);
		final IdentifierToken class121IdentifierToken =
				IdentifierToken.create("Class1", Position.create("", 0 + 1, 0 + 1, 0));
		final Name class121Name = group12Name.addName(class121IdentifierToken);
		final Collection<ClassModifier> class121Modifiers = new Vector<>();
		final Collection<Attribute> class121Attributes = new Vector<>();
		final List<Type> class121SuperTypes = new Vector<>();
		final Collection<Operation> class121Operations = new Vector<>();
		final ClassType class121 =
				RegularClassType.create(
						class121Name,
						class121Modifiers,
						class121Attributes,
						class121SuperTypes,
						class121Operations,
						new Vector<Constructor>(),
						class121IdentifierToken,
						
						new Vector<ClassType>(),
						null);
		group12Elements.add(class121);
		final IdentifierToken group2IdentifierToken =
				IdentifierToken.create("Group2", Position.create("", 0 + 1, 0 + 1, 0));
		final Name group2Name = UnqualifiedName.create(group2IdentifierToken);
		final Collection<GroupElement> group2Elements = new Vector<>();
		final Group group2 = Group.create(group2Name, group2Elements, group2IdentifierToken, null);
		model.addGroup(group2);
		final IdentifierToken class21IdentifierToken =
				IdentifierToken.create("Class1", Position.create("", 0 + 1, 0 + 1, 0));
		final Name class21Name = group2Name.addName(class21IdentifierToken);
		final Collection<ClassModifier> class21Modifiers = new Vector<>();
		final Collection<Attribute> class21Attributes = new Vector<>();
		final List<Type> class21SuperTypes = new Vector<>();
		final Collection<Operation> class21Operations = new Vector<>();
		final ClassType class21 =
				RegularClassType.create(
						class21Name,
						class21Modifiers,
						class21Attributes,
						class21SuperTypes,
						class21Operations,
						new Vector<Constructor>(),
						class21IdentifierToken,
						
						new Vector<ClassType>(),
						null);
		group2Elements.add(class21);
		final IdentifierToken group21IdentifierToken =
				IdentifierToken.create("Group1", Position.create("", 0 + 1, 0 + 1, 0));
		final Name group21Name = group2Name.addName(group21IdentifierToken);
		final Collection<GroupElement> group21Elements = new Vector<>();
		final Group group21 = Group.create(group21Name, group21Elements, group21IdentifierToken, null);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
1117 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
1164 | 
	public void testOperationReturnAListThatShouldBeThrown() throws Exception {
		
		final IdentifierToken myGroupToken = IdentifierToken.create("MyGroup", Position.create("", 1, 1, 1));
		final IdentifierToken myClassToken = IdentifierToken.create("MyClass", Position.create("", 1, 16, 16));
		final IdentifierToken myOperationToken = IdentifierToken.create("MyOperation", Position.create("", 1, 31, 31));
		
		this.stream.add(myGroupToken);
		this.stream.add(ColonToken.create(Position.create("", 1, 8, 8)));
		this.stream.add(GroupToken.create(Position.create("", 1, 9, 9)));
		this.stream.add(EqualToken.create(Position.create("", 1, 14, 14)));
		this.stream.add(SquareBracketOpenToken.create(Position.create("", 1, 15, 15)));
		this.stream.add(myClassToken);
		this.stream.add(ColonToken.create(Position.create("", 1, 23, 23)));
		this.stream.add(ClassToken.create(Position.create("", 1, 24, 24)));
		this.stream.add(EqualToken.create(Position.create("", 1, 29, 29)));
		this.stream.add(CurlyBracketOpenToken.create(Position.create("", 1, 30, 30)));
		this.stream.add(myOperationToken);
		this.stream.add(ColonToken.create(Position.create("", 1, 42, 42)));
		this.stream.add(DoubleSquareBracketOpenToken.create(Position.create("", 1, 43, 43)));
		this.stream.add(BracketOpenToken.create(Position.create("", 1, 45, 45)));
		this.stream.add(BracketCloseToken.create(Position.create("", 1, 46, 46)));
		this.stream.add(ArrowToken.create(Position.create("", 1, 47, 47)));
		this.stream.add(IdentifierToken.create("String", Position.create("", 1, 49, 49)));
		this.stream.add(AsteriskToken.create(Position.create("", 1, 55, 55)));  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
266 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
423 | 
	public void testContainsInheritanceOverClassInheritanceAndSumSupertypeIsAnClass() throws Exception {
		final SimpleScannerInput input =
				new SimpleScannerInput("Group:group=[A:class={Attribute1:{String,Integer,A}; Attribute2:{B,C};}; "
						+ "B:class=A+{}; C:class=A+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final ClassType clss = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		final Iterator<Attribute> attrIterator = clss.getAttributes().iterator();
		final Attribute attr1 = attrIterator.next();
		final Attribute attr2 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();
		assertEquals(1, supertypesAttr1.size());
		final Iterator<Type> superTypesAttr1Iterator = supertypesAttr1.iterator();
		assertEquals(model.getAnything().getPrototype(), HelperUtils.getReferencedType(superTypesAttr1Iterator.next()));
		
		assertEquals(0, ((SumType) attr2.getAttrType()).getSuperTypes().size());
		final Collection<Type> supertypesAttr2 =
				((SumType) ((SumType) attr2.getAttrType()).getPrototype()).getSuperTypes();
		assertEquals(1, supertypesAttr2.size());
		final Iterator<Type> superTypesAttr2Iterator = supertypesAttr2.iterator();
		assertEquals(clss, HelperUtils.getReferencedType(superTypesAttr2Iterator.next()));
		
		assertEquals(1, model.getInteger().getPrototype().getSuperTypes().size());
		assertEquals(
				attr1Type,
				HelperUtils.getReferencedType(model.getInteger().getPrototype().getSuperTypes().iterator().next()));
		
		assertEquals(1, model.getString().getPrototype().getSuperTypes().size());
		assertEquals(
				attr1Type,
				HelperUtils.getReferencedType(model.getString().getPrototype().getSuperTypes().iterator().next()));
	}
	
	/**
	 * Group:group=[A:class={Attribute1:{String,Integer,A}; Attribute2:{String,C};}; B:class=A+{}; C:class=A+{};
	 * Class:class={};]; .
	 * 
	 * @throws Exception
	 *             Exception
	 */
	@Test
	public void testContainsInheritanceOverClassInheritance2() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestAnalyzeInheritanceTreesTask.java | 
453 | 
| de/fhdw/wtf/walker/tasks/test/TestAnalyzeInheritanceTreesTask.java | 
602 | 
		final Model model = SyntaxCheck.getInstance().getModelFromString(input);
		
		final Iterator<Type> iterator = model.getConstructorCallDependencies().keySet().iterator();
		while (iterator.hasNext()) {
			final Type current = iterator.next();
			
			switch (current.getTypeString()) {
			case "group1>A":
				assertTrue(true);
				assertEquals(0, model.getConstructorCallDependencies().get(current).size());
				break;
			case "group1>B":
				final Iterator<Type> bIterator = model.getConstructorCallDependencies().get(current).iterator();
				assertEquals("group1>A", bIterator.next().toString());
				assertEquals(1, model.getConstructorCallDependencies().get(current).size());
				break;
			case "group1>C":
				final Iterator<Type> cIterator = model.getConstructorCallDependencies().get(current).iterator();
				assertEquals("group1>A", cIterator.next().toString());
				assertEquals(1, model.getConstructorCallDependencies().get(current).size());
				break;
			case "group1>D":
				final Iterator<Type> dIterator = model.getConstructorCallDependencies().get(current).iterator();
				assertEquals("group1>A", dIterator.next().toString());
				assertEquals("group1>B", dIterator.next().toString());
				assertEquals("group1>C", dIterator.next().toString());
				assertEquals(3, model.getConstructorCallDependencies().get(current).size());
				break;
			case "group1>E":
				final Iterator<Type> eIterator = model.getConstructorCallDependencies().get(current).iterator();
				assertEquals("group1>D", eIterator.next().toString());
				assertEquals(1, model.getConstructorCallDependencies().get(current).size());
				break;
			case "group1>F":
				final Iterator<Type> fIterator = model.getConstructorCallDependencies().get(current).iterator();
				assertEquals("group1>D", fIterator.next().toString());
				assertEquals(1, model.getConstructorCallDependencies().get(current).size());
				break;
			case "group1>G":
				final Iterator<Type> gIterator = model.getConstructorCallDependencies().get(current).iterator();
				assertEquals("group1>D", gIterator.next().toString());  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
269 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
426 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
473 | 
						+ "B:class=A+{}; C:class=A+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final ClassType clss = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		final Iterator<Attribute> attrIterator = clss.getAttributes().iterator();
		final Attribute attr1 = attrIterator.next();
		final Attribute attr2 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();
		assertEquals(1, supertypesAttr1.size());
		final Iterator<Type> superTypesAttr1Iterator = supertypesAttr1.iterator();
		assertEquals(model.getAnything().getPrototype(), HelperUtils.getReferencedType(superTypesAttr1Iterator.next()));
		
		assertEquals(0, ((SumType) attr2.getAttrType()).getSuperTypes().size());
		final Collection<Type> supertypesAttr2 =
				((SumType) ((SumType) attr2.getAttrType()).getPrototype()).getSuperTypes();
		assertEquals(1, supertypesAttr2.size());
		final Iterator<Type> superTypesAttr2Iterator = supertypesAttr2.iterator();
		assertEquals(clss, HelperUtils.getReferencedType(superTypesAttr2Iterator.next()));
		
		assertEquals(1, model.getInteger().getPrototype().getSuperTypes().size());
		assertEquals(
				attr1Type,
				HelperUtils.getReferencedType(model.getInteger().getPrototype().getSuperTypes().iterator().next()));
		
		assertEquals(1, model.getString().getPrototype().getSuperTypes().size());
		assertEquals(
				attr1Type,
				HelperUtils.getReferencedType(model.getString().getPrototype().getSuperTypes().iterator().next()));
	}
	
	/**
	 * Group:group=[A:class={Attribute1:{String,Integer,A}; Attribute2:{String,C};}; B:class=A+{}; C:class=A+{};
	 * Class:class={};]; .
	 * 
	 * @throws Exception
	 *             Exception
	 */
	@Test
	public void testContainsInheritanceOverClassInheritance2() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
1067 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
1117 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
1164 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
1211 | 
	public void testOperationReturnAProductThatShouldBeThrown() throws Exception {
		
		final IdentifierToken myGroupToken = IdentifierToken.create("MyGroup", Position.create("", 1, 1, 1));
		final IdentifierToken myClassToken = IdentifierToken.create("MyClass", Position.create("", 1, 16, 16));
		final IdentifierToken myOperationToken = IdentifierToken.create("MyOperation", Position.create("", 1, 31, 31));
		
		this.stream.add(myGroupToken);
		this.stream.add(ColonToken.create(Position.create("", 1, 8, 8)));
		this.stream.add(GroupToken.create(Position.create("", 1, 9, 9)));
		this.stream.add(EqualToken.create(Position.create("", 1, 14, 14)));
		this.stream.add(SquareBracketOpenToken.create(Position.create("", 1, 15, 15)));
		this.stream.add(myClassToken);
		this.stream.add(ColonToken.create(Position.create("", 1, 23, 23)));
		this.stream.add(ClassToken.create(Position.create("", 1, 24, 24)));
		this.stream.add(EqualToken.create(Position.create("", 1, 29, 29)));
		this.stream.add(CurlyBracketOpenToken.create(Position.create("", 1, 30, 30)));
		this.stream.add(myOperationToken);
		this.stream.add(ColonToken.create(Position.create("", 1, 42, 42)));
		this.stream.add(DoubleSquareBracketOpenToken.create(Position.create("", 1, 43, 43)));
		this.stream.add(BracketOpenToken.create(Position.create("", 1, 45, 45)));
		this.stream.add(BracketCloseToken.create(Position.create("", 1, 46, 46)));
		this.stream.add(ArrowToken.create(Position.create("", 1, 47, 47)));
		this.stream.add(BracketOpenToken.create(Position.create("", 1, 49, 49)));  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
58 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
200 | 
						+ "operation : [[(parameter:Integer) -> String ]];}; ];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		Model model = null;
		model = parser.parse();
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		
		final SimpleWalkerTask doubleGroupcomponent = DoubleGroupcomponentCheck.create(model, taskmanager);
		final SimpleWalkerTask doubleAttributenameCheck = DoubleAttributenameCheck.create(model, taskmanager);
		final SimpleWalkerTask referencer = TypeReferencer.create(model, taskmanager);
		final SimpleWalkerTask prototypesTask = PrototypesTask.create(model, taskmanager);
		final SimpleWalkerTask cyclicInheritance = CyclicInheritanceCheck.create(model, taskmanager);
		final SimpleWalkerTask subtypesFillTask = SubtypesFillTask.create(model, taskmanager);
		final GroupDependencyTask doubleChecks = GroupDependencyTask.create(taskmanager);
		final SimpleWalkerTask overloadingCheck = OverloadingCheck.create(model, taskmanager);
		doubleChecks.addMembers(doubleGroupcomponent, doubleAttributenameCheck);
		referencer.addDependency(doubleChecks);
		cyclicInheritance.addDependency(referencer);
		subtypesFillTask.addDependency(cyclicInheritance);
		prototypesTask.addDependency(subtypesFillTask);
		overloadingCheck.addDependency(prototypesTask);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(7, okResult.size());
		assertEquals(1, failResult.size());
		
		final Exception exception = failResult.iterator().next().getError();
		if (exception instanceof InvalidOverloadingException) {
			final InvalidOverloadingException ex = (InvalidOverloadingException) exception;
			assertEquals(Position.create("", 1, 75, 74), ex.getStartPosition());
			assertEquals(Position.create("", 1, 122, 121), ex.getEndPos());
		} else {
			fail();
		}
	}
	
	/**
	 * Group:group=[Klasse:class={operation : [[(parameter:Klasse) -> String ]];operation : [[(parameter:Klasse) ->
	 * String ]];}; ]; .
	 * 
	 * @throws InterruptedException
	 * @throws ExecutionException
	 * @throws NoValidTokenStreamException
	 * @throws CyclicDependencyException
	 * @throws CyclicPartDefinitionException
	 */
	@Test
	public void testTwoEqualOperations2() throws InterruptedException, ExecutionException, NoValidTokenStreamException,  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
853 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
912 | 
		final SimpleScannerInput input = new SimpleScannerInput("Group1:group=[A:class={s:String;();};];");
		final VerboseTokenStream output = new VerboseTokenStream(SimpleTokenStream.create());
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		
		final IdentifierToken group1IdentifierToken = IdentifierToken.create("Group1", Position.create("", 1, 1, 0));
		final IdentifierToken aIdentifierToken = IdentifierToken.create("A", Position.create("", 1, 1, 0));
		final IdentifierToken sIdentifierToken = IdentifierToken.create("s", Position.create("", 1, 1, 0));
		
		final Vector<GroupElement> group1Vector = new Vector<>();
		final Vector<Constructor> constructors = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name group1Name = UnqualifiedName.create(group1IdentifierToken);
		final Group group1 = Group.create(group1Name, group1Vector, group1IdentifierToken);
		
		final Name aName = group1Name.addName(aIdentifierToken);
		final ClassType aClass =
				RegularClassType.create(
						aName,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						constructors,
						aIdentifierToken,
						
						new Vector<ClassType>());
		group1Vector.add(aClass);
		
		final ByNameState attributeStringReferenceState =
				ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		
		final TypeProxy stringType = TypeProxy.create(this.stringIdentifier, attributeStringReferenceState);
		
		attributes.add(Attribute.create("s", stringType, new Vector<AttributeModifier>(), sIdentifierToken));
		
		final ProductType aProduct = ProductType.create(this.bracketOpenToken);
		
		constructors.add(Constructor.create(aProduct, aClass, new Vector<ConstructorReference>(), aIdentifierToken));
		
		final Model expected = Model.create(group1IdentifierToken);
		expected.addGroup(group1);
		
		this.parser = Parser.create(output);
		final Model actual = this.parser.parse();
		
		assertEquals(0, this.parser.getExceptions().size());
		assertEquals(expected, actual);
	}
	
	/**
	 * Group1:group=[A:class={();s:String;};];.
	 * 
	 * @throws Exception
	 *             {@link de.fhdw.wtf.common.exception.parser.NoValidTokenStreamException}
	 */
	@Test
	public void testFirstConstructorThanVariable() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1489 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1580 | 
	public void testAttributeWithListOfMapAndProductAsKey() throws Exception {
		final IdentifierToken groupIdentifier = IdentifierToken.create("Group", Position.create("", 1, 1, 0));
		final IdentifierToken classIdentifier = IdentifierToken.create("Class", Position.create("", 1, 1, 0));
		final IdentifierToken attributeIdentifier = IdentifierToken.create("Attribute", Position.create("", 1, 1, 0));
		final IdentifierToken nameIdentifier = IdentifierToken.create("name", Position.create("", 1, 1, 0));
		final IdentifierToken countIdentifier = IdentifierToken.create("count", Position.create("", 1, 1, 0));
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(attributeIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.bracketOpenToken);
		this.stream.add(nameIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.stringIdentifier);
		this.stream.add(this.commaToken);
		this.stream.add(countIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.integerIdentifier);
		this.stream.add(this.bracketCloseToken);
		this.stream.add(this.arrowToken);
		this.stream.add(this.integerIdentifier);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.asteriskToken);
		this.stream.add(this.semicolonToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1181 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1253 | 
				new SimpleScannerInput("Group1:group=[A:class={op:[[(s:String)->{}]];();s:String;};];");
		final VerboseTokenStream output = new VerboseTokenStream(SimpleTokenStream.create());
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		
		final IdentifierToken group1IdentifierToken = IdentifierToken.create("Group1", Position.create("", 1, 1, 0));
		final IdentifierToken aIdentifierToken = IdentifierToken.create("A", Position.create("", 1, 1, 0));
		final IdentifierToken sIdentifierToken = IdentifierToken.create("s", Position.create("", 1, 1, 1));
		final IdentifierToken op = IdentifierToken.create("op", Position.create("", 1, 1, 0));
		
		final Vector<GroupElement> group1Vector = new Vector<>();
		final Vector<Constructor> constructors = new Vector<>();
		final Vector<Operation> operations = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name group1Name = UnqualifiedName.create(group1IdentifierToken);
		final Group group1 = Group.create(group1Name, group1Vector, group1IdentifierToken);
		
		final Name aName = group1Name.addName(aIdentifierToken);
		final ClassType aClass =
				RegularClassType.create(
						aName,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						operations,
						constructors,
						aIdentifierToken,
						
						new Vector<ClassType>());
		group1Vector.add(aClass);
		
		final ProductType aProduct = ProductType.create(this.bracketOpenToken);
		final ProductType sProduct = ProductType.create(this.bracketOpenToken);
		
		final ByNameState attributeStringReferenceState =
				ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		final TypeProxy stringType = TypeProxy.create(this.stringIdentifier, attributeStringReferenceState);
		
		attributes.add(Attribute.create("s", stringType, new Vector<AttributeModifier>(), sIdentifierToken));
		sProduct.addElement(ProductElementType.create("s", stringType, sIdentifierToken));
		constructors.add(Constructor.create(aProduct, aClass, new Vector<ConstructorReference>(), aIdentifierToken));
		
		final Operation operation1 =  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
750 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
842 | 
	public void testTransitiveInheritanceAndSumSupertypeIsClass() throws Exception {
		final SimpleScannerInput input =
				new SimpleScannerInput("Group:group=[A:class={Attribute1:{C,D};}; B:class=A+{}; C:class=B+{}; "
						+ "D:class=B+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final Iterator<GroupElement> iterator = model.getGroups().iterator().next().getGroupElements().iterator();
		final ClassType clssA = (ClassType) iterator.next();
		final ClassType clssB = (ClassType) iterator.next();
		
		final Iterator<Attribute> attrIterator = clssA.getAttributes().iterator();
		
		final Attribute attr1 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();
		assertEquals(1, supertypesAttr1.size());
		final Iterator<Type> superTypesAttr1Iterator = supertypesAttr1.iterator();
		assertEquals(clssB, HelperUtils.getReferencedType(superTypesAttr1Iterator.next()));
		
		assertEquals(1, model.getInteger().getPrototype().getSuperTypes().size());
		assertEquals(
				model.getAnything().getPrototype(),
				HelperUtils.getReferencedType(model.getInteger().getPrototype().getSuperTypes().iterator().next()));
		
		assertEquals(1, model.getString().getPrototype().getSuperTypes().size());
		assertEquals(
				model.getAnything().getPrototype(),
				HelperUtils.getReferencedType(model.getString().getPrototype().getSuperTypes().iterator().next()));
	}
	
	/**
	 * Group:group=[A:class={Attribute1:{B,C}; Attribute2:{D,E,F,G};}; B:class=A+{}; C:class=A+{}; D:class=B+{};
	 * E:class=B+{}; F:class=C+{}; G:class=C+{}; Class:class={};]; .
	 * 
	 * @throws Exception
	 *             Exception
	 */
	@Test
	public void testTransitiveInheritanceAndSumSupertypeIsClass2() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1288 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1489 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1580 | 
	public void testAttributeWithMapOnProductAsKey() throws Exception {
		final IdentifierToken groupIdentifier = IdentifierToken.create("Group", Position.create("", 1, 1, 0));
		final IdentifierToken classIdentifier = IdentifierToken.create("Class", Position.create("", 1, 1, 0));
		final IdentifierToken attributeIdentifier = IdentifierToken.create("Attribute", Position.create("", 1, 1, 0));
		final IdentifierToken nameIdentifier = IdentifierToken.create("name", Position.create("", 1, 1, 0));
		final IdentifierToken countIdentifier = IdentifierToken.create("count", Position.create("", 1, 1, 0));
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(attributeIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.bracketOpenToken);
		this.stream.add(nameIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.stringIdentifier);
		this.stream.add(this.commaToken);
		this.stream.add(countIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.integerIdentifier);
		this.stream.add(this.bracketCloseToken);
		this.stream.add(this.arrowToken);
		this.stream.add(this.integerIdentifier);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/testWithScanner/TestParserScanner.java | 
217 | 
| de/fhdw/wtf/parser/testWithScanner/TestParserScanner.java | 
299 | 
						"group1 : group = [ class1 : class = {op : [[(param1:Integer, param2:{Integer,String})->test]] abstract;} service transient;];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Operation> operations = new Vector<>();
		final Vector<ClassModifier> modifiers = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, GroupToken.create(Position.create("", 1, 1, 0)));
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType clazz =
				RegularClassType.create(
						className,
						modifiers,
						new Vector<Attribute>(),
						new Vector<Type>(),
						operations,
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ProductType product = ProductType.create(this.bracketOpenToken);
		final ByNameState integerByName = ByNameState.create(UnqualifiedName.create(integerIdentifier));
		final TypeProxy typeProxyInteger = TypeProxy.create(param1Identifier, integerByName);
		final ProductElementType productElement1 =
				ProductElementType.create("param1", typeProxyInteger, param1Identifier);
		
		final ByNameState stringByName = ByNameState.create(UnqualifiedName.create(stringIdentifier));
		final TypeProxy typeProxyString = TypeProxy.create(param2Identifier, stringByName);
		
		final SumType sum = SumType.create(this.curlyBracketOpenToken);
		sum.add(typeProxyInteger);
		sum.add(typeProxyString);
		
		final ProductElementType productElement2 = ProductElementType.create("param2", sum, param2Identifier);
		
		product.addElement(productElement1);
		product.addElement(productElement2);
		
		final ByNameState testByName = ByNameState.create(UnqualifiedName.create(test));
		final TypeProxy testTypeProxy = TypeProxy.create(test, testByName);
		
		final Vector<OperationModifier> operationModifiers = new Vector<>();
		operationModifiers.add(OperationModifierAbstract.create(this.abstractToken));
		
		final Operation operation = Operation.create("op", operationModifiers, product, clazz, testTypeProxy, op);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
281 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
439 | 
						+ "B:class=A+{}; C:class=A+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final ClassType clss = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		final Iterator<Attribute> attrIterator = clss.getAttributes().iterator();
		final Attribute attr1 = attrIterator.next();
		final Attribute attr2 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();
		assertEquals(1, supertypesAttr1.size());
		final Iterator<Type> superTypesAttr1Iterator = supertypesAttr1.iterator();
		final Type supertype = superTypesAttr1Iterator.next();
		final ByReferenceState state =
				ByReferenceState.create(
						model.getAnything().getPrototype(),
						UnqualifiedName.create(IdentifierToken.create(
								BaseTypeConstants.ANYTHING_CONSTANT,
								DummyToken.getDummyPosition())));
		final TypeProxy typeProxy = TypeProxy.create(DummyToken.getInstance(), state, DummyToken.getInstance());
		assertEquals(typeProxy, supertype);
		assertEquals(model.getAnything().getPrototype(), HelperUtils.getReferencedType(supertype));
		
		assertEquals(0, ((SumType) attr2.getAttrType()).getSuperTypes().size());
		final Collection<Type> supertypesAttr2 =
				((SumType) ((SumType) attr2.getAttrType()).getPrototype()).getSuperTypes();
		
		final Collection<Type> expectedSupertypes = new ArrayList<>();
		expectedSupertypes.add(attr1Type);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
333 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
446 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
777 | 
	public void testOperationModifierAlreadyAddedException() {
		this.stream = SimpleTokenStream.create();
		this.parser = Parser.create(this.stream);
		final IdentifierToken myGroup = IdentifierToken.create("MyGroup", Position.create("", 1, 1, 0));
		final IdentifierToken myClass = IdentifierToken.create("MyClass", Position.create("", 1, 1, 0));
		final IdentifierToken myOperation = IdentifierToken.create("MyOperation", Position.create("", 1, 1, 0));
		final IdentifierToken myParameter = IdentifierToken.create("MyParameter", Position.create("", 1, 1, 0));
		final IdentifierToken string = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(myOperation);
		this.stream.add(this.colonToken);
		this.stream.add(this.doubleSquareBracketOpenToken);
		this.stream.add(this.bracketOpenToken);
		this.stream.add(myParameter);
		this.stream.add(this.colonToken);
		this.stream.add(string);
		this.stream.add(this.bracketCloseToken);
		this.stream.add(this.arrowToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.doubleSquareBracketCloseToken);
		this.stream.add(this.abstractToken);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
58 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
129 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
200 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
272 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
344 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
414 | 
						+ "operation : [[(parameter:Integer) -> String ]];}; ];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		Model model = null;
		model = parser.parse();
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		
		final SimpleWalkerTask doubleGroupcomponent = DoubleGroupcomponentCheck.create(model, taskmanager);
		final SimpleWalkerTask doubleAttributenameCheck = DoubleAttributenameCheck.create(model, taskmanager);
		final SimpleWalkerTask referencer = TypeReferencer.create(model, taskmanager);
		final SimpleWalkerTask prototypesTask = PrototypesTask.create(model, taskmanager);
		final SimpleWalkerTask cyclicInheritance = CyclicInheritanceCheck.create(model, taskmanager);
		final SimpleWalkerTask subtypesFillTask = SubtypesFillTask.create(model, taskmanager);
		final GroupDependencyTask doubleChecks = GroupDependencyTask.create(taskmanager);
		final SimpleWalkerTask overloadingCheck = OverloadingCheck.create(model, taskmanager);
		doubleChecks.addMembers(doubleGroupcomponent, doubleAttributenameCheck);
		referencer.addDependency(doubleChecks);
		cyclicInheritance.addDependency(referencer);
		subtypesFillTask.addDependency(cyclicInheritance);
		prototypesTask.addDependency(subtypesFillTask);
		overloadingCheck.addDependency(prototypesTask);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(7, okResult.size());
		assertEquals(1, failResult.size());
		
		final Exception exception = failResult.iterator().next().getError();
		if (exception instanceof InvalidOverloadingException) {
			final InvalidOverloadingException ex = (InvalidOverloadingException) exception;
			assertEquals(Position.create("", 1, 75, 74), ex.getStartPosition());  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
333 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
446 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
777 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
1058 | 
	public void testOperationModifierAlreadyAddedException() {
		this.stream = SimpleTokenStream.create();
		this.parser = Parser.create(this.stream);
		final IdentifierToken myGroup = IdentifierToken.create("MyGroup", Position.create("", 1, 1, 0));
		final IdentifierToken myClass = IdentifierToken.create("MyClass", Position.create("", 1, 1, 0));
		final IdentifierToken myOperation = IdentifierToken.create("MyOperation", Position.create("", 1, 1, 0));
		final IdentifierToken myParameter = IdentifierToken.create("MyParameter", Position.create("", 1, 1, 0));
		final IdentifierToken string = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(myOperation);
		this.stream.add(this.colonToken);
		this.stream.add(this.doubleSquareBracketOpenToken);
		this.stream.add(this.bracketOpenToken);
		this.stream.add(myParameter);
		this.stream.add(this.colonToken);
		this.stream.add(string);
		this.stream.add(this.bracketCloseToken);
		this.stream.add(this.arrowToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.doubleSquareBracketCloseToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
852 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
964 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
1071 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
1121 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
1168 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
1215 | 
				IdentifierToken.create("TestException", Position.create("", 1, 68, 68));
		
		this.stream.add(myGroupToken);
		this.stream.add(ColonToken.create(Position.create("", 1, 8, 8)));
		this.stream.add(GroupToken.create(Position.create("", 1, 9, 9)));
		this.stream.add(EqualToken.create(Position.create("", 1, 14, 14)));
		this.stream.add(SquareBracketOpenToken.create(Position.create("", 1, 15, 15)));
		this.stream.add(myClassToken);
		this.stream.add(ColonToken.create(Position.create("", 1, 23, 23)));
		this.stream.add(ClassToken.create(Position.create("", 1, 24, 24)));
		this.stream.add(EqualToken.create(Position.create("", 1, 29, 29)));
		this.stream.add(CurlyBracketOpenToken.create(Position.create("", 1, 30, 30)));
		this.stream.add(myOperationToken);
		this.stream.add(ColonToken.create(Position.create("", 1, 42, 42)));
		this.stream.add(DoubleSquareBracketOpenToken.create(Position.create("", 1, 43, 43)));
		this.stream.add(BracketOpenToken.create(Position.create("", 1, 45, 45)));
		this.stream.add(BracketCloseToken.create(Position.create("", 1, 46, 46)));
		this.stream.add(ArrowToken.create(Position.create("", 1, 47, 47)));
		this.stream.add(testExceptionReferenceToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
780 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
274 | 
		final IdentifierToken myGroup = IdentifierToken.create("MyGroup", Position.create("", 1, 1, 0));
		final IdentifierToken myClass = IdentifierToken.create("MyClass", Position.create("", 1, 1, 0));
		final IdentifierToken myOperation = IdentifierToken.create("MyOperation", Position.create("", 1, 1, 0));
		final IdentifierToken myParameter = IdentifierToken.create("MyParameter", Position.create("", 1, 1, 0));
		final IdentifierToken string = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(myOperation);
		this.stream.add(this.colonToken);
		this.stream.add(this.doubleSquareBracketOpenToken);
		this.stream.add(this.bracketOpenToken);
		this.stream.add(myParameter);
		this.stream.add(this.colonToken);
		this.stream.add(string);
		this.stream.add(this.bracketCloseToken);
		this.stream.add(this.arrowToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.doubleSquareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.semicolonToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1503 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1590 | 
		final IdentifierToken s2aIdentifierToken = IdentifierToken.create("S2A", Position.create("", 1, 1, 0));
		
		final Vector<GroupElement> group1Vector = new Vector<>();
		final Vector<Constructor> constructors = new Vector<>();
		
		final Name group1Name = UnqualifiedName.create(group1IdentifierToken);
		final Group group1 = Group.create(group1Name, group1Vector, group1IdentifierToken);
		
		final Name aName = group1Name.addName(aIdentifierToken);
		final Name s1aName = group1Name.addName(s1aIdentifierToken);
		final Name s2aName = group1Name.addName(s2aIdentifierToken);
		
		final Vector<Type> supertypes = new Vector<>();
		supertypes.add(TypeProxy.create(null, ByNameState.create(UnqualifiedName.create(s1aIdentifierToken))));
		supertypes.add(TypeProxy.create(null, ByNameState.create(UnqualifiedName.create(s2aIdentifierToken))));
		
		final ClassType s1aClass =
				RegularClassType.create(
						s1aName,
						new Vector<ClassModifier>(),
						new Vector<Attribute>(),
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						s1aIdentifierToken,
						
						new Vector<ClassType>());
		
		final ClassType s2aClass =
				RegularClassType.create(
						s2aName,
						new Vector<ClassModifier>(),
						new Vector<Attribute>(),
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						s2aIdentifierToken,
						
						new Vector<ClassType>());
		
		final ClassType aClass =
				RegularClassType.create(
						aName,
						new Vector<ClassModifier>(),
						new Vector<Attribute>(),
						supertypes,
						new Vector<Operation>(),
						constructors,
						aIdentifierToken,
						
						new Vector<ClassType>());
		group1Vector.add(s1aClass);
		group1Vector.add(s2aClass);
		group1Vector.add(aClass);
		
		final ProductType aProduct = ProductType.create(this.bracketOpenToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1288 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1489 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1580 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1767 | 
	public void testAttributeWithMapOnProductAsKey() throws Exception {
		final IdentifierToken groupIdentifier = IdentifierToken.create("Group", Position.create("", 1, 1, 0));
		final IdentifierToken classIdentifier = IdentifierToken.create("Class", Position.create("", 1, 1, 0));
		final IdentifierToken attributeIdentifier = IdentifierToken.create("Attribute", Position.create("", 1, 1, 0));
		final IdentifierToken nameIdentifier = IdentifierToken.create("name", Position.create("", 1, 1, 0));
		final IdentifierToken countIdentifier = IdentifierToken.create("count", Position.create("", 1, 1, 0));
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(attributeIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.bracketOpenToken);
		this.stream.add(nameIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.stringIdentifier);
		this.stream.add(this.commaToken);
		this.stream.add(countIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.integerIdentifier);
		this.stream.add(this.bracketCloseToken);
		this.stream.add(this.arrowToken);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
222 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
316 | 
						+ "Attribute2:{String,Integer};};" + "Class2:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final ClassType clss = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		final Iterator<Attribute> attrIterator = clss.getAttributes().iterator();
		final Attribute attr1 = attrIterator.next();
		final Attribute attr2 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();
		assertEquals(1, supertypesAttr1.size());
		final Iterator<Type> superTypesAttr1Iterator = supertypesAttr1.iterator();
		assertEquals(model.getAnything().getPrototype(), HelperUtils.getReferencedType(superTypesAttr1Iterator.next()));
		
		assertEquals(0, ((SumType) attr2.getAttrType()).getSuperTypes().size());
		final Collection<Type> supertypesAttr2 =
				((SumType) ((SumType) attr2.getAttrType()).getPrototype()).getSuperTypes();
		assertEquals(1, supertypesAttr2.size());
		final Iterator<Type> superTypesAttr2Iterator = supertypesAttr2.iterator();
		assertEquals(attr1Type, superTypesAttr2Iterator.next());
		
		assertEquals(1, model.getInteger().getPrototype().getSuperTypes().size());
		assertEquals(  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2479 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2571 | 
		this.stream.add(trueIdentifier);
		this.stream.add(this.commaToken);
		this.stream.add(falseIdentifier);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(EndToken.create(Position.create("", 1, 1, 0)));
		
		final Model model = Model.create(groupIdentifier);
		final Vector<GroupElement> groupVector = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		model.addGroup(group);
		
		final Name className = groupName.addName(classIdentifier);
		final Collection<Attribute> attributes = new Vector<>();
		final ClassType clazz =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		groupVector.add(clazz);
		
		final ByNameState stringByName = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		final TypeProxy typeProxyString = TypeProxy.create(groupIdentifier, stringByName);
		
		final ByNameState trueByName = ByNameState.create(UnqualifiedName.create(trueIdentifier));
		final TypeProxy typeProxyTrue = TypeProxy.create(groupIdentifier, trueByName);
		
		final ByNameState falseByName = ByNameState.create(UnqualifiedName.create(falseIdentifier));
		final TypeProxy typeProxyFalse = TypeProxy.create(groupIdentifier, falseByName);
		
		final ListType list = ListType.create(this.stringIdentifier, typeProxyString);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
336 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
449 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
274 | 
		final IdentifierToken myGroup = IdentifierToken.create("MyGroup", Position.create("", 1, 1, 0));
		final IdentifierToken myClass = IdentifierToken.create("MyClass", Position.create("", 1, 1, 0));
		final IdentifierToken myOperation = IdentifierToken.create("MyOperation", Position.create("", 1, 1, 0));
		final IdentifierToken myParameter = IdentifierToken.create("MyParameter", Position.create("", 1, 1, 0));
		final IdentifierToken string = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(myOperation);
		this.stream.add(this.colonToken);
		this.stream.add(this.doubleSquareBracketOpenToken);
		this.stream.add(this.bracketOpenToken);
		this.stream.add(myParameter);
		this.stream.add(this.colonToken);
		this.stream.add(string);
		this.stream.add(this.bracketCloseToken);
		this.stream.add(this.arrowToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.doubleSquareBracketCloseToken);
		this.stream.add(this.abstractToken);  | 
| File | 
Line | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
55 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
123 | 
		final Model model = SyntaxCheck.getInstance().getModelFromString(input);
		final Group group = model.getGroups().iterator().next();
		final ClassType klasse = (ClassType) group.getGroupElements().iterator().next();
		final SumType sum = (SumType) klasse.getAttributes().iterator().next().getAttrType();
		
		final List<Type> standardizeElements = sum.standardize().accept(new TypeVisitorReturn<List<Type>>() {
			
			@Override
			public List<Type> handle(final AtomicType atomicType) {
				return new ArrayList<>();
			}
			
			@Override
			public List<Type> handle(final CompositeType compositeType) {
				return compositeType.accept(new CompositeTypeVisitorReturn<List<Type>>() {
					
					@Override
					public List<Type> handle(final ListType list) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final MapType map) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final ProductType product) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final SumType sum2) {
						return sum2.getElements();
					}
					
					@Override
					public List<Type> handle(final ThrownType thrownType) {
						return new ArrayList<>();
					}
				});
			}
			
			@Override
			public List<Type> handle(final TypeProxy typeProxy) {
				return new ArrayList<>();
			}
		});
		
		assertEquals(1, standardizeElements.size());
		assertEquals(sum.getElements().iterator().next(), standardizeElements.iterator().next());
	}
	
	/**
	 * A > B, A > C und C > D. {A,B,C,D} => {A}
	 * 
	 * @throws Exception
	 *             {@link de.fhdw.wtf.common.exception.parser.SumIsAnythingException},
	 *             {@link de.fhdw.wtf.common.exception.editor.MultipleCheckExceptions},
	 *             {@link de.fhdw.wtf.common.exception.walker.CyclicDependencyException}, {@link InterruptedException},
	 *             {@link de.fhdw.wtf.common.exception.walker.CyclicPartDefinitionException},
	 *             {@link java.util.concurrent.ExecutionException}
	 */
	@Test
	public void testClass2() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1691 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1776 | 
				TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(b)))));
		
		final List<Type> standardizeElements = actualSum.standardize().accept(new TypeVisitorReturn<List<Type>>() {
			
			@Override
			public List<Type> handle(final AtomicType atomicType) {
				return new ArrayList<>();
			}
			
			@Override
			public List<Type> handle(final CompositeType compositeType) {
				return compositeType.accept(new CompositeTypeVisitorReturn<List<Type>>() {
					
					@Override
					public List<Type> handle(final ListType list) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final MapType map) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final ProductType product) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final SumType sum2) {
						return sum2.getElements();
					}
					
					@Override
					public List<Type> handle(final ThrownType thrownType) {
						return new ArrayList<>();
					}
				});
			}
			
			@Override
			public List<Type> handle(final TypeProxy typeProxy) {
				return new ArrayList<>();
			}
		});
		
		// Prepare Expected
		final SumType expectedSum = SumType.create(dummyToken);
		expectedSum.add(ThrownType.create(
				dummyToken,
				TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(a)))));
		expectedSum.add(ThrownType.create(
				dummyToken,
				TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(b)))));
		
		// Test
		assertEquals(2, standardizeElements.size());
		assertEquals(2, expectedSum.getElements().size());
		this.assertEqualsOnlists(standardizeElements, expectedSum.getElements());
	}
	
	/**
	 * {A!,B!,A!} => Result: {A!,B!}.
	 * 
	 * @throws SumIsAnythingException
	 *             If it contains Anything throw specified Exception
	 */
	@Test
	public void testDoubleThrownElements() throws SumIsAnythingException {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1519 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1611 | 
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.asteriskToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType classModel =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState stringReferenceState = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		final TypeProxy stringType = TypeProxy.create(this.stringIdentifier, stringReferenceState);
		final ByNameState integerReferenceState = ByNameState.create(UnqualifiedName.create(this.integerIdentifier));
		final TypeProxy integerType = TypeProxy.create(this.integerIdentifier, integerReferenceState);
		
		final ProductElementType nameElement = ProductElementType.create("name", stringType, nameIdentifier);
		final ProductElementType countElement = ProductElementType.create("count", integerType, countIdentifier);
		final ProductType product = ProductType.create(this.bracketOpenToken);
		product.addElement(nameElement);
		product.addElement(countElement);
		
		final MapType map = MapType.create(this.bracketOpenToken, product, integerType);
		final ListType list = ListType.create(this.bracketOpenToken, map);
		
		final Attribute attribute =  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestAnalyzeInheritanceTreesTask.java | 
453 | 
| de/fhdw/wtf/walker/tasks/test/TestAnalyzeInheritanceTreesTask.java | 
523 | 
| de/fhdw/wtf/walker/tasks/test/TestAnalyzeInheritanceTreesTask.java | 
602 | 
		final Model model = SyntaxCheck.getInstance().getModelFromString(input);
		
		final Iterator<Type> iterator = model.getConstructorCallDependencies().keySet().iterator();
		while (iterator.hasNext()) {
			final Type current = iterator.next();
			
			switch (current.getTypeString()) {
			case "group1>A":
				assertTrue(true);
				assertEquals(0, model.getConstructorCallDependencies().get(current).size());
				break;
			case "group1>B":
				final Iterator<Type> bIterator = model.getConstructorCallDependencies().get(current).iterator();
				assertEquals("group1>A", bIterator.next().toString());
				assertEquals(1, model.getConstructorCallDependencies().get(current).size());
				break;
			case "group1>C":
				final Iterator<Type> cIterator = model.getConstructorCallDependencies().get(current).iterator();
				assertEquals("group1>A", cIterator.next().toString());
				assertEquals(1, model.getConstructorCallDependencies().get(current).size());
				break;
			case "group1>D":
				final Iterator<Type> dIterator = model.getConstructorCallDependencies().get(current).iterator();
				assertEquals("group1>A", dIterator.next().toString());
				assertEquals("group1>B", dIterator.next().toString());
				assertEquals("group1>C", dIterator.next().toString());
				assertEquals(3, model.getConstructorCallDependencies().get(current).size());
				break;
			case "group1>E":
				final Iterator<Type> eIterator = model.getConstructorCallDependencies().get(current).iterator();
				assertEquals("group1>D", eIterator.next().toString());
				assertEquals(1, model.getConstructorCallDependencies().get(current).size());  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
164 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
136 | 
				HelperUtils.getReferencedType(model.getString().getPrototype().getSuperTypes().iterator().next()));
	}
	
	/**
	 * Group:group=[Class:class={Attribute1:{String,Integer}; Attribute2:{String};};]; .
	 * 
	 * @throws Exception
	 *             Exception
	 */
	@Test
	public void testNormalContainsInheritance() throws Exception {
		final SimpleScannerInput input =
				new SimpleScannerInput("Group:group=[Class:class={Attribute1:{String,Integer,Class}; "
						+ "Attribute2:{String,Integer};};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final ClassType clss = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		final Iterator<Attribute> attrIterator = clss.getAttributes().iterator();
		final Attribute attr1 = attrIterator.next();
		final Attribute attr2 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();
		assertTrue(attr1Type == model.getAnything().getPrototype());
		assertEquals(0, supertypesAttr1.size());
		
		assertEquals(0, ((SumType) attr2.getAttrType()).getSuperTypes().size());
		final Collection<Type> supertypesAttr2 =
				((SumType) ((SumType) attr2.getAttrType()).getPrototype()).getSuperTypes();
		assertEquals(1, supertypesAttr2.size());
		final Iterator<Type> superTypesAttr2Iterator = supertypesAttr2.iterator();
		assertEquals(model.getAnything().getPrototype(), HelperUtils.getReferencedType(superTypesAttr2Iterator.next()));
		
		assertEquals(1, model.getInteger().getPrototype().getSuperTypes().size());  | 
| File | 
Line | 
| de/fhdw/wtf/tooling/test/SyntaxCheckTest.java | 
57 | 
| de/fhdw/wtf/tooling/test/SyntaxCheckTest.java | 
131 | 
		final Model model = instance.getModelFromString(input);
		
		// -- should be one group --//
		final Collection<Group> groups = model.getGroups();
		assertEquals(1, groups.size());
		
		// -- should be three groupElements --//
		final Group group1 = groups.iterator().next();
		final Collection<GroupElement> groupElements = group1.getGroupElements();
		assertEquals(3, groupElements.size());
		final Iterator<GroupElement> iterator = groupElements.iterator();
		
		// -- first groupElement should have one attribute --//
		iterator.next().accept(new GroupElementVisitor() {
			
			@Override
			public void handle(final Group group) {
				fail();
			}
			
			@Override
			public void handle(final ClassType clss) {
				assertEquals(1, clss.getAttributes().size());
				assertEquals(0, clss.getOperations().size());
				assertEquals(1, clss.getModifiers().size());
			}
		});
		
		// -- second groupElement should have no attribute --//
		iterator.next().accept(new GroupElementVisitor() {
			
			@Override
			public void handle(final Group group) {
				fail();
			}
			
			@Override
			public void handle(final ClassType clss) {
				assertEquals(0, clss.getAttributes().size());
				assertEquals(0, clss.getOperations().size());
				assertEquals(0, clss.getModifiers().size());
			}
		});
		
		// -- third groupElement should have one attribute --//
		iterator.next().accept(new GroupElementVisitor() {
			
			@Override
			public void handle(final Group group) {
				fail();
			}
			
			@Override
			public void handle(final ClassType clss) {
				assertEquals(1, clss.getAttributes().size());
				assertEquals(0, clss.getOperations().size());
				assertEquals(0, clss.getModifiers().size());
			}
		});
	}
	
	/**
	 * Tests the scanning, parsing, referencing and checks of a model-file.
	 * 
	 * @throws Exception
	 *             {@link java.io.FileNotFoundException}, {@link java.io.IOException}, {@link MultipleCheckExceptions},
	 *             {@link de.fhdw.wtf.common.exception.walker.CyclicDependencyException}, {@link InterruptedException},
	 *             {@link de.fhdw.wtf.common.exception.walker.CyclicPartDefinitionException},
	 *             {@link java.util.concurrent.ExecutionException}
	 */
	@Test
	public void testSimpleModelFromFile() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
1061 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
274 | 
		final IdentifierToken myGroup = IdentifierToken.create("MyGroup", Position.create("", 1, 1, 0));
		final IdentifierToken myClass = IdentifierToken.create("MyClass", Position.create("", 1, 1, 0));
		final IdentifierToken myOperation = IdentifierToken.create("MyOperation", Position.create("", 1, 1, 0));
		final IdentifierToken myParameter = IdentifierToken.create("MyParameter", Position.create("", 1, 1, 0));
		final IdentifierToken string = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(myOperation);
		this.stream.add(this.colonToken);
		this.stream.add(this.doubleSquareBracketOpenToken);
		this.stream.add(this.bracketOpenToken);
		this.stream.add(myParameter);
		this.stream.add(this.colonToken);
		this.stream.add(string);
		this.stream.add(this.bracketCloseToken);
		this.stream.add(this.arrowToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
349 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
320 | 
				HelperUtils.getReferencedType(model.getString().getPrototype().getSuperTypes().iterator().next()));
	}
	
	/**
	 * Group:group=[A:class={Attribute1:{A,B,C}; Attribute2:{A,B}; Attribute3:{B,C}; Attribute4:{A,C};}; B:class=A+{};
	 * C:class=A+{}; Class:class={};]; .
	 * 
	 * @throws Exception
	 *             Exception
	 */
	@Test
	public void testNormalContainsInheritance3() throws Exception {
		final SimpleScannerInput input =
				new SimpleScannerInput("Group:group=[A:class={Attribute1:{A,B,C}; Attribute2:{A,B}; Attribute3:{B,C}; "
						+ "Attribute4:{A,C};}; B:class={}; C:class={}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final ClassType clss = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		final Iterator<Attribute> attrIterator = clss.getAttributes().iterator();
		final Attribute attr1 = attrIterator.next();
		final Attribute attr2 = attrIterator.next();
		final Attribute attr3 = attrIterator.next();
		final Attribute attr4 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();
		assertEquals(1, supertypesAttr1.size());
		final Iterator<Type> superTypesAttr1Iterator = supertypesAttr1.iterator();
		assertEquals(model.getAnything().getPrototype(), HelperUtils.getReferencedType(superTypesAttr1Iterator.next()));
		
		assertEquals(0, ((SumType) attr2.getAttrType()).getSuperTypes().size());
		final Collection<Type> supertypesAttr2 =
				((SumType) ((SumType) attr2.getAttrType()).getPrototype()).getSuperTypes();
		assertEquals(1, supertypesAttr2.size());  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1704 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1795 | 
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.arrowToken);
		this.stream.add(this.stringIdentifier);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType classModel =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState stringReferenceState = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		final TypeProxy stringType = TypeProxy.create(this.stringIdentifier, stringReferenceState);
		final ByNameState integerReferenceState = ByNameState.create(UnqualifiedName.create(this.integerIdentifier));
		final TypeProxy integerType = TypeProxy.create(this.integerIdentifier, integerReferenceState);
		
		final ProductElementType nameElement = ProductElementType.create("name", stringType, nameIdentifier);
		final ProductElementType countElement = ProductElementType.create("count", integerType, countIdentifier);
		final ProductType product = ProductType.create(this.bracketOpenToken);
		product.addElement(nameElement);
		product.addElement(countElement);
		
		final MapType mapKey = MapType.create(this.bracketOpenToken, product, integerType);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
539 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
610 | 
		final SimpleScannerInput input = new SimpleScannerInput("Group1:group=[A:class={();op:[[(s:String)->{}]];};];");
		final VerboseTokenStream output = new VerboseTokenStream(SimpleTokenStream.create());
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		
		final IdentifierToken group1IdentifierToken = IdentifierToken.create("Group1", Position.create("", 1, 1, 0));
		final IdentifierToken aIdentifierToken = IdentifierToken.create("A", Position.create("", 1, 1, 0));
		final IdentifierToken sParameterIdentifierToken = IdentifierToken.create("s", Position.create("", 1, 1, 1));
		final IdentifierToken op = IdentifierToken.create("op", Position.create("", 1, 1, 0));
		
		final Vector<GroupElement> group1Vector = new Vector<>();
		final Vector<Constructor> constructors = new Vector<>();
		final Vector<Operation> operations = new Vector<>();
		
		final Name group1Name = UnqualifiedName.create(group1IdentifierToken);
		final Group group1 = Group.create(group1Name, group1Vector, group1IdentifierToken);
		
		final Name aName = group1Name.addName(aIdentifierToken);
		
		final ClassType aClass =
				RegularClassType.create(
						aName,
						new Vector<ClassModifier>(),
						new Vector<Attribute>(),
						new Vector<Type>(),
						operations,
						constructors,
						aIdentifierToken,
						
						new Vector<ClassType>());
		group1Vector.add(aClass);
		
		final ProductType aProduct = ProductType.create(this.bracketOpenToken);
		final ProductType sProduct = ProductType.create(this.bracketOpenToken);
		
		final ByNameState stringName = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		
		final TypeProxy stringTypeProxy = TypeProxy.create(this.stringIdentifier, stringName);
		
		sProduct.addElement(ProductElementType.create("s", stringTypeProxy, sParameterIdentifierToken));  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
232 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
391 | 
	public void testContainsInheritanceOverClassInheritanceAndSumSupertypeIsAnClass() throws Exception {
		final SimpleScannerInput input =
				new SimpleScannerInput("Group:group=[A:class={Attribute1:{String,Integer,A}; Attribute2:{B,C};}; "
						+ "B:class=A+{}; C:class=A+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final ClassType clss = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		final Iterator<Attribute> attrIterator = clss.getAttributes().iterator();
		final Attribute attr1 = attrIterator.next();
		final Attribute attr2 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();
		assertEquals(1, supertypesAttr1.size());
		final Iterator<Type> superTypesAttr1Iterator = supertypesAttr1.iterator();
		assertEquals(model.getAnything().getPrototype(), HelperUtils.getReferencedType(superTypesAttr1Iterator.next()));
		
		assertEquals(0, ((SumType) attr2.getAttrType()).getSuperTypes().size());
		final Collection<Type> supertypesAttr2 =
				((SumType) ((SumType) attr2.getAttrType()).getPrototype()).getSuperTypes();
		
		final Collection<Type> expectedSupertypes = new ArrayList<>();
		expectedSupertypes.add(attr1Type);
		expectedSupertypes.add(clss);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
179 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
333 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
446 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
777 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
1058 | 
	public void testNoArrowException() {
		this.stream = SimpleTokenStream.create();
		this.parser = Parser.create(this.stream);
		final IdentifierToken myGroup = IdentifierToken.create("MyGroup", Position.create("", 1, 1, 0));
		final IdentifierToken myClass = IdentifierToken.create("MyClass", Position.create("", 1, 1, 0));
		final IdentifierToken myOperation = IdentifierToken.create("MyOperation", Position.create("", 1, 1, 0));
		final IdentifierToken myParameter = IdentifierToken.create("MyParameter", Position.create("", 1, 1, 0));
		final IdentifierToken string = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(myOperation);
		this.stream.add(this.colonToken);
		this.stream.add(this.doubleSquareBracketOpenToken);
		this.stream.add(this.bracketOpenToken);
		this.stream.add(myParameter);
		this.stream.add(this.colonToken);
		this.stream.add(string);
		this.stream.add(this.bracketCloseToken);
		this.stream.add(HyphenToken.create(Position.createDummyPosition()));  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
694 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
782 | 
		this.stream.add(this.bracketCloseToken);
		this.stream.add(this.asteriskToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType classModel =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState stringReferenceState = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		final TypeProxy stringType = TypeProxy.create(this.stringIdentifier, stringReferenceState);
		final ByNameState integerReferenceState = ByNameState.create(UnqualifiedName.create(this.integerIdentifier));
		final TypeProxy integerType = TypeProxy.create(this.integerIdentifier, integerReferenceState);
		
		final ProductElementType nameElement = ProductElementType.create("name", stringType, nameIdentifier);
		final ProductElementType countElement = ProductElementType.create("count", integerType, countIdentifier);
		final ProductType product = ProductType.create(this.bracketOpenToken);
		product.addElement(nameElement);
		product.addElement(countElement);
		
		final ListType list = ListType.create(this.bracketOpenToken, product);
		
		final Attribute attribute =  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
486 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
549 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
612 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
674 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
737 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
800 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
865 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
927 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
1059 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
1121 | 
								+ "operation : [[(param1:String,param2:Integer) -> String ]];}; ];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		Model model = null;
		model = parser.parse();
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		
		final SimpleWalkerTask doubleGroupcomponent = DoubleGroupcomponentCheck.create(model, taskmanager);
		final SimpleWalkerTask doubleAttributenameCheck = DoubleAttributenameCheck.create(model, taskmanager);
		final SimpleWalkerTask referencer = TypeReferencer.create(model, taskmanager);
		final SimpleWalkerTask prototypesTask = PrototypesTask.create(model, taskmanager);
		final SimpleWalkerTask cyclicInheritance = CyclicInheritanceCheck.create(model, taskmanager);
		final SimpleWalkerTask subtypesFillTask = SubtypesFillTask.create(model, taskmanager);
		final GroupDependencyTask doubleChecks = GroupDependencyTask.create(taskmanager);
		final SimpleWalkerTask overloadingCheck = OverloadingCheck.create(model, taskmanager);
		doubleChecks.addMembers(doubleGroupcomponent, doubleAttributenameCheck);
		referencer.addDependency(doubleChecks);
		cyclicInheritance.addDependency(referencer);
		subtypesFillTask.addDependency(cyclicInheritance);
		prototypesTask.addDependency(subtypesFillTask);
		overloadingCheck.addDependency(prototypesTask);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(8, okResult.size());
		assertEquals(0, failResult.size());
	}
	
	/**
	 * "Group:group=[Klasse:class={operation : [[(param:(p1:Integer,p2:String)) -> String ]];operation :
	 * [[(param:(p001:Integer,p002:String)) -> String ]];}; ]; .
	 * 
	 * @throws InterruptedException
	 * @throws ExecutionException
	 * @throws NoValidTokenStreamException
	 * @throws CyclicDependencyException
	 * @throws CyclicPartDefinitionException
	 */
	@Test
	public void testTwoDifferentProductsAsParamDifferentInProductElementNames() throws InterruptedException,  | 
| File | 
Line | 
| de/fhdw/wtf/dsl/scanner/test/ScannerTest.java | 
528 | 
| de/fhdw/wtf/dsl/scanner/test/ScannerTest.java | 
584 | 
		final IdentifierToken myOperationToken = IdentifierToken.create("MyOperation", Position.create("", 1, 31, 30));
		
		stream.add(myGroupToken);
		stream.add(ColonToken.create(Position.create("", 1, 8, 7)));
		stream.add(GroupToken.create(Position.create("", 1, 9, 8)));
		stream.add(EqualToken.create(Position.create("", 1, 14, 13)));
		stream.add(SquareBracketOpenToken.create(Position.create("", 1, 15, 14)));
		stream.add(myClassToken);
		stream.add(ColonToken.create(Position.create("", 1, 23, 22)));
		stream.add(ClassToken.create(Position.create("", 1, 24, 23)));
		stream.add(EqualToken.create(Position.create("", 1, 29, 28)));
		stream.add(CurlyBracketOpenToken.create(Position.create("", 1, 30, 29)));
		stream.add(myOperationToken);
		stream.add(ColonToken.create(Position.create("", 1, 42, 41)));
		stream.add(DoubleSquareBracketOpenToken.create(Position.create("", 1, 43, 42)));
		stream.add(BracketOpenToken.create(Position.create("", 1, 45, 44)));
		stream.add(BracketCloseToken.create(Position.create("", 1, 46, 45)));
		stream.add(ArrowToken.create(Position.create("", 1, 47, 46)));
		stream.add(SquareBracketOpenToken.create(Position.create("", 1, 49, 48)));  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
781 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1610 | 
		this.stream.add(this.bracketCloseToken);
		this.stream.add(this.asteriskToken);
		this.stream.add(this.asteriskToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType classModel =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState stringReferenceState = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		final TypeProxy stringType = TypeProxy.create(this.stringIdentifier, stringReferenceState);
		final ByNameState integerReferenceState = ByNameState.create(UnqualifiedName.create(this.integerIdentifier));
		final TypeProxy integerType = TypeProxy.create(this.integerIdentifier, integerReferenceState);
		
		final ProductElementType nameElement = ProductElementType.create("name", stringType, nameIdentifier);
		final ProductElementType countElement = ProductElementType.create("count", integerType, countIdentifier);
		final ProductType product = ProductType.create(this.bracketOpenToken);
		product.addElement(nameElement);
		product.addElement(countElement);
		
		final ListType list = ListType.create(this.bracketOpenToken, product);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
486 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
549 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
612 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
674 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
737 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
800 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
865 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
927 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
1059 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
1121 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
1184 | 
								+ "operation : [[(param1:String,param2:Integer) -> String ]];}; ];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		Model model = null;
		model = parser.parse();
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		
		final SimpleWalkerTask doubleGroupcomponent = DoubleGroupcomponentCheck.create(model, taskmanager);
		final SimpleWalkerTask doubleAttributenameCheck = DoubleAttributenameCheck.create(model, taskmanager);
		final SimpleWalkerTask referencer = TypeReferencer.create(model, taskmanager);
		final SimpleWalkerTask prototypesTask = PrototypesTask.create(model, taskmanager);
		final SimpleWalkerTask cyclicInheritance = CyclicInheritanceCheck.create(model, taskmanager);
		final SimpleWalkerTask subtypesFillTask = SubtypesFillTask.create(model, taskmanager);
		final GroupDependencyTask doubleChecks = GroupDependencyTask.create(taskmanager);
		final SimpleWalkerTask overloadingCheck = OverloadingCheck.create(model, taskmanager);
		doubleChecks.addMembers(doubleGroupcomponent, doubleAttributenameCheck);
		referencer.addDependency(doubleChecks);
		cyclicInheritance.addDependency(referencer);
		subtypesFillTask.addDependency(cyclicInheritance);
		prototypesTask.addDependency(subtypesFillTask);
		overloadingCheck.addDependency(prototypesTask);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(8, okResult.size());
		assertEquals(0, failResult.size());
	}  | 
| File | 
Line | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
259 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
703 | 
		final Model model = SyntaxCheck.getInstance().getModelFromString(input);
		final Group group = model.getGroups().iterator().next();
		final ClassType klasse = (ClassType) group.getGroupElements().iterator().next();
		final SumType sum = (SumType) klasse.getAttributes().iterator().next().getAttrType();
		
		final List<Type> standardizeElements = sum.standardize().accept(new TypeVisitorReturn<List<Type>>() {
			
			@Override
			public List<Type> handle(final AtomicType atomicType) {
				return new ArrayList<>();
			}
			
			@Override
			public List<Type> handle(final CompositeType compositeType) {
				return compositeType.accept(new CompositeTypeVisitorReturn<List<Type>>() {
					
					@Override
					public List<Type> handle(final ListType list) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final MapType map) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final ProductType product) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final SumType sum2) {
						return sum2.getElements();
					}
					
					@Override
					public List<Type> handle(final ThrownType thrownType) {
						return new ArrayList<>();
					}
				});
			}
			
			@Override
			public List<Type> handle(final TypeProxy typeProxy) {
				return new ArrayList<>();
			}
		});
		
		assertEquals(1, standardizeElements.size());
		assertEquals(sum.getElements().get(3), standardizeElements.iterator().next());  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1228 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1317 | 
		this.stream.add(this.bracketCloseToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType classModel =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState stringReferenceState = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		final TypeProxy stringType = TypeProxy.create(this.stringIdentifier, stringReferenceState);
		final ByNameState integerReferenceState = ByNameState.create(UnqualifiedName.create(this.integerIdentifier));
		final TypeProxy integerType = TypeProxy.create(this.integerIdentifier, integerReferenceState);
		
		final ProductElementType nameElement = ProductElementType.create("name", stringType, nameIdentifier);
		final ProductElementType countElement = ProductElementType.create("count", integerType, countIdentifier);
		final ProductType product = ProductType.create(this.bracketOpenToken);
		product.addElement(nameElement);
		product.addElement(countElement);
		
		final MapType map = MapType.create(this.stringIdentifier, stringType, product);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2379 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2476 | 
		this.stream.add(this.bracketCloseToken);
		this.stream.add(this.arrowToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(trueIdentifier);
		this.stream.add(this.commaToken);
		this.stream.add(falseIdentifier);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(EndToken.create(Position.create("", 1, 1, 0)));
		
		final Model model = Model.create(groupIdentifier);
		final Vector<GroupElement> groupVector = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		model.addGroup(group);
		
		final Name className = groupName.addName(classIdentifier);
		final Collection<Attribute> attributes = new Vector<>();
		final ClassType clazz =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		groupVector.add(clazz);
		
		final ByNameState stringByName = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		final TypeProxy typeProxyString = TypeProxy.create(groupIdentifier, stringByName);
		
		final ByNameState integerByName = ByNameState.create(UnqualifiedName.create(this.integerIdentifier));  | 
| File | 
Line | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
55 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
123 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
259 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
703 | 
		final Model model = SyntaxCheck.getInstance().getModelFromString(input);
		final Group group = model.getGroups().iterator().next();
		final ClassType klasse = (ClassType) group.getGroupElements().iterator().next();
		final SumType sum = (SumType) klasse.getAttributes().iterator().next().getAttrType();
		
		final List<Type> standardizeElements = sum.standardize().accept(new TypeVisitorReturn<List<Type>>() {
			
			@Override
			public List<Type> handle(final AtomicType atomicType) {
				return new ArrayList<>();
			}
			
			@Override
			public List<Type> handle(final CompositeType compositeType) {
				return compositeType.accept(new CompositeTypeVisitorReturn<List<Type>>() {
					
					@Override
					public List<Type> handle(final ListType list) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final MapType map) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final ProductType product) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final SumType sum2) {
						return sum2.getElements();
					}
					
					@Override
					public List<Type> handle(final ThrownType thrownType) {
						return new ArrayList<>();
					}
				});
			}
			
			@Override
			public List<Type> handle(final TypeProxy typeProxy) {
				return new ArrayList<>();
			}
		});
		
		assertEquals(1, standardizeElements.size());
		assertEquals(sum.getElements().iterator().next(), standardizeElements.iterator().next());  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
179 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
333 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
391 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
446 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
777 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
1058 | 
	public void testNoArrowException() {
		this.stream = SimpleTokenStream.create();
		this.parser = Parser.create(this.stream);
		final IdentifierToken myGroup = IdentifierToken.create("MyGroup", Position.create("", 1, 1, 0));
		final IdentifierToken myClass = IdentifierToken.create("MyClass", Position.create("", 1, 1, 0));
		final IdentifierToken myOperation = IdentifierToken.create("MyOperation", Position.create("", 1, 1, 0));
		final IdentifierToken myParameter = IdentifierToken.create("MyParameter", Position.create("", 1, 1, 0));
		final IdentifierToken string = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(myOperation);
		this.stream.add(this.colonToken);
		this.stream.add(this.doubleSquareBracketOpenToken);
		this.stream.add(this.bracketOpenToken);
		this.stream.add(myParameter);
		this.stream.add(this.colonToken);
		this.stream.add(string);
		this.stream.add(this.bracketCloseToken);  | 
| File | 
Line | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
770 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
837 | 
						+ "A:class={();}; B:class=A+{()=A();};];";
		final Model model = SyntaxCheck.getInstance().getModelFromString(input);
		final Group group = model.getGroups().iterator().next();
		final ClassType klasse = (ClassType) group.getGroupElements().iterator().next();
		final SumType sum = (SumType) klasse.getAttributes().iterator().next().getAttrType();
		
		final List<Type> standardizeElements = sum.standardize().accept(new TypeVisitorReturn<List<Type>>() {
			
			@Override
			public List<Type> handle(final AtomicType atomicType) {
				return new ArrayList<>();
			}
			
			@Override
			public List<Type> handle(final CompositeType compositeType) {
				return compositeType.accept(new CompositeTypeVisitorReturn<List<Type>>() {
					
					@Override
					public List<Type> handle(final ListType list) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final MapType map) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final ProductType product) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final SumType sum2) {
						return sum2.getElements();
					}
					
					@Override
					public List<Type> handle(final ThrownType thrownType) {
						return new ArrayList<>();
					}
				});
			}
			
			@Override
			public List<Type> handle(final TypeProxy typeProxy) {
				return new ArrayList<>();
			}
		});
		
		assertEquals(2, standardizeElements.size());
	}
	
	/**
	 * A > B. {[Integer->A],[Integer->B]} => {[Integer->A],[Integer->B]}
	 * 
	 * @throws Exception
	 *             {@link de.fhdw.wtf.common.exception.parser.SumIsAnythingException},
	 *             {@link de.fhdw.wtf.common.exception.editor.MultipleCheckExceptions},
	 *             {@link de.fhdw.wtf.common.exception.walker.CyclicDependencyException}, {@link InterruptedException},
	 *             {@link de.fhdw.wtf.common.exception.walker.CyclicPartDefinitionException},
	 *             {@link java.util.concurrent.ExecutionException}
	 */
	@Test
	public void testMap3() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1318 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1520 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1612 | 
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType classModel =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState stringReferenceState = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		final TypeProxy stringType = TypeProxy.create(this.stringIdentifier, stringReferenceState);
		final ByNameState integerReferenceState = ByNameState.create(UnqualifiedName.create(this.integerIdentifier));
		final TypeProxy integerType = TypeProxy.create(this.integerIdentifier, integerReferenceState);
		
		final ProductElementType nameElement = ProductElementType.create("name", stringType, nameIdentifier);
		final ProductElementType countElement = ProductElementType.create("count", integerType, countIdentifier);
		final ProductType product = ProductType.create(this.bracketOpenToken);
		product.addElement(nameElement);
		product.addElement(countElement);
		
		final MapType map = MapType.create(this.bracketOpenToken, product, integerType);
		
		final Attribute attribute =  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
209 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
177 | 
				HelperUtils.getReferencedType(model.getString().getPrototype().getSuperTypes().iterator().next()));
	}
	
	/**
	 * Group:group=[Class:class={Attribute1:{String,Integer}; Attribute2:{String};}; Class2:class={};]; .
	 * 
	 * @throws Exception
	 *             Exception
	 */
	@Test
	public void testNormalContainsInheritance2() throws Exception {
		final SimpleScannerInput input =
				new SimpleScannerInput("Group:group=[Class:class={Attribute1:{String,Integer,Class}; "
						+ "Attribute2:{String,Integer};};" + "Class2:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final ClassType clss = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		final Iterator<Attribute> attrIterator = clss.getAttributes().iterator();
		final Attribute attr1 = attrIterator.next();
		final Attribute attr2 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();
		assertEquals(1, supertypesAttr1.size());
		final Iterator<Type> superTypesAttr1Iterator = supertypesAttr1.iterator();
		assertEquals(model.getAnything().getPrototype(), HelperUtils.getReferencedType(superTypesAttr1Iterator.next()));
		
		assertEquals(0, ((SumType) attr2.getAttrType()).getSuperTypes().size());
		final Collection<Type> supertypesAttr2 =
				((SumType) ((SumType) attr2.getAttrType()).getPrototype()).getSuperTypes();
		assertEquals(1, supertypesAttr2.size());  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
544 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
523 | 
				HelperUtils.getReferencedType(model.getString().getPrototype().getSuperTypes().iterator().next()));
	}
	
	/**
	 * Group:group=[A:class={Attribute1:{String,Integer,A}; Attribute2:{String,A}; Attribute3:{B,C};}; B:class=A+{};
	 * C:class=A+{}; Class:class={};]; .
	 * 
	 * @throws Exception
	 *             Exception
	 */
	@Test
	public void testTransitiveInheritance() throws Exception {
		final SimpleScannerInput input =
				new SimpleScannerInput("Group:group=[A:class={Attribute1:{String,Integer,A}; Attribute2:{String,A}; "
						+ "Attribute3:{B,C};}; B:class=A+{}; C:class=A+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final ClassType clss = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		final Iterator<Attribute> attrIterator = clss.getAttributes().iterator();
		final Attribute attr1 = attrIterator.next();
		final Attribute attr2 = attrIterator.next();
		final Attribute attr3 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();
		assertEquals(1, supertypesAttr1.size());
		final Iterator<Type> superTypesAttr1Iterator = supertypesAttr1.iterator();
		assertEquals(model.getAnything().getPrototype(), HelperUtils.getReferencedType(superTypesAttr1Iterator.next()));
		
		assertEquals(0, ((SumType) attr2.getAttrType()).getSuperTypes().size());
		final Type attr2Type = ((SumType) attr2.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr2 = attr2Type.getSuperTypes();  | 
| File | 
Line | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
327 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
537 | 
		final Model model = SyntaxCheck.getInstance().getModelFromString(input);
		final Group group = model.getGroups().iterator().next();
		final ClassType klasse = (ClassType) group.getGroupElements().iterator().next();
		final SumType sum = (SumType) klasse.getAttributes().iterator().next().getAttrType();
		
		final List<Type> standardizeElements = sum.standardize().accept(new TypeVisitorReturn<List<Type>>() {
			
			@Override
			public List<Type> handle(final AtomicType atomicType) {
				return new ArrayList<>();
			}
			
			@Override
			public List<Type> handle(final CompositeType compositeType) {
				return compositeType.accept(new CompositeTypeVisitorReturn<List<Type>>() {
					
					@Override
					public List<Type> handle(final ListType list) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final MapType map) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final ProductType product) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final SumType sum2) {
						return sum2.getElements();
					}
					
					@Override
					public List<Type> handle(final ThrownType thrownType) {
						return new ArrayList<>();
					}
				});
			}
			
			@Override
			public List<Type> handle(final TypeProxy typeProxy) {
				return new ArrayList<>();
			}
		});
		
		assertEquals(4, standardizeElements.size());
		final Iterator<Type> iterator = standardizeElements.iterator();  | 
| File | 
Line | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
401 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
771 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
838 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
904 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
970 | 
		final Model model = SyntaxCheck.getInstance().getModelFromString(input);
		final Group group = model.getGroups().iterator().next();
		final ClassType klasse = (ClassType) group.getGroupElements().iterator().next();
		final SumType sum = (SumType) klasse.getAttributes().iterator().next().getAttrType();
		
		final List<Type> standardizeElements = sum.standardize().accept(new TypeVisitorReturn<List<Type>>() {
			
			@Override
			public List<Type> handle(final AtomicType atomicType) {
				return new ArrayList<>();
			}
			
			@Override
			public List<Type> handle(final CompositeType compositeType) {
				return compositeType.accept(new CompositeTypeVisitorReturn<List<Type>>() {
					
					@Override
					public List<Type> handle(final ListType list) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final MapType map) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final ProductType product) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final SumType sum2) {
						return sum2.getElements();
					}
					
					@Override
					public List<Type> handle(final ThrownType thrownType) {
						return new ArrayList<>();
					}
				});
			}
			
			@Override
			public List<Type> handle(final TypeProxy typeProxy) {
				return new ArrayList<>();
			}
		});
		
		assertEquals(2, standardizeElements.size());
	}
	
	/**
	 * A > B und A > C. {{A,B},C} => {A}
	 * 
	 * @throws Exception
	 *             {@link de.fhdw.wtf.common.exception.parser.SumIsAnythingException},
	 *             {@link de.fhdw.wtf.common.exception.editor.MultipleCheckExceptions},
	 *             {@link de.fhdw.wtf.common.exception.walker.CyclicDependencyException}, {@link InterruptedException},
	 *             {@link de.fhdw.wtf.common.exception.walker.CyclicPartDefinitionException},
	 *             {@link java.util.concurrent.ExecutionException}
	 */
	@Test
	public void testSum1() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
269 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
316 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
426 | 
						+ "B:class=A+{}; C:class=A+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final ClassType clss = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		final Iterator<Attribute> attrIterator = clss.getAttributes().iterator();
		final Attribute attr1 = attrIterator.next();
		final Attribute attr2 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();
		assertEquals(1, supertypesAttr1.size());
		final Iterator<Type> superTypesAttr1Iterator = supertypesAttr1.iterator();
		assertEquals(model.getAnything().getPrototype(), HelperUtils.getReferencedType(superTypesAttr1Iterator.next()));
		
		assertEquals(0, ((SumType) attr2.getAttrType()).getSuperTypes().size());
		final Collection<Type> supertypesAttr2 =
				((SumType) ((SumType) attr2.getAttrType()).getPrototype()).getSuperTypes();
		assertEquals(1, supertypesAttr2.size());
		final Iterator<Type> superTypesAttr2Iterator = supertypesAttr2.iterator();
		assertEquals(clss, HelperUtils.getReferencedType(superTypesAttr2Iterator.next()));  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestAnalyzeInheritanceTreesTask.java | 
353 | 
| de/fhdw/wtf/walker/tasks/test/TestAnalyzeInheritanceTreesTask.java | 
402 | 
		final Model model = SyntaxCheck.getInstance().getModelFromString(input);
		
		final Iterator<Type> iterator = model.getConstructorCallDependencies().keySet().iterator();
		while (iterator.hasNext()) {
			final Type current = iterator.next();
			
			switch (current.getTypeString()) {
			case "group1>A":
				assertTrue(true);
				assertEquals(0, model.getConstructorCallDependencies().get(current).size());
				break;
			case "group1>B":
				final Iterator<Type> bIterator = model.getConstructorCallDependencies().get(current).iterator();
				assertEquals("group1>A", bIterator.next().toString());
				assertEquals(1, model.getConstructorCallDependencies().get(current).size());
				break;
			case "group1>C":
				final Iterator<Type> cIterator = model.getConstructorCallDependencies().get(current).iterator();
				assertEquals("group1>A", cIterator.next().toString());
				assertEquals(1, model.getConstructorCallDependencies().get(current).size());
				break;
			case "group1>D":
				final Iterator<Type> aIterator = model.getConstructorCallDependencies().get(current).iterator();
				assertEquals("group1>A", aIterator.next().toString());
				assertEquals("group1>C", aIterator.next().toString());
				assertEquals("group1>B", aIterator.next().toString());
				assertEquals(3, model.getConstructorCallDependencies().get(current).size());
				break;
			default:
				fail();
				break;
			}
		}
	}
	
	/**
	 * Tests the Diamond changed the order of the superConstructor-calls.
	 * 
	 * Model: group1:group = [A :class={();}; B:class= A + {()=A();}; C:class= A + {()=A();}; D:class= B + C
	 * +{()=A()+C()+B();};];
	 * 
	 * @throws Exception
	 *             x
	 */
	@Test
	public void testDiamondWithChangedOrderInSuperconstructorCall() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
222 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
269 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
316 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
426 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
473 | 
						+ "Attribute2:{String,Integer};};" + "Class2:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final ClassType clss = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		final Iterator<Attribute> attrIterator = clss.getAttributes().iterator();
		final Attribute attr1 = attrIterator.next();
		final Attribute attr2 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();
		assertEquals(1, supertypesAttr1.size());
		final Iterator<Type> superTypesAttr1Iterator = supertypesAttr1.iterator();
		assertEquals(model.getAnything().getPrototype(), HelperUtils.getReferencedType(superTypesAttr1Iterator.next()));
		
		assertEquals(0, ((SumType) attr2.getAttrType()).getSuperTypes().size());
		final Collection<Type> supertypesAttr2 =
				((SumType) ((SumType) attr2.getAttrType()).getPrototype()).getSuperTypes();
		assertEquals(1, supertypesAttr2.size());
		final Iterator<Type> superTypesAttr2Iterator = supertypesAttr2.iterator();
		assertEquals(attr1Type, superTypesAttr2Iterator.next());  | 
| File | 
Line | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
55 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
123 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
259 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
467 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
703 | 
		final Model model = SyntaxCheck.getInstance().getModelFromString(input);
		final Group group = model.getGroups().iterator().next();
		final ClassType klasse = (ClassType) group.getGroupElements().iterator().next();
		final SumType sum = (SumType) klasse.getAttributes().iterator().next().getAttrType();
		
		final List<Type> standardizeElements = sum.standardize().accept(new TypeVisitorReturn<List<Type>>() {
			
			@Override
			public List<Type> handle(final AtomicType atomicType) {
				return new ArrayList<>();
			}
			
			@Override
			public List<Type> handle(final CompositeType compositeType) {
				return compositeType.accept(new CompositeTypeVisitorReturn<List<Type>>() {
					
					@Override
					public List<Type> handle(final ListType list) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final MapType map) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final ProductType product) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final SumType sum2) {
						return sum2.getElements();
					}
					
					@Override
					public List<Type> handle(final ThrownType thrownType) {
						return new ArrayList<>();
					}
				});
			}
			
			@Override
			public List<Type> handle(final TypeProxy typeProxy) {
				return new ArrayList<>();
			}
		});
		
		assertEquals(1, standardizeElements.size());
		assertEquals(sum.getElements().iterator().next(), standardizeElements.iterator().next());  | 
| File | 
Line | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1036 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1106 | 
		final Model model = SyntaxCheck.getInstance().getModelFromString(input);
		final Group group = model.getGroups().iterator().next();
		final ClassType klasse = (ClassType) group.getGroupElements().iterator().next();
		final SumType sum = (SumType) klasse.getAttributes().iterator().next().getAttrType();
		try {
			sum.standardize().accept(new TypeVisitorReturn<List<Type>>() {
				
				@Override
				public List<Type> handle(final AtomicType atomicType) {
					return new ArrayList<>();
				}
				
				@Override
				public List<Type> handle(final CompositeType compositeType) {
					return compositeType.accept(new CompositeTypeVisitorReturn<List<Type>>() {
						
						@Override
						public List<Type> handle(final ListType list) {
							return new ArrayList<>();
						}
						
						@Override
						public List<Type> handle(final MapType map) {
							return new ArrayList<>();
						}
						
						@Override
						public List<Type> handle(final ProductType product) {
							return new ArrayList<>();
						}
						
						@Override
						public List<Type> handle(final SumType sum2) {
							return sum2.getElements();
						}
						
						@Override
						public List<Type> handle(final ThrownType thrownType) {
							return new ArrayList<>();
						}
					});
				}
				
				@Override
				public List<Type> handle(final TypeProxy typeProxy) {
					return new ArrayList<>();
				}
			});
			
			fail();
		} catch (final SumIsAnythingException e) {
			// Nothing
		}
	}
	
	/**
	 * A > B. {{Anything,C},A,B} => Summe "Anything"
	 * 
	 * @throws Exception
	 *             {@link de.fhdw.wtf.common.exception.parser.SumIsAnythingException},
	 *             {@link de.fhdw.wtf.common.exception.editor.MultipleCheckExceptions},
	 *             {@link de.fhdw.wtf.common.exception.walker.CyclicDependencyException}, {@link InterruptedException},
	 *             {@link de.fhdw.wtf.common.exception.walker.CyclicPartDefinitionException},
	 *             {@link java.util.concurrent.ExecutionException}
	 */
	@Test
	public void testAnything2() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1228 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1317 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1706 | 
		this.stream.add(this.bracketCloseToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType classModel =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState stringReferenceState = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		final TypeProxy stringType = TypeProxy.create(this.stringIdentifier, stringReferenceState);
		final ByNameState integerReferenceState = ByNameState.create(UnqualifiedName.create(this.integerIdentifier));
		final TypeProxy integerType = TypeProxy.create(this.integerIdentifier, integerReferenceState);
		
		final ProductElementType nameElement = ProductElementType.create("name", stringType, nameIdentifier);
		final ProductElementType countElement = ProductElementType.create("count", integerType, countIdentifier);
		final ProductType product = ProductType.create(this.bracketOpenToken);
		product.addElement(nameElement);
		product.addElement(countElement);
		
		final MapType map = MapType.create(this.stringIdentifier, stringType, product);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
255 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
221 | 
				HelperUtils.getReferencedType(model.getString().getPrototype().getSuperTypes().iterator().next()));
	}
	
	/**
	 * Group:group=[A:class={Attribute1:{String,Integer,A}; Attribute2:{B,C};}; B:class=A+{}; C:class=A+{};
	 * Class:class={};]; .
	 * 
	 * @throws Exception
	 *             Exception
	 */
	@Test
	public void testContainsInheritanceOverClassInheritanceAndSumSupertypeIsAnClass() throws Exception {
		final SimpleScannerInput input =
				new SimpleScannerInput("Group:group=[A:class={Attribute1:{String,Integer,A}; Attribute2:{B,C};}; "
						+ "B:class=A+{}; C:class=A+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final ClassType clss = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		final Iterator<Attribute> attrIterator = clss.getAttributes().iterator();
		final Attribute attr1 = attrIterator.next();
		final Attribute attr2 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();
		assertEquals(1, supertypesAttr1.size());
		final Iterator<Type> superTypesAttr1Iterator = supertypesAttr1.iterator();
		assertEquals(model.getAnything().getPrototype(), HelperUtils.getReferencedType(superTypesAttr1Iterator.next()));
		
		assertEquals(0, ((SumType) attr2.getAttrType()).getSuperTypes().size());
		final Collection<Type> supertypesAttr2 =
				((SumType) ((SumType) attr2.getAttrType()).getPrototype()).getSuperTypes();  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
412 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
380 | 
				HelperUtils.getReferencedType(model.getString().getPrototype().getSuperTypes().iterator().next()));
	}
	
	/**
	 * Group:group=[A:class={Attribute1:{String,Integer,A}; Attribute2:{C,D,E};}; B:class=A+{}; C:class=A+{};
	 * Class:class={}; D:class=B+{}; E:class=B+{};]; .
	 * 
	 * @throws Exception
	 *             Exception
	 */
	@Test
	public void testSumSupertypeIsAnClass() throws Exception {
		final SimpleScannerInput input =
				new SimpleScannerInput("Group:group=[A:class={Attribute1:{String,Integer,A}; Attribute2:{B,C};}; "
						+ "B:class=A+{}; C:class=A+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final ClassType clss = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		final Iterator<Attribute> attrIterator = clss.getAttributes().iterator();
		final Attribute attr1 = attrIterator.next();
		final Attribute attr2 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();
		assertEquals(1, supertypesAttr1.size());
		final Iterator<Type> superTypesAttr1Iterator = supertypesAttr1.iterator();
		assertEquals(model.getAnything().getPrototype(), HelperUtils.getReferencedType(superTypesAttr1Iterator.next()));
		
		assertEquals(0, ((SumType) attr2.getAttrType()).getSuperTypes().size());
		final Collection<Type> supertypesAttr2 =
				((SumType) ((SumType) attr2.getAttrType()).getPrototype()).getSuperTypes();  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
694 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
782 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1519 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1611 | 
		this.stream.add(this.bracketCloseToken);
		this.stream.add(this.asteriskToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType classModel =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState stringReferenceState = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		final TypeProxy stringType = TypeProxy.create(this.stringIdentifier, stringReferenceState);
		final ByNameState integerReferenceState = ByNameState.create(UnqualifiedName.create(this.integerIdentifier));
		final TypeProxy integerType = TypeProxy.create(this.integerIdentifier, integerReferenceState);
		
		final ProductElementType nameElement = ProductElementType.create("name", stringType, nameIdentifier);
		final ProductElementType countElement = ProductElementType.create("count", integerType, countIdentifier);
		final ProductType product = ProductType.create(this.bracketOpenToken);
		product.addElement(nameElement);
		product.addElement(countElement);
		
		final ListType list = ListType.create(this.bracketOpenToken, product);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1228 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1317 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1797 | 
		this.stream.add(this.bracketCloseToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType classModel =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState stringReferenceState = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		final TypeProxy stringType = TypeProxy.create(this.stringIdentifier, stringReferenceState);
		final ByNameState integerReferenceState = ByNameState.create(UnqualifiedName.create(this.integerIdentifier));
		final TypeProxy integerType = TypeProxy.create(this.integerIdentifier, integerReferenceState);
		
		final ProductElementType nameElement = ProductElementType.create("name", stringType, nameIdentifier);
		final ProductElementType countElement = ProductElementType.create("count", integerType, countIdentifier);
		final ProductType product = ProductType.create(this.bracketOpenToken);
		product.addElement(nameElement);
		product.addElement(countElement);
		
		final MapType map = MapType.create(this.stringIdentifier, stringType, product);  | 
| File | 
Line | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
191 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
401 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
771 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
838 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
904 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
970 | 
		final Model model = SyntaxCheck.getInstance().getModelFromString(input);
		final Group group = model.getGroups().iterator().next();
		final ClassType klasse = (ClassType) group.getGroupElements().iterator().next();
		final SumType sum = (SumType) klasse.getAttributes().iterator().next().getAttrType();
		
		final List<Type> standardizeElements = sum.standardize().accept(new TypeVisitorReturn<List<Type>>() {
			
			@Override
			public List<Type> handle(final AtomicType atomicType) {
				return new ArrayList<>();
			}
			
			@Override
			public List<Type> handle(final CompositeType compositeType) {
				return compositeType.accept(new CompositeTypeVisitorReturn<List<Type>>() {
					
					@Override
					public List<Type> handle(final ListType list) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final MapType map) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final ProductType product) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final SumType sum2) {
						return sum2.getElements();
					}
					
					@Override
					public List<Type> handle(final ThrownType thrownType) {
						return new ArrayList<>();
					}
				});
			}
			
			@Override
			public List<Type> handle(final TypeProxy typeProxy) {
				return new ArrayList<>();
			}
		});
		
		assertEquals(2, standardizeElements.size());  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1229 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1520 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1612 | 
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType classModel =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState stringReferenceState = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		final TypeProxy stringType = TypeProxy.create(this.stringIdentifier, stringReferenceState);
		final ByNameState integerReferenceState = ByNameState.create(UnqualifiedName.create(this.integerIdentifier));
		final TypeProxy integerType = TypeProxy.create(this.integerIdentifier, integerReferenceState);
		
		final ProductElementType nameElement = ProductElementType.create("name", stringType, nameIdentifier);
		final ProductElementType countElement = ProductElementType.create("count", integerType, countIdentifier);
		final ProductType product = ProductType.create(this.bracketOpenToken);
		product.addElement(nameElement);
		product.addElement(countElement);
		
		final MapType map = MapType.create(this.stringIdentifier, stringType, product);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
501 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
551 | 
	public void testNoBracketCloseExceptionAttribute() {
		this.stream = SimpleTokenStream.create();
		this.parser = Parser.create(this.stream);
		final IdentifierToken myGroup = IdentifierToken.create("MyGroup", Position.create("", 1, 1, 0));
		final IdentifierToken myClass = IdentifierToken.create("MyClass", Position.create("", 1, 1, 0));
		final IdentifierToken myAttribute = IdentifierToken.create("MyAttribute", Position.create("", 1, 1, 0));
		final IdentifierToken name = IdentifierToken.create("name", Position.create("", 1, 1, 0));
		final IdentifierToken string = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(myAttribute);
		this.stream.add(this.colonToken);
		this.stream.add(this.bracketOpenToken);
		this.stream.add(name);
		this.stream.add(this.colonToken);
		this.stream.add(string);
		this.stream.add(this.semicolonToken);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
283 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
332 | 
								+ "NaturalPerson:class=Person+{}; CorporateBody:class=Person+{};];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		final SimpleWalkerTask referencer = TypeReferencer.create(model, taskmanager);
		final SimpleWalkerTask cyclicInheritance = CyclicInheritanceCheck.create(model, taskmanager);
		cyclicInheritance.addDependency(referencer);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<OKTaskResult>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<ExceptionalTaskResult>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(1, okResult.size());
		assertEquals(1, failResult.size());
		
		final Exception exception = failResult.iterator().next().getError();
		if (exception instanceof CyclicInheritanceException) {
			final CyclicInheritanceException ex = (CyclicInheritanceException) exception;
			assertEquals(Position.create("", 1, 116, 115), ex.getStartPosition());
			assertEquals(Position.create("", 1, 122, 121), ex.getEndPos());
		} else {
			fail();
		}
	}
	
	@Test
	public void testCyclicInheritanceOverMoreClassesInSecondSupertype() throws InterruptedException,  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
166 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
559 | 
						+ "NaturalPerson:class=Person+{}; CorporateBody:class=Person+{};];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		final SimpleWalkerTask referencer = TypeReferencer.create(model, taskmanager);
		final SimpleWalkerTask cyclicInheritance = CyclicInheritanceCheck.create(model, taskmanager);
		cyclicInheritance.addDependency(referencer);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<OKTaskResult>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<ExceptionalTaskResult>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(1, okResult.size());
		assertEquals(1, failResult.size());
		
		final Exception exception = failResult.iterator().next().getError();
		if (exception instanceof CyclicInheritanceException) {
			final CyclicInheritanceException ex = (CyclicInheritanceException) exception;
			assertEquals(Position.create("", 1, 92, 91), ex.getStartPosition());
			assertEquals(Position.create("", 1, 98, 97), ex.getEndPos());
		} else {
			fail();
		}
	}
	
	@Test
	public void testInvalidTypeReference() throws InterruptedException, ExecutionException,  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
266 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
391 | 
	public void testContainsInheritanceOverClassInheritanceAndSumSupertypeIsAnClass() throws Exception {
		final SimpleScannerInput input =
				new SimpleScannerInput("Group:group=[A:class={Attribute1:{String,Integer,A}; Attribute2:{B,C};}; "
						+ "B:class=A+{}; C:class=A+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final ClassType clss = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		final Iterator<Attribute> attrIterator = clss.getAttributes().iterator();
		final Attribute attr1 = attrIterator.next();
		final Attribute attr2 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();
		assertEquals(1, supertypesAttr1.size());
		final Iterator<Type> superTypesAttr1Iterator = supertypesAttr1.iterator();
		assertEquals(model.getAnything().getPrototype(), HelperUtils.getReferencedType(superTypesAttr1Iterator.next()));
		
		assertEquals(0, ((SumType) attr2.getAttrType()).getSuperTypes().size());
		final Collection<Type> supertypesAttr2 =
				((SumType) ((SumType) attr2.getAttrType()).getPrototype()).getSuperTypes();  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
423 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
232 | 
	public void testSumSupertypeIsAnClass() throws Exception {
		final SimpleScannerInput input =
				new SimpleScannerInput("Group:group=[A:class={Attribute1:{String,Integer,A}; Attribute2:{B,C};}; "
						+ "B:class=A+{}; C:class=A+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final ClassType clss = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		final Iterator<Attribute> attrIterator = clss.getAttributes().iterator();
		final Attribute attr1 = attrIterator.next();
		final Attribute attr2 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();
		assertEquals(1, supertypesAttr1.size());
		final Iterator<Type> superTypesAttr1Iterator = supertypesAttr1.iterator();
		assertEquals(model.getAnything().getPrototype(), HelperUtils.getReferencedType(superTypesAttr1Iterator.next()));
		
		assertEquals(0, ((SumType) attr2.getAttrType()).getSuperTypes().size());
		final Collection<Type> supertypesAttr2 =
				((SumType) ((SumType) attr2.getAttrType()).getPrototype()).getSuperTypes();  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
599 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
581 | 
				HelperUtils.getReferencedType(model.getString().getPrototype().getSuperTypes().iterator().next()));
	}
	
	/**
	 * Group:group=[A:class={Attribute1:{}; Attribute2:{String,A}; Attribute3:{Integer,String};}; B:class=A+{};
	 * C:class=A+{}; Class:class={};]; .
	 * 
	 * @throws Exception
	 *             Exception
	 */
	@Test
	public void testEmptySum() throws Exception {
		final SimpleScannerInput input =
				new SimpleScannerInput(" Group:group=[A:class={Attribute1:{}; Attribute2:{String,A}; "
						+ "Attribute3:{Integer,String};}; B:class=A+{}; C:class=A+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final Iterator<GroupElement> iterator = model.getGroups().iterator().next().getGroupElements().iterator();
		
		final ClassType clssA = (ClassType) iterator.next();
		final ClassType clssB = (ClassType) iterator.next();
		final ClassType clssC = (ClassType) iterator.next();
		final ClassType clssClass = (ClassType) iterator.next();
		
		final Iterator<Attribute> attrIterator = clssA.getAttributes().iterator();
		final Attribute attr1 = attrIterator.next();
		final Attribute attr2 = attrIterator.next();
		final Attribute attr3 = attrIterator.next();
		
		final Type attr2Type = ((SumType) attr2.getAttrType()).getPrototype();
		final Type attr3Type = ((SumType) attr3.getAttrType()).getPrototype();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();  | 
| File | 
Line | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
55 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
123 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
191 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
259 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
327 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
401 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
467 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
537 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
626 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
703 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
771 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
838 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
904 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
970 | 
		final Model model = SyntaxCheck.getInstance().getModelFromString(input);
		final Group group = model.getGroups().iterator().next();
		final ClassType klasse = (ClassType) group.getGroupElements().iterator().next();
		final SumType sum = (SumType) klasse.getAttributes().iterator().next().getAttrType();
		
		final List<Type> standardizeElements = sum.standardize().accept(new TypeVisitorReturn<List<Type>>() {
			
			@Override
			public List<Type> handle(final AtomicType atomicType) {
				return new ArrayList<>();
			}
			
			@Override
			public List<Type> handle(final CompositeType compositeType) {
				return compositeType.accept(new CompositeTypeVisitorReturn<List<Type>>() {
					
					@Override
					public List<Type> handle(final ListType list) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final MapType map) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final ProductType product) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final SumType sum2) {
						return sum2.getElements();
					}
					
					@Override
					public List<Type> handle(final ThrownType thrownType) {
						return new ArrayList<>();
					}
				});
			}
			
			@Override
			public List<Type> handle(final TypeProxy typeProxy) {
				return new ArrayList<>();
			}
		});
		
		assertEquals(1, standardizeElements.size());  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
695 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
783 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1798 | 
		this.stream.add(this.asteriskToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType classModel =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState stringReferenceState = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		final TypeProxy stringType = TypeProxy.create(this.stringIdentifier, stringReferenceState);
		final ByNameState integerReferenceState = ByNameState.create(UnqualifiedName.create(this.integerIdentifier));
		final TypeProxy integerType = TypeProxy.create(this.integerIdentifier, integerReferenceState);
		
		final ProductElementType nameElement = ProductElementType.create("name", stringType, nameIdentifier);
		final ProductElementType countElement = ProductElementType.create("count", integerType, countIdentifier);
		final ProductType product = ProductType.create(this.bracketOpenToken);
		product.addElement(nameElement);
		product.addElement(countElement);
		
		final ListType list = ListType.create(this.bracketOpenToken, product);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1520 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1612 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1707 | 
		this.stream.add(this.asteriskToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType classModel =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState stringReferenceState = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		final TypeProxy stringType = TypeProxy.create(this.stringIdentifier, stringReferenceState);
		final ByNameState integerReferenceState = ByNameState.create(UnqualifiedName.create(this.integerIdentifier));
		final TypeProxy integerType = TypeProxy.create(this.integerIdentifier, integerReferenceState);
		
		final ProductElementType nameElement = ProductElementType.create("name", stringType, nameIdentifier);
		final ProductElementType countElement = ProductElementType.create("count", integerType, countIdentifier);
		final ProductType product = ProductType.create(this.bracketOpenToken);
		product.addElement(nameElement);
		product.addElement(countElement);
		
		final MapType map = MapType.create(this.bracketOpenToken, product, integerType);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
182 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
274 | 
		final IdentifierToken myGroup = IdentifierToken.create("MyGroup", Position.create("", 1, 1, 0));
		final IdentifierToken myClass = IdentifierToken.create("MyClass", Position.create("", 1, 1, 0));
		final IdentifierToken myOperation = IdentifierToken.create("MyOperation", Position.create("", 1, 1, 0));
		final IdentifierToken myParameter = IdentifierToken.create("MyParameter", Position.create("", 1, 1, 0));
		final IdentifierToken string = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(myOperation);
		this.stream.add(this.colonToken);
		this.stream.add(this.doubleSquareBracketOpenToken);
		this.stream.add(this.bracketOpenToken);
		this.stream.add(myParameter);
		this.stream.add(this.colonToken);
		this.stream.add(string);
		this.stream.add(this.bracketCloseToken);
		this.stream.add(HyphenToken.create(Position.createDummyPosition()));  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
58 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
129 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
200 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
272 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
344 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
414 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
486 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
549 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
612 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
674 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
737 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
800 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
865 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
927 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
1059 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
1121 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
1184 | 
						+ "operation : [[(parameter:Integer) -> String ]];}; ];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		Model model = null;
		model = parser.parse();
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		
		final SimpleWalkerTask doubleGroupcomponent = DoubleGroupcomponentCheck.create(model, taskmanager);
		final SimpleWalkerTask doubleAttributenameCheck = DoubleAttributenameCheck.create(model, taskmanager);
		final SimpleWalkerTask referencer = TypeReferencer.create(model, taskmanager);
		final SimpleWalkerTask prototypesTask = PrototypesTask.create(model, taskmanager);
		final SimpleWalkerTask cyclicInheritance = CyclicInheritanceCheck.create(model, taskmanager);
		final SimpleWalkerTask subtypesFillTask = SubtypesFillTask.create(model, taskmanager);
		final GroupDependencyTask doubleChecks = GroupDependencyTask.create(taskmanager);
		final SimpleWalkerTask overloadingCheck = OverloadingCheck.create(model, taskmanager);
		doubleChecks.addMembers(doubleGroupcomponent, doubleAttributenameCheck);
		referencer.addDependency(doubleChecks);
		cyclicInheritance.addDependency(referencer);
		subtypesFillTask.addDependency(cyclicInheritance);
		prototypesTask.addDependency(subtypesFillTask);
		overloadingCheck.addDependency(prototypesTask);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(7, okResult.size());  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
695 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
783 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1229 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1318 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1707 | 
		this.stream.add(this.asteriskToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType classModel =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState stringReferenceState = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		final TypeProxy stringType = TypeProxy.create(this.stringIdentifier, stringReferenceState);
		final ByNameState integerReferenceState = ByNameState.create(UnqualifiedName.create(this.integerIdentifier));
		final TypeProxy integerType = TypeProxy.create(this.integerIdentifier, integerReferenceState);
		
		final ProductElementType nameElement = ProductElementType.create("name", stringType, nameIdentifier);
		final ProductElementType countElement = ProductElementType.create("count", integerType, countIdentifier);
		final ProductType product = ProductType.create(this.bracketOpenToken);
		product.addElement(nameElement);
		product.addElement(countElement);
		
		final ListType list = ListType.create(this.bracketOpenToken, product);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1520 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1612 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1798 | 
		this.stream.add(this.asteriskToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType classModel =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState stringReferenceState = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		final TypeProxy stringType = TypeProxy.create(this.stringIdentifier, stringReferenceState);
		final ByNameState integerReferenceState = ByNameState.create(UnqualifiedName.create(this.integerIdentifier));
		final TypeProxy integerType = TypeProxy.create(this.integerIdentifier, integerReferenceState);
		
		final ProductElementType nameElement = ProductElementType.create("name", stringType, nameIdentifier);
		final ProductElementType countElement = ProductElementType.create("count", integerType, countIdentifier);
		final ProductType product = ProductType.create(this.bracketOpenToken);
		product.addElement(nameElement);
		product.addElement(countElement);
		
		final MapType map = MapType.create(this.bracketOpenToken, product, integerType);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2291 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2384 | 
		this.stream.add(this.stringIdentifier);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(EndToken.create(Position.create("", 1, 1, 0)));
		
		final Model model = Model.create(groupIdentifier);
		final Vector<GroupElement> groupVector = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		model.addGroup(group);
		
		final Name className = groupName.addName(classIdentifier);
		final Collection<Attribute> attributes = new Vector<>();
		final ClassType clazz =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		groupVector.add(clazz);
		
		final ByNameState stringByName = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		final TypeProxy typeProxyString = TypeProxy.create(groupIdentifier, stringByName);
		
		final ByNameState integerByName = ByNameState.create(UnqualifiedName.create(this.integerIdentifier));
		final TypeProxy typeProxyInteger = TypeProxy.create(groupIdentifier, integerByName);
		
		final SumType sum = SumType.create(this.integerIdentifier);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
87 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
741 | 
		final SimpleScannerInput input = new SimpleScannerInput(stringInput);
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		final Vector<ClassModifier> modifiers = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, GroupToken.create(Position.create("", 1, 1, 0)));
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType clazz =
				RegularClassType.create(
						className,
						modifiers,
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState integerByName = ByNameState.create(UnqualifiedName.create(integerIdentifier));
		final TypeProxy typeProxyInteger = TypeProxy.create(integerIdentifier, integerByName);
		
		final ByNameState stringByName = ByNameState.create(UnqualifiedName.create(stringIdentifier));
		final TypeProxy typeProxyString = TypeProxy.create(stringIdentifier, stringByName);
		
		final ByNameState testByName = ByNameState.create(UnqualifiedName.create(testIdentifier));
		final TypeProxy typeProxyTest = TypeProxy.create(testIdentifier, testByName);
		
		final SumType sum1 = SumType.create(this.curlyBracketOpenToken);
		sum1.add(typeProxyInteger);
		sum1.add(typeProxyString);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
87 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
525 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
741 | 
		final SimpleScannerInput input = new SimpleScannerInput(stringInput);
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		final Vector<ClassModifier> modifiers = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, GroupToken.create(Position.create("", 1, 1, 0)));
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType clazz =
				RegularClassType.create(
						className,
						modifiers,
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState integerByName = ByNameState.create(UnqualifiedName.create(integerIdentifier));
		final TypeProxy typeProxyInteger = TypeProxy.create(integerIdentifier, integerByName);
		
		final ByNameState stringByName = ByNameState.create(UnqualifiedName.create(stringIdentifier));
		final TypeProxy typeProxyString = TypeProxy.create(stringIdentifier, stringByName);
		
		final ByNameState testByName = ByNameState.create(UnqualifiedName.create(testIdentifier));
		final TypeProxy typeProxyTest = TypeProxy.create(testIdentifier, testByName);
		
		final SumType sum1 = SumType.create(this.curlyBracketOpenToken);
		sum1.add(typeProxyInteger);
		sum1.add(typeProxyString);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
59 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
123 | 
						+ "attributeLong: Integer;" + "};" + "];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		final SimpleWalkerTask doubleGroupcomponent = DoubleGroupcomponentCheck.create(model, taskmanager);
		final TypeReferencer referencer = TypeReferencer.create(model, taskmanager);
		final SimpleWalkerTask cyclicInheritance = CyclicInheritanceCheck.create(model, taskmanager);
		final DoubleAttributenameCheck doubleAttributenameCheck = DoubleAttributenameCheck.create(model, taskmanager);
		final GroupDependencyTask inheritanceChecker = GroupDependencyTask.create(taskmanager);
		final SimpleWalkerTask baseTypeInheritanceCheck = BaseTypeInheritanceCheck.create(model, taskmanager);
		
		referencer.addDependency(doubleGroupcomponent);
		baseTypeInheritanceCheck.addDependency(referencer);
		cyclicInheritance.addDependency(referencer);
		inheritanceChecker.addMembers(cyclicInheritance, baseTypeInheritanceCheck);
		
		doubleAttributenameCheck.addDependency(inheritanceChecker);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(6, okResult.size());
		assertEquals(0, failResult.size());
	}
	
	/**
	 * "" + "group1:group=[" + "class1:class={" + "attributelong: Integer;" + "attribute: Integer;" + "};" + "];" .
	 * 
	 * @throws NoValidTokenStreamException
	 *             NoValidTokenStreamException
	 * @throws CyclicDependencyException
	 *             CyclicDependencyException
	 * @throws InterruptedException
	 *             InterruptedException
	 * @throws ExecutionException
	 *             ExecutionException
	 * @throws CyclicPartDefinitionException
	 *             CyclicPartDefinitionException
	 */
	@Test
	public void testDoubleAttributename2() throws InterruptedException, ExecutionException,  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
1023 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
1093 | 
		final ProductType productPrototyp = (ProductType) iterator2.next();
		
		expectedSupertypes = new ArrayList<>();
		final ProductType abstrProductCreated = ProductType.create(DummyToken.getInstance(), DummyToken.getInstance());
		ByReferenceState state = ByReferenceState.create(model.getString(), model.getString().getTypeName());
		TypeProxy typeProxy = TypeProxy.create(DummyToken.getInstance(), state);
		abstrProductCreated.addElement(ProductElementType.create("p$1", typeProxy, DummyToken.getInstance()));
		state = ByReferenceState.create(model.getInteger(), model.getInteger().getTypeName());
		typeProxy = TypeProxy.create(DummyToken.getInstance(), state);
		abstrProductCreated.addElement(ProductElementType.create("p$2", typeProxy, DummyToken.getInstance()));
		state = ByReferenceState.create(clssB, clssB.getName());
		typeProxy = TypeProxy.create(DummyToken.getInstance(), state);
		abstrProductCreated.addElement(ProductElementType.create("p$3", typeProxy, DummyToken.getInstance()));
		final ByReferenceState state2 = ByReferenceState.create(clss, clss.getName());
		final TypeProxy typeProxy2 = TypeProxy.create(DummyToken.getInstance(), state2);
		abstrProductCreated.addElement(ProductElementType.create("p$4", typeProxy2, DummyToken.getInstance()));
		expectedSupertypes.add(abstrProductCreated);
		expectedSupertypes.add(sum);
		expectedSupertypes.add(model.getAnything().getPrototype());
		
		this.checkSupertypes(expectedSupertypes, productPrototyp.getSuperTypes());  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
394 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
274 | 
		final IdentifierToken myGroup = IdentifierToken.create("MyGroup", Position.create("", 1, 1, 0));
		final IdentifierToken myClass = IdentifierToken.create("MyClass", Position.create("", 1, 1, 0));
		final IdentifierToken myOperation = IdentifierToken.create("MyOperation", Position.create("", 1, 1, 0));
		final IdentifierToken myParameter = IdentifierToken.create("MyParameter", Position.create("", 1, 1, 0));
		final IdentifierToken string = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(myOperation);
		this.stream.add(this.colonToken);
		this.stream.add(this.doubleSquareBracketOpenToken);
		this.stream.add(this.bracketOpenToken);
		this.stream.add(myParameter);
		this.stream.add(this.colonToken);
		this.stream.add(string);
		this.stream.add(this.arrowToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1106 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1181 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1253 | 
				new SimpleScannerInput("Group1:group=[A:class={op:[[(s:String)->{}]];s:String;();};];");
		final VerboseTokenStream output = new VerboseTokenStream(SimpleTokenStream.create());
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		
		final IdentifierToken group1IdentifierToken = IdentifierToken.create("Group1", Position.create("", 1, 1, 0));
		final IdentifierToken aIdentifierToken = IdentifierToken.create("A", Position.create("", 1, 1, 0));
		final IdentifierToken sIdentifierToken = IdentifierToken.create("s", Position.create("", 1, 1, 1));
		final IdentifierToken op = IdentifierToken.create("op", Position.create("", 1, 1, 0));
		
		final Vector<GroupElement> group1Vector = new Vector<>();
		final Vector<Constructor> constructors = new Vector<>();
		final Vector<Operation> operations = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name group1Name = UnqualifiedName.create(group1IdentifierToken);
		final Group group1 = Group.create(group1Name, group1Vector, group1IdentifierToken);
		
		final Name aName = group1Name.addName(aIdentifierToken);
		final ClassType aClass =
				RegularClassType.create(
						aName,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						operations,
						constructors,
						aIdentifierToken,
						
						new Vector<ClassType>());
		group1Vector.add(aClass);
		
		final ProductType aProduct = ProductType.create(this.bracketOpenToken);
		final ProductType sProduct = ProductType.create(this.bracketOpenToken);
		
		final TypeProxy stringType =  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
59 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
123 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
320 | 
						+ "attributeLong: Integer;" + "};" + "];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		final SimpleWalkerTask doubleGroupcomponent = DoubleGroupcomponentCheck.create(model, taskmanager);
		final TypeReferencer referencer = TypeReferencer.create(model, taskmanager);
		final SimpleWalkerTask cyclicInheritance = CyclicInheritanceCheck.create(model, taskmanager);
		final DoubleAttributenameCheck doubleAttributenameCheck = DoubleAttributenameCheck.create(model, taskmanager);
		final GroupDependencyTask inheritanceChecker = GroupDependencyTask.create(taskmanager);
		final SimpleWalkerTask baseTypeInheritanceCheck = BaseTypeInheritanceCheck.create(model, taskmanager);
		
		referencer.addDependency(doubleGroupcomponent);
		baseTypeInheritanceCheck.addDependency(referencer);
		cyclicInheritance.addDependency(referencer);
		inheritanceChecker.addMembers(cyclicInheritance, baseTypeInheritanceCheck);
		
		doubleAttributenameCheck.addDependency(inheritanceChecker);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(6, okResult.size());
		assertEquals(0, failResult.size());
	}
	
	/**
	 * "" + "group1:group=[" + "class1:class={" + "attributelong: Integer;" + "attribute: Integer;" + "};" + "];" .
	 * 
	 * @throws NoValidTokenStreamException
	 *             NoValidTokenStreamException
	 * @throws CyclicDependencyException
	 *             CyclicDependencyException
	 * @throws InterruptedException
	 *             InterruptedException
	 * @throws ExecutionException
	 *             ExecutionException
	 * @throws CyclicPartDefinitionException
	 *             CyclicPartDefinitionException
	 */
	@Test
	public void testDoubleAttributename2() throws InterruptedException, ExecutionException,  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
256 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
386 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
452 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
517 | 
						+ "class2:class={" + "attribute: Integer;" + "};" + "];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		final SimpleWalkerTask doubleGroupcomponent = DoubleGroupcomponentCheck.create(model, taskmanager);
		final TypeReferencer referencer = TypeReferencer.create(model, taskmanager);
		final SimpleWalkerTask cyclicInheritance = CyclicInheritanceCheck.create(model, taskmanager);
		final DoubleAttributenameCheck doubleAttributenameCheck = DoubleAttributenameCheck.create(model, taskmanager);
		final GroupDependencyTask inheritanceChecker = GroupDependencyTask.create(taskmanager);
		final SimpleWalkerTask baseTypeInheritanceCheck = BaseTypeInheritanceCheck.create(model, taskmanager);
		
		referencer.addDependency(doubleGroupcomponent);
		cyclicInheritance.addDependency(referencer);
		baseTypeInheritanceCheck.addDependency(referencer);
		inheritanceChecker.addMembers(cyclicInheritance, baseTypeInheritanceCheck);
		
		doubleAttributenameCheck.addDependency(inheritanceChecker);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(6, okResult.size());
		assertEquals(0, failResult.size());
	}
	
	/**
	 * group1:group=[class1:class=class2+{attribute: Integer;};class2:class={attribute: Integer;};]; .
	 * 
	 * @throws NoValidTokenStreamException
	 *             NoValidTokenStreamException
	 * @throws CyclicDependencyException
	 *             CyclicDependencyException
	 * @throws InterruptedException
	 *             InterruptedException
	 * @throws ExecutionException
	 *             ExecutionException
	 * @throws CyclicPartDefinitionException
	 *             CyclicPartDefinitionException
	 */
	@Test
	public void testDoubleAttributenameInInheritance1() throws InterruptedException, ExecutionException,  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2209 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2292 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2385 | 
		this.stream.add(this.stringIdentifier);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(EndToken.create(Position.create("", 1, 1, 0)));
		
		final Model model = Model.create(groupIdentifier);
		final Vector<GroupElement> groupVector = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		model.addGroup(group);
		
		final Name className = groupName.addName(classIdentifier);
		final Collection<Attribute> attributes = new Vector<>();
		final ClassType clazz =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		groupVector.add(clazz);
		
		final ByNameState stringByName = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		final TypeProxy typeProxyString = TypeProxy.create(groupIdentifier, stringByName);
		
		final ByNameState integerByName = ByNameState.create(UnqualifiedName.create(this.integerIdentifier));
		final TypeProxy typeProxyInteger = TypeProxy.create(groupIdentifier, integerByName);
		
		final MapType map1 = MapType.create(this.integerIdentifier, typeProxyInteger, typeProxyInteger);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2382 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2571 | 
		this.stream.add(trueIdentifier);
		this.stream.add(this.commaToken);
		this.stream.add(falseIdentifier);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(EndToken.create(Position.create("", 1, 1, 0)));
		
		final Model model = Model.create(groupIdentifier);
		final Vector<GroupElement> groupVector = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		model.addGroup(group);
		
		final Name className = groupName.addName(classIdentifier);
		final Collection<Attribute> attributes = new Vector<>();
		final ClassType clazz =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		groupVector.add(clazz);
		
		final ByNameState stringByName = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		final TypeProxy typeProxyString = TypeProxy.create(groupIdentifier, stringByName);
		
		final ByNameState integerByName = ByNameState.create(UnqualifiedName.create(this.integerIdentifier));  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
269 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
316 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
426 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
473 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
190 | 
						+ "B:class=A+{}; C:class=A+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final ClassType clss = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		final Iterator<Attribute> attrIterator = clss.getAttributes().iterator();
		final Attribute attr1 = attrIterator.next();
		final Attribute attr2 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();
		assertEquals(1, supertypesAttr1.size());
		final Iterator<Type> superTypesAttr1Iterator = supertypesAttr1.iterator();
		assertEquals(model.getAnything().getPrototype(), HelperUtils.getReferencedType(superTypesAttr1Iterator.next()));
		
		assertEquals(0, ((SumType) attr2.getAttrType()).getSuperTypes().size());
		final Collection<Type> supertypesAttr2 =
				((SumType) ((SumType) attr2.getAttrType()).getPrototype()).getSuperTypes();
		assertEquals(1, supertypesAttr2.size());  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
316 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
235 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
394 | 
						+ "B:class=A+{}; C:class=A+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final ClassType clss = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		final Iterator<Attribute> attrIterator = clss.getAttributes().iterator();
		final Attribute attr1 = attrIterator.next();
		final Attribute attr2 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();
		assertEquals(1, supertypesAttr1.size());
		final Iterator<Type> superTypesAttr1Iterator = supertypesAttr1.iterator();
		assertEquals(model.getAnything().getPrototype(), HelperUtils.getReferencedType(superTypesAttr1Iterator.next()));
		
		assertEquals(0, ((SumType) attr2.getAttrType()).getSuperTypes().size());
		final Collection<Type> supertypesAttr2 =
				((SumType) ((SumType) attr2.getAttrType()).getPrototype()).getSuperTypes();  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
1017 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
928 | 
		this.checkSupertypes(expectedSupertypes, supertypesAttr1);
		
		assertEquals(1, clssA.getSuperTypes().size());
		assertEquals(1, clssB.getSuperTypes().size());
		assertEquals(1, model.getString().getSuperTypes().size());
		assertEquals(1, model.getInteger().getSuperTypes().size());
		
	}
	
	/**
	 * Group:group=[A:class={Attribute1:(p1:String, p2: Integer, p3:B, p4:Class);}; B:class=A+{}; C:class=B+{};
	 * D:class=B+{}; Class:class={};]; .
	 * 
	 * @throws Exception
	 *             Exception
	 */
	@Test
	public void testProductHierarchie2() throws Exception {
		final SimpleScannerInput input =
				new SimpleScannerInput(
						"Group:group=[A:class={Attribute1:(p1:String, p2: Integer, p3:B, p4:Class);}; B:class=A+{}; C:class=B+{}; "
								+ "D:class=B+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final Iterator<GroupElement> iterator = model.getGroups().iterator().next().getGroupElements().iterator();
		final ClassType clssA = (ClassType) iterator.next();
		final ClassType clssB = (ClassType) iterator.next();
		
		final Iterator<Attribute> attrIterator = clssA.getAttributes().iterator();
		
		final Attribute attr1 = attrIterator.next();
		
		assertEquals(0, attr1.getAttrType().getSuperTypes().size());
		final Type attr1Type = attr1.getAttrType().getPrototype();
		final Collection<Type> supertypesAttr1 = attr1Type.getSuperTypes();
		
		final Collection<Type> expectedSupertypes = new ArrayList<>();
		expectedSupertypes.add(((ProductType) attr1Type).getAbstractPrototype());  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1018 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1794 | 
		this.stream.add(this.integerIdentifier);
		this.stream.add(this.asteriskToken);
		this.stream.add(this.arrowToken);
		this.stream.add(this.stringIdentifier);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType classModel =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState stringReferenceState = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		final TypeProxy stringType = TypeProxy.create(this.stringIdentifier, stringReferenceState);
		final ByNameState integerReferenceState = ByNameState.create(UnqualifiedName.create(this.integerIdentifier));
		final TypeProxy integerType = TypeProxy.create(this.integerIdentifier, integerReferenceState);
		
		final ListType list = ListType.create(this.integerIdentifier, integerType);   | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
256 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
386 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
452 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
517 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
583 | 
						+ "class2:class={" + "attribute: Integer;" + "};" + "];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		final SimpleWalkerTask doubleGroupcomponent = DoubleGroupcomponentCheck.create(model, taskmanager);
		final TypeReferencer referencer = TypeReferencer.create(model, taskmanager);
		final SimpleWalkerTask cyclicInheritance = CyclicInheritanceCheck.create(model, taskmanager);
		final DoubleAttributenameCheck doubleAttributenameCheck = DoubleAttributenameCheck.create(model, taskmanager);
		final GroupDependencyTask inheritanceChecker = GroupDependencyTask.create(taskmanager);
		final SimpleWalkerTask baseTypeInheritanceCheck = BaseTypeInheritanceCheck.create(model, taskmanager);
		
		referencer.addDependency(doubleGroupcomponent);
		cyclicInheritance.addDependency(referencer);
		baseTypeInheritanceCheck.addDependency(referencer);
		inheritanceChecker.addMembers(cyclicInheritance, baseTypeInheritanceCheck);
		
		doubleAttributenameCheck.addDependency(inheritanceChecker);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(6, okResult.size());
		assertEquals(0, failResult.size());
	}  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
222 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
473 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
190 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
235 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
394 | 
						+ "Attribute2:{String,Integer};};" + "Class2:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final ClassType clss = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		final Iterator<Attribute> attrIterator = clss.getAttributes().iterator();
		final Attribute attr1 = attrIterator.next();
		final Attribute attr2 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();
		assertEquals(1, supertypesAttr1.size());
		final Iterator<Type> superTypesAttr1Iterator = supertypesAttr1.iterator();
		assertEquals(model.getAnything().getPrototype(), HelperUtils.getReferencedType(superTypesAttr1Iterator.next()));
		
		assertEquals(0, ((SumType) attr2.getAttrType()).getSuperTypes().size());
		final Collection<Type> supertypesAttr2 =
				((SumType) ((SumType) attr2.getAttrType()).getPrototype()).getSuperTypes();  | 
| File | 
Line | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1608 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
2060 | 
		actualSum.add(TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(a))));
		actualSum.add(ThrownType.create(
				dummyToken,
				TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(b)))));
		
		final List<Type> standardizeElements = actualSum.standardize().accept(new TypeVisitorReturn<List<Type>>() {
			
			@Override
			public List<Type> handle(final AtomicType atomicType) {
				return new ArrayList<>();
			}
			
			@Override
			public List<Type> handle(final CompositeType compositeType) {
				return compositeType.accept(new CompositeTypeVisitorReturn<List<Type>>() {
					
					@Override
					public List<Type> handle(final ListType list) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final MapType map) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final ProductType product) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final SumType sum2) {
						return sum2.getElements();
					}
					
					@Override
					public List<Type> handle(final ThrownType thrownType) {
						return new ArrayList<>();
					}
				});
			}
			
			@Override
			public List<Type> handle(final TypeProxy typeProxy) {
				return new ArrayList<>();
			}
		});
		
		// Prepare Expected
		final SumType expectedSum = SumType.create(dummyToken);
		expectedSum.add(TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(a))));  | 
| File | 
Line | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1533 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
2063 | 
		actualSum.add(TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(b))));
		
		final List<Type> standardizeElements = actualSum.standardize().accept(new TypeVisitorReturn<List<Type>>() {
			
			@Override
			public List<Type> handle(final AtomicType atomicType) {
				return new ArrayList<>();
			}
			
			@Override
			public List<Type> handle(final CompositeType compositeType) {
				return compositeType.accept(new CompositeTypeVisitorReturn<List<Type>>() {
					
					@Override
					public List<Type> handle(final ListType list) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final MapType map) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final ProductType product) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final SumType sum2) {
						return sum2.getElements();
					}
					
					@Override
					public List<Type> handle(final ThrownType thrownType) {
						return new ArrayList<>();
					}
				});
			}
			
			@Override
			public List<Type> handle(final TypeProxy typeProxy) {
				return new ArrayList<>();
			}
		});
		
		// Prepare Expected
		final SumType expectedSum = SumType.create(dummyToken);
		expectedSum.add(TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(b))));
		expectedSum.add(ThrownType.create(
				dummyToken,
				TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(a)))));  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
156 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
173 | 
		this.colonToken = ColonToken.create(Position.create("", 1, 1, 0));
		this.groupToken = GroupToken.create(Position.create("", 1, 1, 0));
		this.equalToken = EqualToken.create(Position.create("", 1, 1, 0));
		this.squareBracketOpenToken = SquareBracketOpenToken.create(Position.create("", 1, 1, 0));
		this.squareBracketCloseToken = SquareBracketCloseToken.create(Position.create("", 1, 1, 0));
		this.bracketOpenToken = BracketOpenToken.create(Position.create("", 1, 1, 0));
		this.bracketCloseToken = BracketCloseToken.create(Position.create("", 1, 1, 0));
		this.semicolonToken = SemicolonToken.create(Position.create("", 1, 1, 0));
		this.classToken = ClassToken.create(Position.create("", 1, 1, 0));
		this.curlyBracketOpenToken = CurlyBracketOpenToken.create(Position.create("", 1, 1, 0));
		this.curlyBracketCloseToken = CurlyBracketCloseToken.create(Position.create("", 1, 1, 0));
		this.endToken = EndToken.create(Position.create("", 1, 1, 0));
		this.abstractToken = AbstractToken.create(Position.create("", 1, 1, 0));
		this.commaToken = CommaToken.create(Position.create("", 1, 1, 0));  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
671 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
650 | 
		this.checkSupertypes(expectedSupertypes, model.getString().getPrototype().getSuperTypes());
	}
	
	/**
	 * Group:group=[A:class={Attribute1:{}; Attribute2:{String,A,Anything}; Attribute3:{Integer,String};}; B:class=A+{};
	 * C:class=A+{}; Class:class={};]; .
	 * 
	 * @throws Exception
	 *             Exception
	 */
	@Test
	public void testEmptySum2() throws Exception {
		final SimpleScannerInput input =
				new SimpleScannerInput(" Group:group=[A:class={Attribute1:{}; Attribute2:{String,A,Anything}; "
						+ "Attribute3:{Integer,String};}; B:class=A+{}; C:class=A+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final Iterator<GroupElement> iterator = model.getGroups().iterator().next().getGroupElements().iterator();
		
		final ClassType clssA = (ClassType) iterator.next();
		final ClassType clssB = (ClassType) iterator.next();
		final ClassType clssC = (ClassType) iterator.next();
		final ClassType clssClass = (ClassType) iterator.next();
		
		final Iterator<Attribute> attrIterator = clssA.getAttributes().iterator();
		final Attribute attr1 = attrIterator.next();
		final Attribute attr2 = attrIterator.next();
		final Attribute attr3 = attrIterator.next();
		
		final Type attr3Type = ((SumType) attr3.getAttrType()).getPrototype();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestModels.java | 
122 | 
| de/fhdw/wtf/parser/test/TestModels.java | 
198 | 
		stream.add(this.squareBracketOpenToken);
		stream.add(class1Identifier);
		stream.add(this.colonToken);
		stream.add(this.classToken);
		stream.add(this.equalToken);
		stream.add(this.curlyBracketOpenToken);
		stream.add(this.curlyBracketCloseToken);
		stream.add(this.semicolonToken);
		stream.add(this.squareBracketCloseToken);
		stream.add(this.semicolonToken);
		stream.add(group2Identifier);
		stream.add(this.colonToken);
		stream.add(this.groupToken);
		stream.add(this.equalToken);
		stream.add(this.squareBracketOpenToken);
		stream.add(class2Identifier);
		stream.add(this.colonToken);
		stream.add(this.classToken);
		stream.add(this.equalToken);
		stream.add(this.curlyBracketOpenToken);
		stream.add(this.curlyBracketCloseToken);
		stream.add(this.semicolonToken);
		stream.add(class3Identifier);
		stream.add(this.colonToken);
		stream.add(this.classToken);
		stream.add(this.equalToken);
		stream.add(this.curlyBracketOpenToken);
		stream.add(this.curlyBracketCloseToken);
		stream.add(this.semicolonToken);
		stream.add(this.squareBracketCloseToken);
		stream.add(this.semicolonToken);
		stream.add(this.endToken);
		
		final Model model = parser.parse();
		final Tuple<Collection<ClassType>, Collection<Group>> groupsClasses = model.calcAllGroupsAndClasses();
		assertEquals(3, groupsClasses.getFirst().size());   | 
| File | 
Line | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
87 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
525 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
625 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
741 | 
		final SimpleScannerInput input = new SimpleScannerInput(stringInput);
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		final Vector<ClassModifier> modifiers = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, GroupToken.create(Position.create("", 1, 1, 0)));
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType clazz =
				RegularClassType.create(
						className,
						modifiers,
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState integerByName = ByNameState.create(UnqualifiedName.create(integerIdentifier));
		final TypeProxy typeProxyInteger = TypeProxy.create(integerIdentifier, integerByName);
		
		final ByNameState stringByName = ByNameState.create(UnqualifiedName.create(stringIdentifier));
		final TypeProxy typeProxyString = TypeProxy.create(stringIdentifier, stringByName);
		
		final ByNameState testByName = ByNameState.create(UnqualifiedName.create(testIdentifier));
		final TypeProxy typeProxyTest = TypeProxy.create(testIdentifier, testByName);
		
		final SumType sum1 = SumType.create(this.curlyBracketOpenToken);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
159 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
327 | 
						"Group:group=[Klasse:class={operation : [[(parameter:Integer) -> String ]] abstract;}; Klasse2:class={operation : [[(parameter:Integer) -> String ]] abstract;}abstract;];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		Model model = null;
		model = parser.parse();
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		AbstractOperationsCheck.create(model, taskmanager);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(0, okResult.size());
		assertEquals(1, failResult.size());
		
		final Exception exception = failResult.iterator().next().getError();
		if (exception instanceof AbstractOperationsException) {
			final AbstractOperationsException ex = (AbstractOperationsException) exception;
			assertEquals(Position.create("", 1, 28, 27), ex.getStartPosition());
			assertEquals(Position.create("", 1, 84, 83), ex.getEndPos());
		} else {
			fail();
		}
	}
	
	/**
	 * Group:group=[Klasse:class={operation : [[(parameter:Integer) -> String ]] ;}; Klasse2:class={operation :
	 * [[(parameter:Integer) -> String ]] abstract;};]; .
	 * 
	 * @throws InterruptedException
	 * @throws ExecutionException
	 * @throws NoValidTokenStreamException
	 * @throws CyclicDependencyException
	 */
	@Test
	public void testAbstractOperationInNotAbstractClass4() throws InterruptedException, ExecutionException,  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
1110 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
1179 | 
		final ProductType productPrototyp = (ProductType) iterator2.next();
		
		expectedSupertypes = new ArrayList<>();
		final ProductType abstrProductCreated = ProductType.create(DummyToken.getInstance(), DummyToken.getInstance());
		ByReferenceState state = ByReferenceState.create(model.getString(), model.getString().getTypeName());
		TypeProxy typeProxy = TypeProxy.create(DummyToken.getInstance(), state);
		abstrProductCreated.addElement(ProductElementType.create("p$1", typeProxy, DummyToken.getInstance()));
		state = ByReferenceState.create(model.getInteger(), model.getInteger().getTypeName());
		typeProxy = TypeProxy.create(DummyToken.getInstance(), state);
		abstrProductCreated.addElement(ProductElementType.create("p$2", typeProxy, DummyToken.getInstance()));
		state = ByReferenceState.create(clssB, clssB.getName());
		typeProxy = TypeProxy.create(DummyToken.getInstance(), state);
		abstrProductCreated.addElement(ProductElementType.create("p$3", typeProxy, DummyToken.getInstance()));
		final ByReferenceState state2 = ByReferenceState.create(clss, clss.getName());
		final TypeProxy typeProxy2 = TypeProxy.create(DummyToken.getInstance(), state2);
		abstrProductCreated.addElement(ProductElementType.create("p$4", typeProxy2, DummyToken.getInstance()));
		expectedSupertypes.add(abstrProductCreated);
		expectedSupertypes.add(sum);
		
		this.checkSupertypes(expectedSupertypes, productPrototyp.getSuperTypes());  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
179 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
333 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
391 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
446 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
659 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
777 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
1058 | 
	public void testNoArrowException() {
		this.stream = SimpleTokenStream.create();
		this.parser = Parser.create(this.stream);
		final IdentifierToken myGroup = IdentifierToken.create("MyGroup", Position.create("", 1, 1, 0));
		final IdentifierToken myClass = IdentifierToken.create("MyClass", Position.create("", 1, 1, 0));
		final IdentifierToken myOperation = IdentifierToken.create("MyOperation", Position.create("", 1, 1, 0));
		final IdentifierToken myParameter = IdentifierToken.create("MyParameter", Position.create("", 1, 1, 0));
		final IdentifierToken string = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(myOperation);
		this.stream.add(this.colonToken);
		this.stream.add(this.doubleSquareBracketOpenToken);
		this.stream.add(this.bracketOpenToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
944 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1019 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1704 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1795 | 
		this.stream.add(this.integerIdentifier);
		this.stream.add(this.arrowToken);
		this.stream.add(this.stringIdentifier);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType classModel =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState stringReferenceState = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		final TypeProxy stringType = TypeProxy.create(this.stringIdentifier, stringReferenceState);
		final ByNameState integerReferenceState = ByNameState.create(UnqualifiedName.create(this.integerIdentifier));
		final TypeProxy integerType = TypeProxy.create(this.integerIdentifier, integerReferenceState);
		
		final MapType map = MapType.create(this.integerIdentifier, integerType, stringType);   | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestBaseTypeInheritanceCheck.java | 
52 | 
| de/fhdw/wtf/walker/tasks/test/TestBaseTypeInheritanceCheck.java | 
110 | 
		final SimpleScannerInput input = new SimpleScannerInput("personGroup:group=[Person:class=Integer+{};];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		final SimpleWalkerTask referencer = TypeReferencer.create(model, taskmanager);
		final SimpleWalkerTask baseTypeInheritanceCheck = BaseTypeInheritanceCheck.create(model, taskmanager);
		baseTypeInheritanceCheck.addDependency(referencer);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(1, okResult.size());
		assertEquals(1, failResult.size());
		
		final Exception exception = failResult.iterator().next().getError();
		if (exception instanceof BaseTypeInheritanceException) {
			final BaseTypeInheritanceException ex = (BaseTypeInheritanceException) exception;
			assertEquals(Position.create("", 1, 33, 32), ex.getStartPosition());
			assertEquals(Position.create("", 1, 40, 39), ex.getEndPos());  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1077 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1154 | 
	public void testAttributeWithListOfMap() throws Exception {
		final IdentifierToken groupIdentifier = IdentifierToken.create("Group", Position.create("", 1, 1, 0));
		final IdentifierToken classIdentifier = IdentifierToken.create("Class", Position.create("", 1, 1, 0));
		final IdentifierToken attributeIdentifier = IdentifierToken.create("Attribute", Position.create("", 1, 1, 0));
		
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(attributeIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.integerIdentifier);
		this.stream.add(this.arrowToken);
		this.stream.add(this.stringIdentifier);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.asteriskToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1877 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1948 | 
		this.stream.add(PriorToken.create(Position.create("", 0 + 1, 0 + 1, 0)));
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType classModel =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState attributeReferenceState = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		final TypeProxy type = TypeProxy.create(this.stringIdentifier, attributeReferenceState);
		
		final Vector<AttributeModifier> modifiers = new Vector<>();
		modifiers.add(AttributeModifierPrior.create(PriorToken.create(Position.create("", 0, 0, 0))));  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
200 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
798 | 
	public void testSimpleOperationWithoutParameters() throws Exception {
		final IdentifierToken myGroup = IdentifierToken.create("MyGroup", Position.create("", 1, 1, 0));
		final IdentifierToken myClass = IdentifierToken.create("MyClass", Position.create("", 1, 1, 0));
		final IdentifierToken myOperation = IdentifierToken.create("MyOperation", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(myOperation);
		this.stream.add(this.colonToken);
		this.stream.add(this.doubleSquareBracketOpenToken);
		this.stream.add(this.bracketOpenToken);
		this.stream.add(this.bracketCloseToken);
		this.stream.add(this.arrowToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.doubleSquareBracketCloseToken);
		this.stream.add(this.semicolonToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
87 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
425 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
525 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
625 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
741 | 
		final SimpleScannerInput input = new SimpleScannerInput(stringInput);
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		final Vector<ClassModifier> modifiers = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, GroupToken.create(Position.create("", 1, 1, 0)));
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType clazz =
				RegularClassType.create(
						className,
						modifiers,
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState integerByName = ByNameState.create(UnqualifiedName.create(integerIdentifier));
		final TypeProxy typeProxyInteger = TypeProxy.create(integerIdentifier, integerByName);
		
		final ByNameState stringByName = ByNameState.create(UnqualifiedName.create(stringIdentifier));
		final TypeProxy typeProxyString = TypeProxy.create(stringIdentifier, stringByName);
		
		final ByNameState testByName = ByNameState.create(UnqualifiedName.create(testIdentifier));
		final TypeProxy typeProxyTest = TypeProxy.create(testIdentifier, testByName);
		
		final SumType sum1 = SumType.create(this.curlyBracketOpenToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
87 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
320 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
425 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
525 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
625 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
741 | 
		final SimpleScannerInput input = new SimpleScannerInput(stringInput);
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		final Vector<ClassModifier> modifiers = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, GroupToken.create(Position.create("", 1, 1, 0)));
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType clazz =
				RegularClassType.create(
						className,
						modifiers,
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState integerByName = ByNameState.create(UnqualifiedName.create(integerIdentifier));
		final TypeProxy typeProxyInteger = TypeProxy.create(integerIdentifier, integerByName);
		
		final ByNameState stringByName = ByNameState.create(UnqualifiedName.create(stringIdentifier));
		final TypeProxy typeProxyString = TypeProxy.create(stringIdentifier, stringByName);
		
		final ByNameState testByName = ByNameState.create(UnqualifiedName.create(testIdentifier));
		final TypeProxy typeProxyTest = TypeProxy.create(testIdentifier, testByName);
		
		final SumType sum1 = SumType.create(this.curlyBracketOpenToken);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
187 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
256 | 
						+ "attribute: Integer;" + "};" + "];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		final SimpleWalkerTask doubleGroupcomponent = DoubleGroupcomponentCheck.create(model, taskmanager);
		final TypeReferencer referencer = TypeReferencer.create(model, taskmanager);
		final SimpleWalkerTask cyclicInheritance = CyclicInheritanceCheck.create(model, taskmanager);
		final DoubleAttributenameCheck doubleAttributenameCheck = DoubleAttributenameCheck.create(model, taskmanager);
		final GroupDependencyTask inheritanceChecker = GroupDependencyTask.create(taskmanager);
		final SimpleWalkerTask baseTypeInheritanceCheck = BaseTypeInheritanceCheck.create(model, taskmanager);
		
		referencer.addDependency(doubleGroupcomponent);
		cyclicInheritance.addDependency(referencer);
		baseTypeInheritanceCheck.addDependency(referencer);
		inheritanceChecker.addMembers(cyclicInheritance, baseTypeInheritanceCheck);
		
		doubleAttributenameCheck.addDependency(inheritanceChecker);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(5, okResult.size());  | 
| File | 
Line | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1608 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1688 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
2060 | 
		actualSum.add(TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(a))));
		actualSum.add(ThrownType.create(
				dummyToken,
				TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(b)))));
		
		final List<Type> standardizeElements = actualSum.standardize().accept(new TypeVisitorReturn<List<Type>>() {
			
			@Override
			public List<Type> handle(final AtomicType atomicType) {
				return new ArrayList<>();
			}
			
			@Override
			public List<Type> handle(final CompositeType compositeType) {
				return compositeType.accept(new CompositeTypeVisitorReturn<List<Type>>() {
					
					@Override
					public List<Type> handle(final ListType list) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final MapType map) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final ProductType product) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final SumType sum2) {
						return sum2.getElements();
					}
					
					@Override
					public List<Type> handle(final ThrownType thrownType) {
						return new ArrayList<>();
					}
				});
			}
			
			@Override
			public List<Type> handle(final TypeProxy typeProxy) {
				return new ArrayList<>();
			}
		});
		
		// Prepare Expected
		final SumType expectedSum = SumType.create(dummyToken);
		expectedSum.add(TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(a))));  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2291 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2481 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2573 | 
		this.stream.add(this.stringIdentifier);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(EndToken.create(Position.create("", 1, 1, 0)));
		
		final Model model = Model.create(groupIdentifier);
		final Vector<GroupElement> groupVector = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		model.addGroup(group);
		
		final Name className = groupName.addName(classIdentifier);
		final Collection<Attribute> attributes = new Vector<>();
		final ClassType clazz =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		groupVector.add(clazz);
		
		final ByNameState stringByName = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		final TypeProxy typeProxyString = TypeProxy.create(groupIdentifier, stringByName);
		
		final ByNameState integerByName = ByNameState.create(UnqualifiedName.create(this.integerIdentifier));  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2455 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2545 | 
	public void testListAsKey() throws Exception {
		final IdentifierToken groupIdentifier = IdentifierToken.create("Group", Position.create("", 1, 1, 0));
		final IdentifierToken classIdentifier = IdentifierToken.create("Class", Position.create("", 1, 1, 0));
		final IdentifierToken attributeIdentifier = IdentifierToken.create("Attribute", Position.create("", 1, 1, 0));
		final IdentifierToken trueIdentifier = IdentifierToken.create("true", Position.create("", 1, 1, 0));
		final IdentifierToken falseIdentifier = IdentifierToken.create("false", Position.create("", 1, 1, 0));
		
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(attributeIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.stringIdentifier);
		this.stream.add(this.asteriskToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
832 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
1230 | 
	public void testNoCurlyBracketCloseExceptionSum() {
		this.stream = SimpleTokenStream.create();
		this.parser = Parser.create(this.stream);
		final IdentifierToken myGroup = IdentifierToken.create("MyGroup", Position.create("", 1, 1, 0));
		final IdentifierToken myClass = IdentifierToken.create("MyClass", Position.create("", 1, 1, 0));
		final IdentifierToken myAttribute = IdentifierToken.create("MyAttribute", Position.create("", 1, 1, 0));
		final IdentifierToken string = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		final IdentifierToken integer = IdentifierToken.create("Integer", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(myAttribute);
		this.stream.add(this.colonToken);
		this.stream.add(this.curlyBracketOpenToken);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
187 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
386 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
452 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
517 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
583 | 
						+ "attribute: Integer;" + "};" + "];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		final SimpleWalkerTask doubleGroupcomponent = DoubleGroupcomponentCheck.create(model, taskmanager);
		final TypeReferencer referencer = TypeReferencer.create(model, taskmanager);
		final SimpleWalkerTask cyclicInheritance = CyclicInheritanceCheck.create(model, taskmanager);
		final DoubleAttributenameCheck doubleAttributenameCheck = DoubleAttributenameCheck.create(model, taskmanager);
		final GroupDependencyTask inheritanceChecker = GroupDependencyTask.create(taskmanager);
		final SimpleWalkerTask baseTypeInheritanceCheck = BaseTypeInheritanceCheck.create(model, taskmanager);
		
		referencer.addDependency(doubleGroupcomponent);
		cyclicInheritance.addDependency(referencer);
		baseTypeInheritanceCheck.addDependency(referencer);
		inheritanceChecker.addMembers(cyclicInheritance, baseTypeInheritanceCheck);
		
		doubleAttributenameCheck.addDependency(inheritanceChecker);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(5, okResult.size());  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
1110 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
1093 | 
		final ProductType productPrototyp = (ProductType) iterator2.next();
		
		expectedSupertypes = new ArrayList<>();
		final ProductType abstrProductCreated = ProductType.create(DummyToken.getInstance(), DummyToken.getInstance());
		ByReferenceState state = ByReferenceState.create(model.getString(), model.getString().getTypeName());
		TypeProxy typeProxy = TypeProxy.create(DummyToken.getInstance(), state);
		abstrProductCreated.addElement(ProductElementType.create("p$1", typeProxy, DummyToken.getInstance()));
		state = ByReferenceState.create(model.getInteger(), model.getInteger().getTypeName());
		typeProxy = TypeProxy.create(DummyToken.getInstance(), state);
		abstrProductCreated.addElement(ProductElementType.create("p$2", typeProxy, DummyToken.getInstance()));
		state = ByReferenceState.create(clssB, clssB.getName());
		typeProxy = TypeProxy.create(DummyToken.getInstance(), state);
		abstrProductCreated.addElement(ProductElementType.create("p$3", typeProxy, DummyToken.getInstance()));
		final ByReferenceState state2 = ByReferenceState.create(clss, clss.getName());
		final TypeProxy typeProxy2 = TypeProxy.create(DummyToken.getInstance(), state2);
		abstrProductCreated.addElement(ProductElementType.create("p$4", typeProxy2, DummyToken.getInstance()));
		expectedSupertypes.add(abstrProductCreated);
		expectedSupertypes.add(sum);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
1179 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
1023 | 
		final ProductType productPrototyp2 = (ProductType) iterator2.next();
		
		expectedSupertypes = new ArrayList<>();
		final ProductType abstrProductCreated = ProductType.create(DummyToken.getInstance(), DummyToken.getInstance());
		ByReferenceState state = ByReferenceState.create(model.getString(), model.getString().getTypeName());
		TypeProxy typeProxy = TypeProxy.create(DummyToken.getInstance(), state);
		abstrProductCreated.addElement(ProductElementType.create("p$1", typeProxy, DummyToken.getInstance()));
		state = ByReferenceState.create(model.getInteger(), model.getInteger().getTypeName());
		typeProxy = TypeProxy.create(DummyToken.getInstance(), state);
		abstrProductCreated.addElement(ProductElementType.create("p$2", typeProxy, DummyToken.getInstance()));
		state = ByReferenceState.create(clssB, clssB.getName());
		typeProxy = TypeProxy.create(DummyToken.getInstance(), state);
		abstrProductCreated.addElement(ProductElementType.create("p$3", typeProxy, DummyToken.getInstance()));
		final ByReferenceState state2 = ByReferenceState.create(clss, clss.getName());
		final TypeProxy typeProxy2 = TypeProxy.create(DummyToken.getInstance(), state2);
		abstrProductCreated.addElement(ProductElementType.create("p$4", typeProxy2, DummyToken.getInstance()));
		expectedSupertypes.add(abstrProductCreated);
		expectedSupertypes.add(sum);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1097 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1518 | 
		this.stream.add(this.stringIdentifier);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.asteriskToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType classModel =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState stringReferenceState = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		final TypeProxy stringType = TypeProxy.create(this.stringIdentifier, stringReferenceState);
		final ByNameState integerReferenceState = ByNameState.create(UnqualifiedName.create(this.integerIdentifier));
		final TypeProxy integerType = TypeProxy.create(this.integerIdentifier, integerReferenceState);
		
		final MapType map = MapType.create(this.integerIdentifier, integerType, stringType);   | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
1079 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
1148 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
992 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
1062 | 
								+ "D:class=B+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final Iterator<GroupElement> iterator = model.getGroups().iterator().next().getGroupElements().iterator();
		final ClassType clssA = (ClassType) iterator.next();
		final ClassType clssB = (ClassType) iterator.next();
		iterator.next();
		iterator.next();
		final ClassType clss = (ClassType) iterator.next();
		
		final Iterator<Attribute> attrIterator = clssA.getAttributes().iterator();
		
		final Attribute attr1 = attrIterator.next();
		
		// Summe
		assertEquals(0, attr1.getAttrType().getSuperTypes().size());
		final Type attr1Type = attr1.getAttrType().getPrototype();
		final Collection<Type> supertypesAttr1 = attr1Type.getSuperTypes();
		
		Collection<Type> expectedSupertypes = new ArrayList<>();
		expectedSupertypes.add(model.getAnything().getPrototype());
		
		this.checkSupertypes(expectedSupertypes, supertypesAttr1);
		
		// Product
		final SumType sum = (SumType) attr1Type;
		final Iterator<Type> iterator2 = sum.getElements().iterator();  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestTypeReferencer.java | 
505 | 
| de/fhdw/wtf/walker/tasks/test/TestTypeReferencer.java | 
682 | 
		class21SuperTypes.add(class21SuperTypeReference);
		final ByReferenceState class211AttributeTypeReferenceState =
				ByReferenceState.create(class121, class121.getTypeName());
		final TypeProxy class211AttributeTypeReference =
				TypeProxy.create(class121IdentifierToken, class211AttributeTypeReferenceState);
		final IdentifierToken class211AttributeTypeIdentifier =
				IdentifierToken.create("", Position.create("", 0 + 1, 0 + 1, 0));
		final IdentifierToken class211AttributeIdentifier =
				IdentifierToken.create("classa", Position.create("", 0 + 1, 0 + 1, 0));
		final Attribute class211Attribute =
				Attribute.create(
						"classa",
						class211AttributeTypeReference,
						new Vector<AttributeModifier>(),
						class211AttributeIdentifier);
		class211Attributes.add(class211Attribute);
		final IdentifierToken group211IdentifierToken =
				IdentifierToken.create("Group1", Position.create("", 0 + 1, 0 + 1, 0));
		final Name group211Name = group21Name.addName(group211IdentifierToken);
		final Collection<GroupElement> group211Elements = new Vector<>();
		final Group group211 = Group.create(group211Name, group211Elements, group211IdentifierToken);
		group21Elements.add(group211);
		final IdentifierToken class2111IdentifierToken =
				IdentifierToken.create("Class1", Position.create("", 0 + 1, 0 + 1, 0));
		final Name class2111Name = group211Name.addName(class2111IdentifierToken);
		final Collection<ClassModifier> class2111Modifiers = new Vector<>();
		final Collection<Attribute> class2111Attributes = new Vector<>();
		final List<Type> class2111SuperTypes = new Vector<>();
		final Collection<Operation> class2111Operations = new Vector<>();  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
947 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1099 | 
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType classModel =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState stringReferenceState = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		final TypeProxy stringType = TypeProxy.create(this.stringIdentifier, stringReferenceState);
		final ByNameState integerReferenceState = ByNameState.create(UnqualifiedName.create(this.integerIdentifier));
		final TypeProxy integerType = TypeProxy.create(this.integerIdentifier, integerReferenceState);
		
		final MapType map = MapType.create(this.integerIdentifier, integerType, stringType);
		
		final Attribute attribute =   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1199 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1288 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1489 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1580 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1673 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1767 | 
	public void testAttributeWithMapOnProduct() throws Exception {
		final IdentifierToken groupIdentifier = IdentifierToken.create("Group", Position.create("", 1, 1, 0));
		final IdentifierToken classIdentifier = IdentifierToken.create("Class", Position.create("", 1, 1, 0));
		final IdentifierToken attributeIdentifier = IdentifierToken.create("Attribute", Position.create("", 1, 1, 0));
		final IdentifierToken nameIdentifier = IdentifierToken.create("name", Position.create("", 1, 1, 0));
		final IdentifierToken countIdentifier = IdentifierToken.create("count", Position.create("", 1, 1, 0));
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(attributeIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.stringIdentifier);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2209 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2482 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2574 | 
		this.stream.add(this.stringIdentifier);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(EndToken.create(Position.create("", 1, 1, 0)));
		
		final Model model = Model.create(groupIdentifier);
		final Vector<GroupElement> groupVector = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		model.addGroup(group);
		
		final Name className = groupName.addName(classIdentifier);
		final Collection<Attribute> attributes = new Vector<>();
		final ClassType clazz =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		groupVector.add(clazz);
		
		final ByNameState stringByName = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		final TypeProxy typeProxyString = TypeProxy.create(groupIdentifier, stringByName);
		
		final ByNameState integerByName = ByNameState.create(UnqualifiedName.create(this.integerIdentifier));  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
555 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
606 | 
		final IdentifierToken myClass = IdentifierToken.create("MyClass", Position.create("", 1, 1, 0));
		final IdentifierToken myAttribute = IdentifierToken.create("MyAttribute", Position.create("", 1, 1, 0));
		final IdentifierToken name = IdentifierToken.create("name", Position.create("", 1, 1, 0));
		final IdentifierToken string = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(myAttribute);
		this.stream.add(this.colonToken);
		this.stream.add(this.bracketOpenToken);
		this.stream.add(name);
		this.stream.add(this.colonToken);
		this.stream.add(string);
		this.stream.add(this.bracketCloseToken);
		this.stream.add(this.curlyBracketCloseToken);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
166 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
283 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
332 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
381 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
430 | 
						+ "NaturalPerson:class=Person+{}; CorporateBody:class=Person+{};];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		final SimpleWalkerTask referencer = TypeReferencer.create(model, taskmanager);
		final SimpleWalkerTask cyclicInheritance = CyclicInheritanceCheck.create(model, taskmanager);
		cyclicInheritance.addDependency(referencer);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<OKTaskResult>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<ExceptionalTaskResult>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(1, okResult.size());
		assertEquals(1, failResult.size());
		
		final Exception exception = failResult.iterator().next().getError();
		if (exception instanceof CyclicInheritanceException) {
			final CyclicInheritanceException ex = (CyclicInheritanceException) exception;
			assertEquals(Position.create("", 1, 92, 91), ex.getStartPosition());  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
668 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
754 | 
	public void testAttributeWithListOnProduct() throws Exception {
		final IdentifierToken groupIdentifier = IdentifierToken.create("Group", Position.create("", 1, 1, 0));
		final IdentifierToken classIdentifier = IdentifierToken.create("Class", Position.create("", 1, 1, 0));
		final IdentifierToken attributeIdentifier = IdentifierToken.create("Attribute", Position.create("", 1, 1, 0));
		final IdentifierToken nameIdentifier = IdentifierToken.create("name", Position.create("", 1, 1, 0));
		final IdentifierToken countIdentifier = IdentifierToken.create("count", Position.create("", 1, 1, 0));
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(attributeIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.bracketOpenToken);
		this.stream.add(nameIdentifier);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
39 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
166 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
283 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
332 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
381 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
430 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
559 | 
						+ "CorporateBody:class=Person+{};];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		final SimpleWalkerTask referencer = TypeReferencer.create(model, taskmanager);
		final SimpleWalkerTask cyclicInheritance = CyclicInheritanceCheck.create(model, taskmanager);
		cyclicInheritance.addDependency(referencer);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<OKTaskResult>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<ExceptionalTaskResult>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(1, okResult.size());
		assertEquals(1, failResult.size());
		
		final Exception exception = failResult.iterator().next().getError();
		if (exception instanceof CyclicInheritanceException) {
			final CyclicInheritanceException ex = (CyclicInheritanceException) exception;
			assertEquals(Position.create("", 1, 33, 32), ex.getStartPosition());  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
694 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
782 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1098 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1611 | 
		this.stream.add(this.bracketCloseToken);
		this.stream.add(this.asteriskToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType classModel =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState stringReferenceState = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		final TypeProxy stringType = TypeProxy.create(this.stringIdentifier, stringReferenceState);
		final ByNameState integerReferenceState = ByNameState.create(UnqualifiedName.create(this.integerIdentifier));
		final TypeProxy integerType = TypeProxy.create(this.integerIdentifier, integerReferenceState);
		
		final ProductElementType nameElement = ProductElementType.create("name", stringType, nameIdentifier);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
946 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1021 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1228 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1317 | 
		this.stream.add(this.stringIdentifier);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType classModel =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState stringReferenceState = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		final TypeProxy stringType = TypeProxy.create(this.stringIdentifier, stringReferenceState);
		final ByNameState integerReferenceState = ByNameState.create(UnqualifiedName.create(this.integerIdentifier));
		final TypeProxy integerType = TypeProxy.create(this.integerIdentifier, integerReferenceState);
		
		final MapType map = MapType.create(this.integerIdentifier, integerType, stringType);   | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
47 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
158 | 
						"Group:group=[Klasse:class={operation : [[(parameter:Integer,parameter:String) -> String ]];};];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		Model model = null;
		model = parser.parse();
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		ProductCheck.create(model, taskmanager);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(0, okResult.size());
		assertEquals(1, failResult.size());
		
		final Exception exception = failResult.iterator().next().getError();
		if (exception instanceof InvalidProductException) {
			final InvalidProductException ex = (InvalidProductException) exception;
			assertEquals(Position.create("", 1, 42, 41), ex.getStartPosition());
			assertEquals(Position.create("", 1, 79, 78), ex.getEndPos());  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
101 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
213 | 
				new SimpleScannerInput("Group:group=[Klasse:class={attr : (parameter:Integer,parameter:String);};];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		Model model = null;
		model = parser.parse();
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		ProductCheck.create(model, taskmanager);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(0, okResult.size());
		assertEquals(1, failResult.size());
		
		final Exception exception = failResult.iterator().next().getError();
		if (exception instanceof InvalidProductException) {
			final InvalidProductException ex = (InvalidProductException) exception;
			assertEquals(Position.create("", 1, 35, 34), ex.getStartPosition());
			assertEquals(Position.create("", 1, 71, 70), ex.getEndPos());  | 
| File | 
Line | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1533 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1611 | 
		actualSum.add(TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(b))));
		
		final List<Type> standardizeElements = actualSum.standardize().accept(new TypeVisitorReturn<List<Type>>() {
			
			@Override
			public List<Type> handle(final AtomicType atomicType) {
				return new ArrayList<>();
			}
			
			@Override
			public List<Type> handle(final CompositeType compositeType) {
				return compositeType.accept(new CompositeTypeVisitorReturn<List<Type>>() {
					
					@Override
					public List<Type> handle(final ListType list) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final MapType map) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final ProductType product) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final SumType sum2) {
						return sum2.getElements();
					}
					
					@Override
					public List<Type> handle(final ThrownType thrownType) {
						return new ArrayList<>();
					}
				});
			}
			
			@Override
			public List<Type> handle(final TypeProxy typeProxy) {
				return new ArrayList<>();
			}
		});
		
		// Prepare Expected
		final SumType expectedSum = SumType.create(dummyToken);
		expectedSum.add(TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(b))));  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
926 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1077 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1154 | 
	public void testAttributeMap() throws Exception {
		final IdentifierToken groupIdentifier = IdentifierToken.create("Group", Position.create("", 1, 1, 0));
		final IdentifierToken classIdentifier = IdentifierToken.create("Class", Position.create("", 1, 1, 0));
		final IdentifierToken attributeIdentifier = IdentifierToken.create("Attribute", Position.create("", 1, 1, 0));
		
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(attributeIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.integerIdentifier);
		this.stream.add(this.arrowToken);
		this.stream.add(this.stringIdentifier);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
1001 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
898 | 
		final Collection<Type> expectedSupertypes = new ArrayList<>();
		final ProductType abstrProductCreated = ProductType.create(DummyToken.getInstance(), DummyToken.getInstance());
		ByReferenceState state = ByReferenceState.create(model.getString(), model.getString().getTypeName());
		TypeProxy typeProxy = TypeProxy.create(DummyToken.getInstance(), state);
		abstrProductCreated.addElement(ProductElementType.create("p$1", typeProxy, DummyToken.getInstance()));
		state = ByReferenceState.create(model.getInteger(), model.getInteger().getTypeName());
		typeProxy = TypeProxy.create(DummyToken.getInstance(), state);
		abstrProductCreated.addElement(ProductElementType.create("p$2", typeProxy, DummyToken.getInstance()));
		state = ByReferenceState.create(clssB, clssB.getName());
		typeProxy = TypeProxy.create(DummyToken.getInstance(), state);
		abstrProductCreated.addElement(ProductElementType.create("p$3", typeProxy, DummyToken.getInstance()));
		final ByReferenceState state2 = ByReferenceState.create(clss, clss.getName());
		final TypeProxy typeProxy2 = TypeProxy.create(DummyToken.getInstance(), state2);
		abstrProductCreated.addElement(ProductElementType.create("p$4", typeProxy2, DummyToken.getInstance()));
		expectedSupertypes.add(abstrProductCreated);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
662 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
274 | 
		final IdentifierToken myGroup = IdentifierToken.create("MyGroup", Position.create("", 1, 1, 0));
		final IdentifierToken myClass = IdentifierToken.create("MyClass", Position.create("", 1, 1, 0));
		final IdentifierToken myOperation = IdentifierToken.create("MyOperation", Position.create("", 1, 1, 0));
		final IdentifierToken myParameter = IdentifierToken.create("MyParameter", Position.create("", 1, 1, 0));
		final IdentifierToken string = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(myOperation);
		this.stream.add(this.colonToken);
		this.stream.add(this.doubleSquareBracketOpenToken);
		this.stream.add(myParameter);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
295 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
383 | 
		this.stream.add(string);
		this.stream.add(this.bracketCloseToken);
		this.stream.add(this.arrowToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.doubleSquareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Operation> operations = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(myGroup);
		final Group group = Group.create(groupName, groupVector, myGroup);
		
		final Name className = groupName.addName(myClass);
		final ClassType class1 =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						new Vector<Attribute>(),
						new Vector<Type>(),
						operations,
						new Vector<Constructor>(),
						myClass,
						
						new Vector<ClassType>());
		groupVector.add(class1);
		
		final ProductType product = ProductType.create(this.bracketOpenToken);
		final ByNameState byName = ByNameState.create(UnqualifiedName.create(string));   | 
| File | 
Line | 
| de/fhdw/wtf/parser/testWithScanner/TestParserScanner.java | 
468 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
865 | 
						"group1 : group = [ class1 : class = {map : [String->Integer];} visitable abstract;];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		final Vector<ClassModifier> modifiers = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, GroupToken.create(Position.create("", 1, 1, 0)));
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType clazz =
				RegularClassType.create(
						className,
						modifiers,
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState integerByName = ByNameState.create(UnqualifiedName.create(integerIdentifier));
		final TypeProxy typeProxyInteger = TypeProxy.create(integerIdentifier, integerByName);
		
		final ByNameState stringByName = ByNameState.create(UnqualifiedName.create(stringIdentifier));
		final TypeProxy typeProxyString = TypeProxy.create(stringIdentifier, stringByName);
		final MapType map = MapType.create(mapIdentifier, typeProxyString, typeProxyInteger);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1859 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1927 | 
	public void testAttributeWithModifier() throws Exception {
		final IdentifierToken groupIdentifier = IdentifierToken.create("Group", Position.create("", 0 + 1, 0 + 1, 0));
		final IdentifierToken classIdentifier = IdentifierToken.create("Class", Position.create("", 0 + 1, 0 + 1, 0));
		final IdentifierToken attributeIdentifier =
				IdentifierToken.create("Attribute", Position.create("", 0 + 1, 0 + 1, 0));
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(attributeIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.stringIdentifier);
		this.stream.add(PriorToken.create(Position.create("", 0 + 1, 0 + 1, 0)));
		this.stream.add(this.semicolonToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
217 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
295 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
383 | 
		this.stream.add(this.bracketOpenToken);
		this.stream.add(this.bracketCloseToken);
		this.stream.add(this.arrowToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.doubleSquareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Operation> operations = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(myGroup);
		final Group group = Group.create(groupName, groupVector, myGroup);
		
		final Name className = groupName.addName(myClass);
		
		final ClassType class1 =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						new Vector<Attribute>(),
						new Vector<Type>(),
						operations,
						new Vector<Constructor>(),
						myClass,
						
						new Vector<ClassType>());
		groupVector.add(class1);
		
		final ProductType product = ProductType.create(this.bracketOpenToken);
		final SumType sum = SumType.create(this.curlyBracketOpenToken);   | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestAnalyzeInheritanceTreesTask.java | 
304 | 
| de/fhdw/wtf/walker/tasks/test/TestAnalyzeInheritanceTreesTask.java | 
353 | 
| de/fhdw/wtf/walker/tasks/test/TestAnalyzeInheritanceTreesTask.java | 
402 | 
		final Model model = SyntaxCheck.getInstance().getModelFromString(input);
		
		final Iterator<Type> iterator = model.getConstructorCallDependencies().keySet().iterator();
		while (iterator.hasNext()) {
			final Type current = iterator.next();
			
			switch (current.getTypeString()) {
			case "group1>A":
				assertTrue(true);
				assertEquals(0, model.getConstructorCallDependencies().get(current).size());
				break;
			case "group1>B":
				final Iterator<Type> bIterator = model.getConstructorCallDependencies().get(current).iterator();
				assertEquals("group1>A", bIterator.next().toString());
				assertEquals(1, model.getConstructorCallDependencies().get(current).size());
				break;
			case "group1>C":
				final Iterator<Type> cIterator = model.getConstructorCallDependencies().get(current).iterator();
				assertEquals("group1>A", cIterator.next().toString());
				assertEquals(1, model.getConstructorCallDependencies().get(current).size());
				break;
			case "group1>D":
				final Iterator<Type> aIterator = model.getConstructorCallDependencies().get(current).iterator();
				assertEquals("group1>A", aIterator.next().toString());
				assertEquals("group1>B", aIterator.next().toString());  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestAnalyzeInheritanceTreesTask.java | 
453 | 
| de/fhdw/wtf/walker/tasks/test/TestAnalyzeInheritanceTreesTask.java | 
523 | 
| de/fhdw/wtf/walker/tasks/test/TestAnalyzeInheritanceTreesTask.java | 
602 | 
| de/fhdw/wtf/walker/tasks/test/TestAnalyzeInheritanceTreesTask.java | 
677 | 
		final Model model = SyntaxCheck.getInstance().getModelFromString(input);
		
		final Iterator<Type> iterator = model.getConstructorCallDependencies().keySet().iterator();
		while (iterator.hasNext()) {
			final Type current = iterator.next();
			
			switch (current.getTypeString()) {
			case "group1>A":
				assertTrue(true);
				assertEquals(0, model.getConstructorCallDependencies().get(current).size());
				break;
			case "group1>B":
				final Iterator<Type> bIterator = model.getConstructorCallDependencies().get(current).iterator();
				assertEquals("group1>A", bIterator.next().toString());
				assertEquals(1, model.getConstructorCallDependencies().get(current).size());
				break;
			case "group1>C":
				final Iterator<Type> cIterator = model.getConstructorCallDependencies().get(current).iterator();
				assertEquals("group1>A", cIterator.next().toString());
				assertEquals(1, model.getConstructorCallDependencies().get(current).size());
				break;
			case "group1>D":
				final Iterator<Type> dIterator = model.getConstructorCallDependencies().get(current).iterator();
				assertEquals("group1>A", dIterator.next().toString());
				assertEquals("group1>B", dIterator.next().toString());  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
1001 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
1112 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
1181 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
1025 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
1095 | 
		final Collection<Type> expectedSupertypes = new ArrayList<>();
		final ProductType abstrProductCreated = ProductType.create(DummyToken.getInstance(), DummyToken.getInstance());
		ByReferenceState state = ByReferenceState.create(model.getString(), model.getString().getTypeName());
		TypeProxy typeProxy = TypeProxy.create(DummyToken.getInstance(), state);
		abstrProductCreated.addElement(ProductElementType.create("p$1", typeProxy, DummyToken.getInstance()));
		state = ByReferenceState.create(model.getInteger(), model.getInteger().getTypeName());
		typeProxy = TypeProxy.create(DummyToken.getInstance(), state);
		abstrProductCreated.addElement(ProductElementType.create("p$2", typeProxy, DummyToken.getInstance()));
		state = ByReferenceState.create(clssB, clssB.getName());
		typeProxy = TypeProxy.create(DummyToken.getInstance(), state);
		abstrProductCreated.addElement(ProductElementType.create("p$3", typeProxy, DummyToken.getInstance()));
		final ByReferenceState state2 = ByReferenceState.create(clss, clss.getName());
		final TypeProxy typeProxy2 = TypeProxy.create(DummyToken.getInstance(), state2);
		abstrProductCreated.addElement(ProductElementType.create("p$4", typeProxy2, DummyToken.getInstance()));
		expectedSupertypes.add(abstrProductCreated);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestTypeReferencer.java | 
474 | 
| de/fhdw/wtf/walker/tasks/test/TestTypeReferencer.java | 
648 | 
						null);
		group2Elements.add(class21);
		final IdentifierToken group21IdentifierToken =
				IdentifierToken.create("Group1", Position.create("", 0 + 1, 0 + 1, 0));
		final Name group21Name = group2Name.addName(group21IdentifierToken);
		final Collection<GroupElement> group21Elements = new Vector<>();
		final Group group21 = Group.create(group21Name, group21Elements, group21IdentifierToken);
		group2Elements.add(group21);
		final IdentifierToken class211IdentifierToken =
				IdentifierToken.create("Class1", Position.create("", 0 + 1, 0 + 1, 0));
		final Name class211Name = group21Name.addName(class211IdentifierToken);
		final Collection<ClassModifier> class211Modifiers = new Vector<>();
		final Collection<Attribute> class211Attributes = new Vector<>();
		final List<Type> class211SuperTypes = new Vector<>();
		final Collection<Operation> class211Operations = new Vector<>();
		final ClassType class211 =
				RegularClassType.create(
						class211Name,
						class211Modifiers,
						class211Attributes,
						class211SuperTypes,
						class211Operations,
						new Vector<Constructor>(),
						class211IdentifierToken,
						
						new Vector<ClassType>());
		group21Elements.add(class211);
		final ByReferenceState class21SuperTypeReferenceState =
				ByReferenceState.create(class211, class211.getTypeName());
		final TypeProxy class21SuperTypeReference =
				TypeProxy.create(class211IdentifierToken, class21SuperTypeReferenceState);
		class21SuperTypes.add(class21SuperTypeReference);
		final ByReferenceState class211AttributeTypeReferenceState =  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
668 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
754 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1199 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1288 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1489 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1580 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1673 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1767 | 
	public void testAttributeWithListOnProduct() throws Exception {
		final IdentifierToken groupIdentifier = IdentifierToken.create("Group", Position.create("", 1, 1, 0));
		final IdentifierToken classIdentifier = IdentifierToken.create("Class", Position.create("", 1, 1, 0));
		final IdentifierToken attributeIdentifier = IdentifierToken.create("Attribute", Position.create("", 1, 1, 0));
		final IdentifierToken nameIdentifier = IdentifierToken.create("name", Position.create("", 1, 1, 0));
		final IdentifierToken countIdentifier = IdentifierToken.create("count", Position.create("", 1, 1, 0));
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(attributeIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.bracketOpenToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
843 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2455 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2545 | 
	public void testAttributeWithMoreListsOnSum() throws Exception {
		final IdentifierToken groupIdentifier = IdentifierToken.create("Group", Position.create("", 1, 1, 0));
		final IdentifierToken classIdentifier = IdentifierToken.create("Class", Position.create("", 1, 1, 0));
		final IdentifierToken attributeIdentifier = IdentifierToken.create("Attribute", Position.create("", 1, 1, 0));
		final IdentifierToken trueIdentifier = IdentifierToken.create("true", Position.create("", 1, 1, 0));
		final IdentifierToken falseIdentifier = IdentifierToken.create("false", Position.create("", 1, 1, 0));
		
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(attributeIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.curlyBracketOpenToken);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
1112 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
1181 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
898 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
1025 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
1095 | 
		expectedSupertypes = new ArrayList<>();
		final ProductType abstrProductCreated = ProductType.create(DummyToken.getInstance(), DummyToken.getInstance());
		ByReferenceState state = ByReferenceState.create(model.getString(), model.getString().getTypeName());
		TypeProxy typeProxy = TypeProxy.create(DummyToken.getInstance(), state);
		abstrProductCreated.addElement(ProductElementType.create("p$1", typeProxy, DummyToken.getInstance()));
		state = ByReferenceState.create(model.getInteger(), model.getInteger().getTypeName());
		typeProxy = TypeProxy.create(DummyToken.getInstance(), state);
		abstrProductCreated.addElement(ProductElementType.create("p$2", typeProxy, DummyToken.getInstance()));
		state = ByReferenceState.create(clssB, clssB.getName());
		typeProxy = TypeProxy.create(DummyToken.getInstance(), state);
		abstrProductCreated.addElement(ProductElementType.create("p$3", typeProxy, DummyToken.getInstance()));
		final ByReferenceState state2 = ByReferenceState.create(clss, clss.getName());
		final TypeProxy typeProxy2 = TypeProxy.create(DummyToken.getInstance(), state2);
		abstrProductCreated.addElement(ProductElementType.create("p$4", typeProxy2, DummyToken.getInstance()));
		expectedSupertypes.add(abstrProductCreated);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
505 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
606 | 
		final IdentifierToken myClass = IdentifierToken.create("MyClass", Position.create("", 1, 1, 0));
		final IdentifierToken myAttribute = IdentifierToken.create("MyAttribute", Position.create("", 1, 1, 0));
		final IdentifierToken name = IdentifierToken.create("name", Position.create("", 1, 1, 0));
		final IdentifierToken string = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(myAttribute);
		this.stream.add(this.colonToken);
		this.stream.add(this.bracketOpenToken);
		this.stream.add(name);
		this.stream.add(this.colonToken);
		this.stream.add(string);
		this.stream.add(this.semicolonToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1859 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1927 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2001 | 
	public void testAttributeWithModifier() throws Exception {
		final IdentifierToken groupIdentifier = IdentifierToken.create("Group", Position.create("", 0 + 1, 0 + 1, 0));
		final IdentifierToken classIdentifier = IdentifierToken.create("Class", Position.create("", 0 + 1, 0 + 1, 0));
		final IdentifierToken attributeIdentifier =
				IdentifierToken.create("Attribute", Position.create("", 0 + 1, 0 + 1, 0));
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(attributeIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.stringIdentifier);
		this.stream.add(PriorToken.create(Position.create("", 0 + 1, 0 + 1, 0)));
		this.stream.add(this.semicolonToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1277 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1370 | 
						new Vector<Type>(),
						operations,
						constructors,
						aIdentifierToken,
						
						new Vector<ClassType>());
		group1Vector.add(aClass);
		
		final ProductType aProduct = ProductType.create(this.bracketOpenToken);
		final ProductType sProduct = ProductType.create(this.bracketOpenToken);
		
		final ByNameState attributeStringReferenceState =
				ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		final TypeProxy stringType = TypeProxy.create(this.stringIdentifier, attributeStringReferenceState);
		
		attributes.add(Attribute.create("s", stringType, new Vector<AttributeModifier>(), sIdentifierToken));
		sProduct.addElement(ProductElementType.create("s", stringType, sIdentifierToken));
		constructors.add(Constructor.create(aProduct, aClass, new Vector<ConstructorReference>(), aIdentifierToken));
		
		final Operation operation =
				Operation.create(
						"op",
						new Vector<OperationModifier>(),
						sProduct,
						aClass,
						SumType.create(this.curlyBracketOpenToken),
						op);
		operations.add(operation);
		
		final Model expected = Model.create(group1IdentifierToken);
		expected.addGroup(group1);
		
		this.parser = Parser.create(output);
		final Model actual = this.parser.parse();
		
		assertEquals(0, this.parser.getExceptions().size());
		assertEquals(expected, actual);
	}
	
	/**
	 * Group1:group=[SA:class={};A:class=SA+{();op:[[(s:String)->{}]];s:String;};];.
	 * 
	 * @throws Exception
	 *             {@link de.fhdw.wtf.common.exception.parser.NoValidTokenStreamException}
	 */
	@Test
	public void testConstructorWithoutParameterAndSuperclassWithoutParameter() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
374 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
474 | 
		product1.addElement(element13);
		
		final ProductType product2 = ProductType.create(this.bracketOpenToken);
		final ProductElementType element21 =
				ProductElementType.create(
						"int3",
						typeProxyInteger,
						IdentifierToken.create("int3", Position.create("", 1, 1, 0)));
		final ProductElementType element22 =
				ProductElementType.create(
						"int4",
						typeProxyInteger,
						IdentifierToken.create("int4", Position.create("", 1, 1, 0)));
		product2.addElement(element21);
		product2.addElement(element22);
		
		final SumType sum = SumType.create(this.curlyBracketOpenToken);
		sum.add(product1);
		sum.add(typeProxyString);
		sum.add(product2);
		sum.add(typeProxyTest);
		
		final Attribute attribute =
				Attribute.create("attribute", sum, new Vector<AttributeModifier>(), attributeIdentifier);
		attributes.add(attribute);
		
		modifiers.add(ClassModifierService.create(VisitableToken.create(Position.create("", 1, 1, 0))));
		modifiers.add(ClassModifierTransient.create(AbstractToken.create(Position.create("", 1, 1, 0))));
		groupVector.add(clazz);
		final Model expected = Model.create(groupIdentifier);
		expected.addGroup(group);
		assertEquals(expected, model);
	}
	
	/**
	 * group1 : group = [ class1 : class = {attribute : {(sum:{Integer, String}, int42:Integer), String,
	 * (int3:Integer,int4:Integer), Test} ;} service transient;]; .
	 * 
	 * @throws Exception
	 */
	@Test
	public void testProductSum5() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
695 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
783 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
947 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1022 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1099 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1229 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1318 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1520 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1612 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1707 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1798 | 
		this.stream.add(this.asteriskToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType classModel =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState stringReferenceState = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		final TypeProxy stringType = TypeProxy.create(this.stringIdentifier, stringReferenceState);
		final ByNameState integerReferenceState = ByNameState.create(UnqualifiedName.create(this.integerIdentifier));
		final TypeProxy integerType = TypeProxy.create(this.integerIdentifier, integerReferenceState);
		
		final ProductElementType nameElement = ProductElementType.create("name", stringType, nameIdentifier);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/testWithScanner/TestParserScanner.java | 
468 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
87 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
180 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
254 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
320 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
425 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
525 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
625 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
741 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
865 | 
						"group1 : group = [ class1 : class = {map : [String->Integer];} visitable abstract;];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		final Vector<ClassModifier> modifiers = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, GroupToken.create(Position.create("", 1, 1, 0)));
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType clazz =
				RegularClassType.create(
						className,
						modifiers,
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState integerByName = ByNameState.create(UnqualifiedName.create(integerIdentifier));
		final TypeProxy typeProxyInteger = TypeProxy.create(integerIdentifier, integerByName);
		
		final ByNameState stringByName = ByNameState.create(UnqualifiedName.create(stringIdentifier));
		final TypeProxy typeProxyString = TypeProxy.create(stringIdentifier, stringByName);
		final MapType map = MapType.create(mapIdentifier, typeProxyString, typeProxyInteger);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
1140 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
1187 | 
		this.stream.add(AsteriskToken.create(Position.create("", 1, 55, 55)));
		this.stream.add(ExclamationToken.create(Position.create("", 1, 56, 56)));
		this.stream.add(DoubleSquareBracketCloseToken.create(Position.create("", 1, 57, 57)));
		this.stream.add(SemicolonToken.create(Position.create("", 1, 59, 59)));
		this.stream.add(CurlyBracketCloseToken.create(Position.create("", 1, 60, 60)));
		this.stream.add(SemicolonToken.create(Position.create("", 1, 61, 61)));
		this.stream.add(SquareBracketCloseToken.create(Position.create("", 1, 62, 62)));
		this.stream.add(SemicolonToken.create(Position.create("", 1, 63, 63)));
		this.stream.add(EndToken.create(Position.create("", 1, 64, 64)));
		
		try {
			this.parser.parse();
		} catch (final NoValidTokenStreamException e) {
			assertTrue(true);
		}
	}
	
	/**
	 * MyGroup:group=[MyClass:class={MyOperation:[[()->String!!]];};];.
	 * 
	 * @throws Exception
	 *             {@link de.fhdw.wtf.common.exception.parser.NoValidTokenStreamException}
	 */
	@Test
	public void testOperationReturnAThrownTypeThatShouldBeThrown() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1611 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1776 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
2063 | 
				TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(b)))));
		
		final List<Type> standardizeElements = actualSum.standardize().accept(new TypeVisitorReturn<List<Type>>() {
			
			@Override
			public List<Type> handle(final AtomicType atomicType) {
				return new ArrayList<>();
			}
			
			@Override
			public List<Type> handle(final CompositeType compositeType) {
				return compositeType.accept(new CompositeTypeVisitorReturn<List<Type>>() {
					
					@Override
					public List<Type> handle(final ListType list) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final MapType map) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final ProductType product) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final SumType sum2) {
						return sum2.getElements();
					}
					
					@Override
					public List<Type> handle(final ThrownType thrownType) {
						return new ArrayList<>();
					}
				});
			}
			
			@Override
			public List<Type> handle(final TypeProxy typeProxy) {
				return new ArrayList<>();
			}
		});
		
		// Prepare Expected
		final SumType expectedSum = SumType.create(dummyToken);
		expectedSum.add(TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(a))));  | 
| File | 
Line | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1533 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1691 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1776 | 
		actualSum.add(TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(b))));
		
		final List<Type> standardizeElements = actualSum.standardize().accept(new TypeVisitorReturn<List<Type>>() {
			
			@Override
			public List<Type> handle(final AtomicType atomicType) {
				return new ArrayList<>();
			}
			
			@Override
			public List<Type> handle(final CompositeType compositeType) {
				return compositeType.accept(new CompositeTypeVisitorReturn<List<Type>>() {
					
					@Override
					public List<Type> handle(final ListType list) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final MapType map) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final ProductType product) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final SumType sum2) {
						return sum2.getElements();
					}
					
					@Override
					public List<Type> handle(final ThrownType thrownType) {
						return new ArrayList<>();
					}
				});
			}
			
			@Override
			public List<Type> handle(final TypeProxy typeProxy) {
				return new ArrayList<>();
			}
		});
		
		// Prepare Expected
		final SumType expectedSum = SumType.create(dummyToken);
		expectedSum.add(TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(b))));  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
179 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
333 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
391 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
446 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
659 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
777 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
882 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
1058 | 
	public void testNoArrowException() {
		this.stream = SimpleTokenStream.create();
		this.parser = Parser.create(this.stream);
		final IdentifierToken myGroup = IdentifierToken.create("MyGroup", Position.create("", 1, 1, 0));
		final IdentifierToken myClass = IdentifierToken.create("MyClass", Position.create("", 1, 1, 0));
		final IdentifierToken myOperation = IdentifierToken.create("MyOperation", Position.create("", 1, 1, 0));
		final IdentifierToken myParameter = IdentifierToken.create("MyParameter", Position.create("", 1, 1, 0));
		final IdentifierToken string = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestAnalyzeInheritanceTreesTask.java | 
453 | 
| de/fhdw/wtf/walker/tasks/test/TestAnalyzeInheritanceTreesTask.java | 
523 | 
| de/fhdw/wtf/walker/tasks/test/TestAnalyzeInheritanceTreesTask.java | 
602 | 
| de/fhdw/wtf/walker/tasks/test/TestAnalyzeInheritanceTreesTask.java | 
677 | 
| de/fhdw/wtf/walker/tasks/test/TestAnalyzeInheritanceTreesTask.java | 
742 | 
		final Model model = SyntaxCheck.getInstance().getModelFromString(input);
		
		final Iterator<Type> iterator = model.getConstructorCallDependencies().keySet().iterator();
		while (iterator.hasNext()) {
			final Type current = iterator.next();
			
			switch (current.getTypeString()) {
			case "group1>A":
				assertTrue(true);
				assertEquals(0, model.getConstructorCallDependencies().get(current).size());
				break;
			case "group1>B":
				final Iterator<Type> bIterator = model.getConstructorCallDependencies().get(current).iterator();
				assertEquals("group1>A", bIterator.next().toString());
				assertEquals(1, model.getConstructorCallDependencies().get(current).size());
				break;
			case "group1>C":
				final Iterator<Type> cIterator = model.getConstructorCallDependencies().get(current).iterator();
				assertEquals("group1>A", cIterator.next().toString());
				assertEquals(1, model.getConstructorCallDependencies().get(current).size());
				break;
			case "group1>D":
				final Iterator<Type> dIterator = model.getConstructorCallDependencies().get(current).iterator();
				assertEquals("group1>A", dIterator.next().toString());  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
463 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
531 | 
	public void testAttributeWithList() throws Exception {
		final IdentifierToken groupIdentifier = IdentifierToken.create("Group", Position.create("", 0 + 1, 0 + 1, 0));
		final IdentifierToken classIdentifier = IdentifierToken.create("Class", Position.create("", 0 + 1, 0 + 1, 0));
		final IdentifierToken attributeIdentifier =
				IdentifierToken.create("Attribute", Position.create("", 0 + 1, 0 + 1, 0));
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(attributeIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.stringIdentifier);
		this.stream.add(this.asteriskToken);
		this.stream.add(this.semicolonToken);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
740 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
728 | 
				HelperUtils.getReferencedType(model.getString().getPrototype().getSuperTypes().iterator().next()));
	}
	
	/**
	 * Group:group=[A:class={Attribute1:{C,D};}; B:class=A+{}; C:class=B+{}; D:class=B+{}; Class:class={};]; .
	 * 
	 * @throws Exception
	 *             Exception
	 */
	@Test
	public void testTransitiveInheritanceAndSumSupertypeIsClass() throws Exception {
		final SimpleScannerInput input =
				new SimpleScannerInput("Group:group=[A:class={Attribute1:{C,D};}; B:class=A+{}; C:class=B+{}; "
						+ "D:class=B+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final Iterator<GroupElement> iterator = model.getGroups().iterator().next().getGroupElements().iterator();
		final ClassType clssA = (ClassType) iterator.next();
		final ClassType clssB = (ClassType) iterator.next();
		
		final Iterator<Attribute> attrIterator = clssA.getAttributes().iterator();
		
		final Attribute attr1 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
47 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
103 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
159 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
215 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
271 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
327 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
383 | 
						"Group:group=[Klasse:class={name : String; operation : [[(parameter:Integer) -> String ]] abstract;}; ];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		Model model = null;
		model = parser.parse();
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		AbstractOperationsCheck.create(model, taskmanager);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(0, okResult.size());
		assertEquals(1, failResult.size());
		
		final Exception exception = failResult.iterator().next().getError();
		if (exception instanceof AbstractOperationsException) {
			final AbstractOperationsException ex = (AbstractOperationsException) exception;
			assertEquals(Position.create("", 1, 43, 42), ex.getStartPosition());  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
47 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
101 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
158 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
213 | 
						"Group:group=[Klasse:class={operation : [[(parameter:Integer,parameter:String) -> String ]];};];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		Model model = null;
		model = parser.parse();
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		ProductCheck.create(model, taskmanager);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(0, okResult.size());
		assertEquals(1, failResult.size());
		
		final Exception exception = failResult.iterator().next().getError();
		if (exception instanceof InvalidProductException) {
			final InvalidProductException ex = (InvalidProductException) exception;
			assertEquals(Position.create("", 1, 42, 41), ex.getStartPosition());  | 
| File | 
Line | 
| de/fhdw/wtf/common/stream/test/FilteredTokenStreamTest.java | 
14 | 
| de/fhdw/wtf/common/stream/test/SimpleTokenStreamTest.java | 
14 | 
public class FilteredTokenStreamTest {
	
	@Test
	public void test() {
		
		final Token t1 = WhitespaceToken.create("t1", Position.create("", 0 + 1, 0 + 1, 0));
		final Token t2 = IdentifierToken.create("t2", Position.create("", 0 + 1, 0 + 1, 0));
		final Token t3 = IdentifierToken.create("t3", Position.create("", 0 + 1, 0 + 1, 0));
		final Token t4 = WhitespaceToken.create("t4", Position.create("", 0 + 1, 0 + 1, 0));
		final Token t5 = CommentTextToken.create("t5", Position.create("", 0 + 1, 0 + 1, 0));
		final Token t6 = WhitespaceToken.create("t6", Position.create("", 0 + 1, 0 + 1, 0));
		final Token t7 = IdentifierToken.create("t7", Position.create("", 0 + 1, 0 + 1, 0));
		final Token t8 = WhitespaceToken.create("t8", Position.create("", 0 + 1, 0 + 1, 0));
		
		final FilteredTokenStream stream = FilteredTokenStream.create();  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
885 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
999 | 
		this.stream.add(EndToken.create(Position.create("", 1, 97, 97)));
		
		// ---------------------------- MyGroup
		// -------------------------------------------------------------//
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Operation> operations = new Vector<>();
		final Vector<OperationModifier> operationModifiers = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(myGroupToken);
		final Group group = Group.create(groupName, groupVector, myGroupToken);
		
		final Name className = groupName.addName(myClassToken);
		final ClassType class1 =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						new Vector<Attribute>(),
						new Vector<Type>(),
						operations,
						new Vector<Constructor>(),
						myClassToken,
						new Vector<ClassType>());
		groupVector.add(class1);
		
		final Name exceptionName = groupName.addName(testExceptionToken);
		final ClassType exception1 =
				ExceptionClassType.create(
						exceptionName,
						new Vector<ClassModifier>(),
						new Vector<Attribute>(),
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						testExceptionToken,
						new Vector<ClassType>());
		groupVector.add(exception1);
		
		// -------------------------------------
		// --------------------------------------------------------//
		final ProductType product = ProductType.create(this.bracketOpenToken);
		final ByNameState byNameString = ByNameState.create(UnqualifiedName.create(testExceptionReferenceToken));  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
302 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
266 | 
				HelperUtils.getReferencedType(model.getString().getPrototype().getSuperTypes().iterator().next()));
	}
	
	/**
	 * Group:group=[A:class={Attribute1:{String,Integer,A}; Attribute2:{String,C};}; B:class=A+{}; C:class=A+{};
	 * Class:class={};]; .
	 * 
	 * @throws Exception
	 *             Exception
	 */
	@Test
	public void testContainsInheritanceOverClassInheritance2() throws Exception {
		final SimpleScannerInput input =
				new SimpleScannerInput("Group:group=[A:class={Attribute1:{String,Integer,A}; Attribute2:{String,C};}; "
						+ "B:class=A+{}; C:class=A+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final ClassType clss = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		final Iterator<Attribute> attrIterator = clss.getAttributes().iterator();
		final Attribute attr1 = attrIterator.next();
		final Attribute attr2 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();
		assertEquals(1, supertypesAttr1.size());
		final Iterator<Type> superTypesAttr1Iterator = supertypesAttr1.iterator();  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
459 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
425 | 
				HelperUtils.getReferencedType(model.getString().getPrototype().getSuperTypes().iterator().next()));
	}
	
	/**
	 * Group:group=[A:class={Attribute1:{String,Integer,A}; Attribute2:{B,C};}; B:class=A+{}; C:class=A+{};
	 * D:class=A+{}; Class:class={};]; .
	 * 
	 * @throws Exception
	 *             Exception
	 */
	@Test
	public void testSumSupertypeIsAnClass2() throws Exception {
		final SimpleScannerInput input =
				new SimpleScannerInput("Group:group=[A:class={Attribute1:{String,Integer,A}; Attribute2:{B,C};}; "
						+ "B:class=A+{}; C:class=A+{}; D:class=A+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final ClassType clss = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		final Iterator<Attribute> attrIterator = clss.getAttributes().iterator();
		final Attribute attr1 = attrIterator.next();
		final Attribute attr2 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();
		assertEquals(1, supertypesAttr1.size());
		final Iterator<Type> superTypesAttr1Iterator = supertypesAttr1.iterator();  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
738 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
830 | 
	public void testTransitiveInheritanceAndSumSupertypeIsClass() throws Exception {
		final SimpleScannerInput input =
				new SimpleScannerInput("Group:group=[A:class={Attribute1:{C,D};}; B:class=A+{}; C:class=B+{}; "
						+ "D:class=B+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final Iterator<GroupElement> iterator = model.getGroups().iterator().next().getGroupElements().iterator();
		final ClassType clssA = (ClassType) iterator.next();
		final ClassType clssB = (ClassType) iterator.next();
		
		final Iterator<Attribute> attrIterator = clssA.getAttributes().iterator();
		
		final Attribute attr1 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();
		
		final Collection<Type> expectedSupertypes = new ArrayList<>();
		expectedSupertypes.add(clssA);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
965 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
861 | 
				HelperUtils.getReferencedType(model.getString().getPrototype().getSuperTypes().iterator().next()));
	}
	
	/**
	 * Group:group=[A:class={Attribute1:(name:String, alter: Integer, b:B, clss:Class);}; B:class=A+{}; C:class=B+{};
	 * D:class=B+{}; Class:class={};]; .
	 * 
	 * @throws Exception
	 *             Exception
	 */
	@Test
	public void testProductHierarchie() throws Exception {
		final SimpleScannerInput input =
				new SimpleScannerInput(
						"Group:group=[A:class={Attribute1:(name:String, alter: Integer, b:B, clss:Class);}; B:class=A+{}; C:class=B+{}; "
								+ "D:class=B+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final Iterator<GroupElement> iterator = model.getGroups().iterator().next().getGroupElements().iterator();
		final ClassType clssA = (ClassType) iterator.next();
		final ClassType clssB = (ClassType) iterator.next();
		iterator.next();
		iterator.next();
		final ClassType clss = (ClassType) iterator.next();
		
		final Iterator<Attribute> attrIterator = clssA.getAttributes().iterator();
		
		final Attribute attr1 = attrIterator.next();
		
		assertEquals(0, attr1.getAttrType().getSuperTypes().size());
		final Type attr1Type = attr1.getAttrType().getPrototype();
		final Collection<Type> supertypesAttr1 = attr1Type.getSuperTypes();  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
387 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
599 | 
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.doubleSquareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Operation> operations = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(myGroup);
		final Group group = Group.create(groupName, groupVector, myGroup);
		
		final Name className = groupName.addName(myClass);
		final ClassType class1 =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						new Vector<Attribute>(),
						new Vector<Type>(),
						operations,
						new Vector<Constructor>(),
						myClass,
						
						new Vector<ClassType>());
		groupVector.add(class1);
		
		final ProductType product = ProductType.create(this.bracketOpenToken);
		final ByNameState byNameString = ByNameState.create(UnqualifiedName.create(string));
		final TypeProxy typeProxyString = TypeProxy.create(string, byNameString);   | 
| File | 
Line | 
| de/fhdw/wtf/parser/testWithScanner/TestParserScanner.java | 
286 | 
| de/fhdw/wtf/parser/testWithScanner/TestParserScanner.java | 
370 | 
	public void testSimpleClassOperation4() throws Exception {
		final IdentifierToken classIdentifier = IdentifierToken.create("class1", Position.create("", 1, 1, 0));
		final IdentifierToken test = IdentifierToken.create("test", Position.create("", 1, 1, 0));
		final IdentifierToken op1 = IdentifierToken.create("op1", Position.create("", 1, 1, 0));
		final IdentifierToken op2 = IdentifierToken.create("op2", Position.create("", 1, 1, 0));
		final IdentifierToken groupIdentifier = IdentifierToken.create("group1", Position.create("", 1, 1, 0));
		final IdentifierToken param1Identifier = IdentifierToken.create("param1", Position.create("", 1, 1, 0));
		final IdentifierToken param2Identifier = IdentifierToken.create("param2", Position.create("", 1, 1, 0));
		final IdentifierToken integerIdentifier = IdentifierToken.create("Integer", Position.create("", 1, 1, 0));
		final IdentifierToken stringIdentifier = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		
		final SimpleScannerInput input =
				new SimpleScannerInput(  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
130 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
463 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
531 | 
	public void testOneAttribute() throws Exception {
		final IdentifierToken groupIdentifier = IdentifierToken.create("Group", Position.create("", 0 + 1, 0 + 1, 0));
		final IdentifierToken classIdentifier = IdentifierToken.create("Class", Position.create("", 0 + 1, 0 + 1, 0));
		final IdentifierToken attributeIdentifier =
				IdentifierToken.create("Attribute", Position.create("", 0 + 1, 0 + 1, 0));
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(attributeIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.stringIdentifier);
		this.stream.add(this.semicolonToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
480 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
550 | 
		this.stream.add(this.stringIdentifier);
		this.stream.add(this.asteriskToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType classModel =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState attributeReferenceState = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		final TypeProxy attributeType = TypeProxy.create(this.stringIdentifier, attributeReferenceState);
		final ListType listType = ListType.create(this.stringIdentifier, attributeType);   | 
| File | 
Line | 
| de/fhdw/wtf/parser/testWithScanner/TestParserScanner.java | 
150 | 
| de/fhdw/wtf/parser/testWithScanner/TestParserScanner.java | 
217 | 
| de/fhdw/wtf/parser/testWithScanner/TestParserScanner.java | 
299 | 
						"group1 : group = [ class1 : class = {op : [[(param:Integer)->test]];} service transient;];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Operation> operations = new Vector<>();
		final Vector<ClassModifier> modifiers = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, GroupToken.create(Position.create("", 1, 1, 0)));
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType clazz =
				RegularClassType.create(
						className,
						modifiers,
						new Vector<Attribute>(),
						new Vector<Type>(),
						operations,
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ProductType product = ProductType.create(this.bracketOpenToken);
		final ByNameState integerByName = ByNameState.create(UnqualifiedName.create(integerIdentifier));
		final TypeProxy typeProxyInteger = TypeProxy.create(paramIdentifier, integerByName);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1314 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1432 | 
		this.stream.add(this.integerIdentifier);
		this.stream.add(this.bracketCloseToken);
		this.stream.add(this.arrowToken);
		this.stream.add(this.integerIdentifier);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType classModel =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState stringReferenceState = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));   | 
| File | 
Line | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1215 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1533 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1611 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1691 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1776 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
2063 | 
		actualSum.add(actualThrownType);
		
		final List<Type> standardizeElements = actualSum.standardize().accept(new TypeVisitorReturn<List<Type>>() {
			
			@Override
			public List<Type> handle(final AtomicType atomicType) {
				return new ArrayList<>();
			}
			
			@Override
			public List<Type> handle(final CompositeType compositeType) {
				return compositeType.accept(new CompositeTypeVisitorReturn<List<Type>>() {
					
					@Override
					public List<Type> handle(final ListType list) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final MapType map) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final ProductType product) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final SumType sum2) {
						return sum2.getElements();
					}
					
					@Override
					public List<Type> handle(final ThrownType thrownType) {
						return new ArrayList<>();
					}
				});
			}
			
			@Override
			public List<Type> handle(final TypeProxy typeProxy) {
				return new ArrayList<>();
			}
		});
		
		// Prepare Expected
		final ThrownType expectedThrownType =  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
130 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
463 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
531 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1859 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1927 | 
	public void testOneAttribute() throws Exception {
		final IdentifierToken groupIdentifier = IdentifierToken.create("Group", Position.create("", 0 + 1, 0 + 1, 0));
		final IdentifierToken classIdentifier = IdentifierToken.create("Class", Position.create("", 0 + 1, 0 + 1, 0));
		final IdentifierToken attributeIdentifier =
				IdentifierToken.create("Attribute", Position.create("", 0 + 1, 0 + 1, 0));
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(attributeIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.stringIdentifier);
		this.stream.add(this.semicolonToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
926 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1000 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1077 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1154 | 
	public void testAttributeMap() throws Exception {
		final IdentifierToken groupIdentifier = IdentifierToken.create("Group", Position.create("", 1, 1, 0));
		final IdentifierToken classIdentifier = IdentifierToken.create("Class", Position.create("", 1, 1, 0));
		final IdentifierToken attributeIdentifier = IdentifierToken.create("Attribute", Position.create("", 1, 1, 0));
		
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(attributeIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.integerIdentifier);
		this.stream.add(this.arrowToken);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
127 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
479 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
519 | 
						+ "NaturalPerson:class=Person+{}; CorporateBody:class=Person+{};];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		final SimpleWalkerTask referencer = TypeReferencer.create(model, taskmanager);
		final SimpleWalkerTask cyclicInheritance = CyclicInheritanceCheck.create(model, taskmanager);
		cyclicInheritance.addDependency(referencer);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<OKTaskResult>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<ExceptionalTaskResult>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(2, okResult.size());
		assertEquals(0, failResult.size());
	}
	
	@Test
	public void testCyclicInheritanceOverMoreClasses() throws InterruptedException, ExecutionException,  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
832 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
820 | 
				HelperUtils.getReferencedType(model.getString().getPrototype().getSuperTypes().iterator().next()));
	}
	
	/**
	 * Group:group=[A:class={Attribute1:{C,D};}; B:class=A+{}; C:class=B+{}; D:class=B+{}; Class:class={};]; .
	 * 
	 * @throws Exception
	 *             Exception
	 */
	@Test
	public void testTransitiveInheritanceAndSumSupertypeIsClass3() throws Exception {
		final SimpleScannerInput input =
				new SimpleScannerInput("Group:group=[A:class={Attribute1:{C,D};}; B:class=A+{}; C:class=B+{}; "
						+ "D:class=B+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final Iterator<GroupElement> iterator = model.getGroups().iterator().next().getGroupElements().iterator();
		final ClassType clssA = (ClassType) iterator.next();
		final ClassType clssB = (ClassType) iterator.next();
		
		final Iterator<Attribute> attrIterator = clssA.getAttributes().iterator();
		
		final Attribute attr1 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
130 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
463 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
531 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2001 | 
	public void testOneAttribute() throws Exception {
		final IdentifierToken groupIdentifier = IdentifierToken.create("Group", Position.create("", 0 + 1, 0 + 1, 0));
		final IdentifierToken classIdentifier = IdentifierToken.create("Class", Position.create("", 0 + 1, 0 + 1, 0));
		final IdentifierToken attributeIdentifier =
				IdentifierToken.create("Attribute", Position.create("", 0 + 1, 0 + 1, 0));
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(attributeIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.stringIdentifier);
		this.stream.add(this.semicolonToken);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestAnalyzeInheritanceTreesTask.java | 
304 | 
| de/fhdw/wtf/walker/tasks/test/TestAnalyzeInheritanceTreesTask.java | 
353 | 
| de/fhdw/wtf/walker/tasks/test/TestAnalyzeInheritanceTreesTask.java | 
402 | 
| de/fhdw/wtf/walker/tasks/test/TestAnalyzeInheritanceTreesTask.java | 
453 | 
| de/fhdw/wtf/walker/tasks/test/TestAnalyzeInheritanceTreesTask.java | 
523 | 
| de/fhdw/wtf/walker/tasks/test/TestAnalyzeInheritanceTreesTask.java | 
602 | 
| de/fhdw/wtf/walker/tasks/test/TestAnalyzeInheritanceTreesTask.java | 
677 | 
| de/fhdw/wtf/walker/tasks/test/TestAnalyzeInheritanceTreesTask.java | 
742 | 
		final Model model = SyntaxCheck.getInstance().getModelFromString(input);
		
		final Iterator<Type> iterator = model.getConstructorCallDependencies().keySet().iterator();
		while (iterator.hasNext()) {
			final Type current = iterator.next();
			
			switch (current.getTypeString()) {
			case "group1>A":
				assertTrue(true);
				assertEquals(0, model.getConstructorCallDependencies().get(current).size());
				break;
			case "group1>B":
				final Iterator<Type> bIterator = model.getConstructorCallDependencies().get(current).iterator();
				assertEquals("group1>A", bIterator.next().toString());
				assertEquals(1, model.getConstructorCallDependencies().get(current).size());
				break;
			case "group1>C":
				final Iterator<Type> cIterator = model.getConstructorCallDependencies().get(current).iterator();
				assertEquals("group1>A", cIterator.next().toString());
				assertEquals(1, model.getConstructorCallDependencies().get(current).size());
				break;
			case "group1>D":
				final Iterator<Type> aIterator = model.getConstructorCallDependencies().get(current).iterator();  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
88 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
127 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
479 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
519 | 
						+ "CorporateBody:class=Person+{}; group2:group=[Person:class={};];];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		final SimpleWalkerTask referencer = TypeReferencer.create(model, taskmanager);
		final SimpleWalkerTask cyclicInheritance = CyclicInheritanceCheck.create(model, taskmanager);
		cyclicInheritance.addDependency(referencer);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<OKTaskResult>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<ExceptionalTaskResult>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(2, okResult.size());
		assertEquals(0, failResult.size());
	}
	
	@Test
	public void testInheritFromBasetype() throws InterruptedException, ExecutionException, NoValidTokenStreamException,  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
1079 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
1148 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
877 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
992 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
1062 | 
								+ "D:class=B+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final Iterator<GroupElement> iterator = model.getGroups().iterator().next().getGroupElements().iterator();
		final ClassType clssA = (ClassType) iterator.next();
		final ClassType clssB = (ClassType) iterator.next();
		iterator.next();
		iterator.next();
		final ClassType clss = (ClassType) iterator.next();
		
		final Iterator<Attribute> attrIterator = clssA.getAttributes().iterator();
		
		final Attribute attr1 = attrIterator.next();
		
		// Summe
		assertEquals(0, attr1.getAttrType().getSuperTypes().size());
		final Type attr1Type = attr1.getAttrType().getPrototype();
		final Collection<Type> supertypesAttr1 = attr1Type.getSuperTypes();
		
		Collection<Type> expectedSupertypes = new ArrayList<>();  | 
| File | 
Line | 
| de/fhdw/wtf/parser/testWithScanner/TestParserScanner.java | 
468 | 
| de/fhdw/wtf/parser/testWithScanner/TestParserScanner.java | 
708 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
87 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
180 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
254 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
320 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
425 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
525 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
625 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
741 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
865 | 
						"group1 : group = [ class1 : class = {map : [String->Integer];} visitable abstract;];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		final Vector<ClassModifier> modifiers = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, GroupToken.create(Position.create("", 1, 1, 0)));
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType clazz =
				RegularClassType.create(
						className,
						modifiers,
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState integerByName = ByNameState.create(UnqualifiedName.create(integerIdentifier));
		final TypeProxy typeProxyInteger = TypeProxy.create(integerIdentifier, integerByName);
		
		final ByNameState stringByName = ByNameState.create(UnqualifiedName.create(stringIdentifier));  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
782 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
769 | 
				HelperUtils.getReferencedType(model.getString().getPrototype().getSuperTypes().iterator().next()));
	}
	
	/**
	 * Group:group=[A:class={Attribute1:{B,C}; Attribute2:{D,E,F,G};}; B:class=A+{}; C:class=A+{}; D:class=B+{};
	 * E:class=B+{}; F:class=C+{}; G:class=C+{}; Class:class={};]; .
	 * 
	 * @throws Exception
	 *             Exception
	 */
	@Test
	public void testTransitiveInheritanceAndSumSupertypeIsClass2() throws Exception {
		final SimpleScannerInput input =
				new SimpleScannerInput("Group:group=[A:class={Attribute1:{B,C}; Attribute2:{D,E,F,G};}; B:class=A+{}; "
						+ "C:class=A+{}; D:class=B+{}; E:class=B+{}; F:class=C+{}; G:class=C+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final Iterator<GroupElement> iterator = model.getGroups().iterator().next().getGroupElements().iterator();
		final ClassType clssA = (ClassType) iterator.next();
		
		final Iterator<Attribute> attrIterator = clssA.getAttributes().iterator();
		
		final Attribute attr1 = attrIterator.next();
		final Attribute attr2 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestBaseTypeInheritanceCheck.java | 
168 | 
| de/fhdw/wtf/walker/tasks/test/TestBaseTypeInheritanceCheck.java | 
217 | 
		final SimpleScannerInput input = new SimpleScannerInput("personGroup:group=[Person:class=Anything+{};];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		final SimpleWalkerTask referencer = TypeReferencer.create(model, taskmanager);
		final SimpleWalkerTask baseTypeInheritanceCheck = BaseTypeInheritanceCheck.create(model, taskmanager);
		baseTypeInheritanceCheck.addDependency(referencer);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(2, okResult.size());
		assertEquals(0, failResult.size());
	}
	
	/**
	 * personGroup:group=[Person:class=Person+{};];.
	 * 
	 * @throws InterruptedException
	 *             InterruptedException
	 * @throws ExecutionException
	 *             ExecutionException
	 * @throws NoValidTokenStreamException
	 *             NoValidTokenStreamException
	 * @throws CyclicDependencyException
	 *             CyclicDependencyException
	 */
	@Test
	public void testInheritFromItself() throws InterruptedException, ExecutionException, NoValidTokenStreamException,  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
44 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
88 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
133 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
177 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
223 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
268 | 
						+ "Class3:class={Attribute1:Class2 symmetric (Class1);};];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		final SimpleWalkerTask referencer = TypeReferencer.create(model, taskmanager);
		final InvalidAttributeModifierCheck modifierCheck = InvalidAttributeModifierCheck.create(model, taskmanager);
		modifierCheck.addDependency(referencer);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(2, okResult.size());
		assertEquals(0, failResult.size());
	}
	
	/**
	 * Group:group=[Class1:class={}; Class2:class={}; Class3:class={Attribute1:Class2* symmetric (Class1);};];.
	 * 
	 * @throws Exception
	 *             : {@link de.fhdw.wtf.common.exception.parser.NoValidTokenStreamException}
	 */
	@Test
	public void testListOfSymmetricModifier() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
979 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1045 | 
		final IdentifierToken nameIdentifierToken = IdentifierToken.create("s", Position.create("", 1, 1, 0));
		
		final Vector<GroupElement> group1Vector = new Vector<>();
		final Vector<Constructor> constructors = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name group1Name = UnqualifiedName.create(group1IdentifierToken);
		final Group group1 = Group.create(group1Name, group1Vector, group1IdentifierToken);
		
		final Name aName = group1Name.addName(aIdentifierToken);
		final ClassType aClass =
				RegularClassType.create(
						aName,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						constructors,
						aIdentifierToken,
						
						new Vector<ClassType>());
		group1Vector.add(aClass);
		
		final ByNameState attributeStringReferenceState =
				ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		final ByNameState attributeIntegerReferenceState =
				ByNameState.create(UnqualifiedName.create(this.integerIdentifier));
		
		final TypeProxy stringType = TypeProxy.create(this.stringIdentifier, attributeStringReferenceState);
		final TypeProxy integerType = TypeProxy.create(this.integerIdentifier, attributeIntegerReferenceState);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
264 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
310 | 
	public void testTwoDifferentNames() throws InterruptedException, ExecutionException, NoValidTokenStreamException,
			CyclicDependencyException {
		final SimpleScannerInput input =
				new SimpleScannerInput(
						"Group:group=[Klasse:class={operation : [[(parameter1:Integer,parameter2:String) -> String ]];};];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		Model model = null;
		model = parser.parse();
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		ProductCheck.create(model, taskmanager);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(1, okResult.size());
		assertEquals(0, failResult.size());
	}
	
	/**
	 * Group:group=[Klasse:class={operation : [[(parameter1:Integer,parameter2:String) -> String ]];};]; .
	 * 
	 * @throws InterruptedException
	 * @throws ExecutionException
	 * @throws NoValidTokenStreamException
	 * @throws CyclicDependencyException
	 */
	@Test
	public void testTwoDifferentNames2() throws InterruptedException, ExecutionException, NoValidTokenStreamException,  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
88 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
127 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
479 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
519 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
606 | 
						+ "CorporateBody:class=Person+{}; group2:group=[Person:class={};];];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		final SimpleWalkerTask referencer = TypeReferencer.create(model, taskmanager);
		final SimpleWalkerTask cyclicInheritance = CyclicInheritanceCheck.create(model, taskmanager);
		cyclicInheritance.addDependency(referencer);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<OKTaskResult>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<ExceptionalTaskResult>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(2, okResult.size());
		assertEquals(0, failResult.size());
	}  | 
| File | 
Line | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
60 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
128 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
196 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
264 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
332 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
406 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
472 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
542 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
631 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
708 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
776 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
843 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
909 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
975 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1041 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1111 | 
		final List<Type> standardizeElements = sum.standardize().accept(new TypeVisitorReturn<List<Type>>() {
			
			@Override
			public List<Type> handle(final AtomicType atomicType) {
				return new ArrayList<>();
			}
			
			@Override
			public List<Type> handle(final CompositeType compositeType) {
				return compositeType.accept(new CompositeTypeVisitorReturn<List<Type>>() {
					
					@Override
					public List<Type> handle(final ListType list) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final MapType map) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final ProductType product) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final SumType sum2) {
						return sum2.getElements();
					}
					
					@Override
					public List<Type> handle(final ThrownType thrownType) {
						return new ArrayList<>();
					}
				});
			}
			
			@Override
			public List<Type> handle(final TypeProxy typeProxy) {
				return new ArrayList<>();
			}
		});  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
885 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
274 | 
		final IdentifierToken myGroup = IdentifierToken.create("MyGroup", Position.create("", 1, 1, 0));
		final IdentifierToken myClass = IdentifierToken.create("MyClass", Position.create("", 1, 1, 0));
		final IdentifierToken myOperation = IdentifierToken.create("MyOperation", Position.create("", 1, 1, 0));
		final IdentifierToken myParameter = IdentifierToken.create("MyParameter", Position.create("", 1, 1, 0));
		final IdentifierToken string = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(myOperation);  | 
| File | 
Line | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
60 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
128 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
196 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
264 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
332 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
406 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
472 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
542 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
631 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
708 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
776 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
843 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
909 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
975 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1041 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1111 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1217 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1535 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1613 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1693 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1778 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
2065 | 
		final List<Type> standardizeElements = sum.standardize().accept(new TypeVisitorReturn<List<Type>>() {
			
			@Override
			public List<Type> handle(final AtomicType atomicType) {
				return new ArrayList<>();
			}
			
			@Override
			public List<Type> handle(final CompositeType compositeType) {
				return compositeType.accept(new CompositeTypeVisitorReturn<List<Type>>() {
					
					@Override
					public List<Type> handle(final ListType list) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final MapType map) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final ProductType product) {
						return new ArrayList<>();
					}
					
					@Override
					public List<Type> handle(final SumType sum2) {
						return sum2.getElements();
					}
					
					@Override
					public List<Type> handle(final ThrownType thrownType) {
						return new ArrayList<>();
					}
				});
			}
			
			@Override
			public List<Type> handle(final TypeProxy typeProxy) {
				return new ArrayList<>();
			}
		});  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
130 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
463 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
531 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1859 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1927 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2043 | 
	public void testOneAttribute() throws Exception {
		final IdentifierToken groupIdentifier = IdentifierToken.create("Group", Position.create("", 0 + 1, 0 + 1, 0));
		final IdentifierToken classIdentifier = IdentifierToken.create("Class", Position.create("", 0 + 1, 0 + 1, 0));
		final IdentifierToken attributeIdentifier =
				IdentifierToken.create("Attribute", Position.create("", 0 + 1, 0 + 1, 0));
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(attributeIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.stringIdentifier);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
926 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1000 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1077 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1154 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1414 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2186 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2265 | 
	public void testAttributeMap() throws Exception {
		final IdentifierToken groupIdentifier = IdentifierToken.create("Group", Position.create("", 1, 1, 0));
		final IdentifierToken classIdentifier = IdentifierToken.create("Class", Position.create("", 1, 1, 0));
		final IdentifierToken attributeIdentifier = IdentifierToken.create("Attribute", Position.create("", 1, 1, 0));
		
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(attributeIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.integerIdentifier);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestBaseTypeInheritanceCheck.java | 
168 | 
| de/fhdw/wtf/walker/tasks/test/TestBaseTypeInheritanceCheck.java | 
217 | 
| de/fhdw/wtf/walker/tasks/test/TestBaseTypeInheritanceCheck.java | 
267 | 
		final SimpleScannerInput input = new SimpleScannerInput("personGroup:group=[Person:class=Anything+{};];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		final SimpleWalkerTask referencer = TypeReferencer.create(model, taskmanager);
		final SimpleWalkerTask baseTypeInheritanceCheck = BaseTypeInheritanceCheck.create(model, taskmanager);
		baseTypeInheritanceCheck.addDependency(referencer);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(2, okResult.size());
		assertEquals(0, failResult.size());
	}  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
750 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
830 | 
	public void testTransitiveInheritanceAndSumSupertypeIsClass() throws Exception {
		final SimpleScannerInput input =
				new SimpleScannerInput("Group:group=[A:class={Attribute1:{C,D};}; B:class=A+{}; C:class=B+{}; "
						+ "D:class=B+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final Iterator<GroupElement> iterator = model.getGroups().iterator().next().getGroupElements().iterator();
		final ClassType clssA = (ClassType) iterator.next();
		final ClassType clssB = (ClassType) iterator.next();
		
		final Iterator<Attribute> attrIterator = clssA.getAttributes().iterator();
		
		final Attribute attr1 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
842 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
738 | 
	public void testTransitiveInheritanceAndSumSupertypeIsClass3() throws Exception {
		final SimpleScannerInput input =
				new SimpleScannerInput("Group:group=[A:class={Attribute1:{C,D};}; B:class=A+{}; C:class=B+{}; "
						+ "D:class=B+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final Iterator<GroupElement> iterator = model.getGroups().iterator().next().getGroupElements().iterator();
		final ClassType clssA = (ClassType) iterator.next();
		final ClassType clssB = (ClassType) iterator.next();
		
		final Iterator<Attribute> attrIterator = clssA.getAttributes().iterator();
		
		final Attribute attr1 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
299 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
599 | 
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.doubleSquareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Operation> operations = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(myGroup);
		final Group group = Group.create(groupName, groupVector, myGroup);
		
		final Name className = groupName.addName(myClass);
		final ClassType class1 =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						new Vector<Attribute>(),
						new Vector<Type>(),
						operations,
						new Vector<Constructor>(),
						myClass,
						
						new Vector<ClassType>());
		groupVector.add(class1);
		
		final ProductType product = ProductType.create(this.bracketOpenToken);
		final ByNameState byName = ByNameState.create(UnqualifiedName.create(string));   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
221 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
599 | 
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.doubleSquareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Operation> operations = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(myGroup);
		final Group group = Group.create(groupName, groupVector, myGroup);
		
		final Name className = groupName.addName(myClass);
		
		final ClassType class1 =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						new Vector<Attribute>(),
						new Vector<Type>(),
						operations,
						new Vector<Constructor>(),
						myClass,
						
						new Vector<ClassType>());
		groupVector.add(class1);
		
		final ProductType product = ProductType.create(this.bracketOpenToken);
		final SumType sum = SumType.create(this.curlyBracketOpenToken);   | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
269 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
426 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
235 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
281 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
394 | 
						+ "B:class=A+{}; C:class=A+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final ClassType clss = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		final Iterator<Attribute> attrIterator = clss.getAttributes().iterator();
		final Attribute attr1 = attrIterator.next();
		final Attribute attr2 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();
		assertEquals(1, supertypesAttr1.size());
		final Iterator<Type> superTypesAttr1Iterator = supertypesAttr1.iterator();  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2001 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2043 | 
	public void testSimpleClassInGroupWithPriorModifiersComplete() {
		final IdentifierToken groupIdentifier = IdentifierToken.create("Group", Position.create("", 0 + 1, 0 + 1, 0));
		final IdentifierToken classIdentifier = IdentifierToken.create("Class", Position.create("", 0 + 1, 0 + 1, 0));
		final IdentifierToken attributeIdentifier =
				IdentifierToken.create("Attribute", Position.create("", 0 + 1, 0 + 1, 0));
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(attributeIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.stringIdentifier);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
222 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
269 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
316 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
426 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
473 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
190 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
235 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
281 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
394 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
439 | 
						+ "Attribute2:{String,Integer};};" + "Class2:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final ClassType clss = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		final Iterator<Attribute> attrIterator = clss.getAttributes().iterator();
		final Attribute attr1 = attrIterator.next();
		final Attribute attr2 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();
		assertEquals(1, supertypesAttr1.size());
		final Iterator<Type> superTypesAttr1Iterator = supertypesAttr1.iterator();  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
360 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
668 | 
		final IdentifierToken myParameter2 = IdentifierToken.create("MyParameter2", Position.create("", 1, 1, 0));
		final IdentifierToken string = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		final IdentifierToken integer = IdentifierToken.create("Integer", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(myOperation);
		this.stream.add(this.colonToken);
		this.stream.add(this.doubleSquareBracketOpenToken);
		this.stream.add(this.bracketOpenToken);
		this.stream.add(myParameter1);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
980 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
1079 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
1148 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
992 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
1062 | 
								+ "D:class=B+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final Iterator<GroupElement> iterator = model.getGroups().iterator().next().getGroupElements().iterator();
		final ClassType clssA = (ClassType) iterator.next();
		final ClassType clssB = (ClassType) iterator.next();
		iterator.next();
		iterator.next();
		final ClassType clss = (ClassType) iterator.next();
		
		final Iterator<Attribute> attrIterator = clssA.getAttributes().iterator();
		
		final Attribute attr1 = attrIterator.next();
		
		assertEquals(0, attr1.getAttrType().getSuperTypes().size());
		final Type attr1Type = attr1.getAttrType().getPrototype();
		final Collection<Type> supertypesAttr1 = attr1Type.getSuperTypes();  | 
| File | 
Line | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1401 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1488 | 
		actualSum.add(TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(a))));
		actualSum.add(ThrownType.create(
				dummyToken,
				TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(b)))));
		
		final ThrownType thrownType = ThrownType.create(DummyToken.getInstance(), actualSum, DummyToken.getInstance());
		
		final Type standardizedType = thrownType.standardize();
		
		// Prepare Expected
		final SumType expectedSum = SumType.create(dummyToken);
		expectedSum.add(ThrownType.create(
				dummyToken,
				TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(a)))));
		expectedSum.add(ThrownType.create(
				dummyToken,
				TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(b)))));
		
		// Test
		assertTrue(standardizedType instanceof SumType);
		final SumType sum = (SumType) standardizedType;
		assertEquals(2, sum.getElements().size());
		assertEquals(2, expectedSum.getElements().size());
		this.assertEqualsOnlists(sum.getElements(), expectedSum.getElements());
	}
	
	/**
	 * {B!,A}! => Result: {A!,B!}.
	 * 
	 * @throws SumIsAnythingException
	 *             If it contains Anything throw specified Exception
	 */
	@Test
	public void testThrownSumContainsOneThrownTypeSecondAndOneNormalThrownTypesAndDifferentOrder()  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
145 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
300 | 
		this.stream.add(attributeIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.stringIdentifier);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group1 = Group.create(groupName, groupVector, groupIdentifier);
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType class1 =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						new Vector<ClassType>());
		
		final ByNameState attributeTypeReferenceState =   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
549 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
781 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
866 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1610 | 
		this.stream.add(this.asteriskToken);
		this.stream.add(this.asteriskToken);
		this.stream.add(this.asteriskToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType classModel =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState attributeReferenceState = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));   | 
| File | 
Line | 
| de/fhdw/wtf/parser/testWithScanner/TestParserScanner.java | 
91 | 
| de/fhdw/wtf/parser/testWithScanner/TestParserScanner.java | 
150 | 
| de/fhdw/wtf/parser/testWithScanner/TestParserScanner.java | 
217 | 
| de/fhdw/wtf/parser/testWithScanner/TestParserScanner.java | 
299 | 
				new SimpleScannerInput("group1 : group = [ class1 : class = {op : [[()->test]];} service transient;];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Operation> operations = new Vector<>();
		final Vector<ClassModifier> modifiers = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, GroupToken.create(Position.create("", 1, 1, 0)));
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType clazz =
				RegularClassType.create(
						className,
						modifiers,
						new Vector<Attribute>(),
						new Vector<Type>(),
						operations,
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ProductType product = ProductType.create(this.bracketOpenToken);
		final ByNameState testByName = ByNameState.create(UnqualifiedName.create(test));  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
603 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
926 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1000 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1077 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1154 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1414 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2186 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2265 | 
	public void testAttributeWithEmptyProduct() throws Exception {
		final IdentifierToken groupIdentifier = IdentifierToken.create("Group", Position.create("", 1, 1, 0));
		final IdentifierToken classIdentifier = IdentifierToken.create("Class", Position.create("", 1, 1, 0));
		final IdentifierToken attributeIdentifier = IdentifierToken.create("Attribute", Position.create("", 1, 1, 0));
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(attributeIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.bracketOpenToken);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
231 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
325 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
374 | 
		final Attribute attr2 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();
		assertEquals(1, supertypesAttr1.size());
		final Iterator<Type> superTypesAttr1Iterator = supertypesAttr1.iterator();
		assertEquals(model.getAnything().getPrototype(), HelperUtils.getReferencedType(superTypesAttr1Iterator.next()));
		
		assertEquals(0, ((SumType) attr2.getAttrType()).getSuperTypes().size());
		final Collection<Type> supertypesAttr2 =
				((SumType) ((SumType) attr2.getAttrType()).getPrototype()).getSuperTypes();
		assertEquals(1, supertypesAttr2.size());
		final Iterator<Type> superTypesAttr2Iterator = supertypesAttr2.iterator();
		assertEquals(attr1Type, superTypesAttr2Iterator.next());
		
		assertEquals(1, model.getInteger().getPrototype().getSuperTypes().size());   | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
506 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
479 | 
				HelperUtils.getReferencedType(model.getString().getPrototype().getSuperTypes().iterator().next()));
	}
	
	/**
	 * Group:group=[A:class={ Attribute1:{B,C};}; B:class=A+{}; C:class=A+{}; Class:class={};]; .
	 * 
	 * @throws Exception
	 *             Exception
	 */
	@Test
	public void testSumSupertypeIsAnClass3() throws Exception {
		final SimpleScannerInput input =
				new SimpleScannerInput("Group:group=[A:class={ Attribute1:{B,C};}; "
						+ "B:class=A+{}; C:class=A+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final ClassType clss = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		final Iterator<Attribute> attrIterator = clss.getAttributes().iterator();
		final Attribute attr1 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();
		assertEquals(1, supertypesAttr1.size());  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
481 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
551 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1877 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1948 | 
		this.stream.add(this.asteriskToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType classModel =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState attributeReferenceState = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		final TypeProxy attributeType = TypeProxy.create(this.stringIdentifier, attributeReferenceState);   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1293 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1494 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1585 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1772 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2357 | 
		final IdentifierToken countIdentifier = IdentifierToken.create("count", Position.create("", 1, 1, 0));
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(attributeIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.bracketOpenToken);
		this.stream.add(nameIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.stringIdentifier);
		this.stream.add(this.commaToken);
		this.stream.add(countIdentifier);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2355 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2458 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2548 | 
		final IdentifierToken productIdentifier = IdentifierToken.create("product", Position.create("", 1, 1, 0));
		final IdentifierToken trueIdentifier = IdentifierToken.create("true", Position.create("", 1, 1, 0));
		final IdentifierToken falseIdentifier = IdentifierToken.create("false", Position.create("", 1, 1, 0));
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(attributeIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.bracketOpenToken);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
451 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
496 | 
				new SimpleScannerInput("Group:group=[Klasse:class={attr : (parameter:Integer,Parameter:String);};];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		Model model = null;
		model = parser.parse();
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		ProductCheck.create(model, taskmanager);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<OKTaskResult>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<ExceptionalTaskResult>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(1, okResult.size());
		assertEquals(0, failResult.size());
	}
	
	/**
	 * Group:group=[Klasse:class={attr : (parameter:Integer,paraMeter:String);};]; .
	 * 
	 * @throws InterruptedException
	 * @throws ExecutionException
	 * @throws NoValidTokenStreamException
	 * @throws CyclicDependencyException
	 */
	@Test
	public void testCapitalisation4() throws InterruptedException, ExecutionException, NoValidTokenStreamException,  | 
| File | 
Line | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1319 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1361 | 
		actualSum.add(TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(a))));
		actualSum.add(TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(b))));
		
		final ThrownType thrownType = ThrownType.create(DummyToken.getInstance(), actualSum, DummyToken.getInstance());
		
		final Type standardizedType = thrownType.standardize();
		
		// Prepare Expected
		final SumType expectedSum = SumType.create(dummyToken);
		expectedSum.add(ThrownType.create(
				dummyToken,
				TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(a)))));
		expectedSum.add(ThrownType.create(
				dummyToken,
				TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(b)))));
		
		// Test
		assertTrue(standardizedType instanceof SumType);
		final SumType sum = (SumType) standardizedType;
		assertEquals(2, sum.getElements().size());
		assertEquals(2, expectedSum.getElements().size());
		this.assertEqualsOnlists(sum.getElements(), expectedSum.getElements());
	}
	
	/**
	 * {A!,B}! => Result: {A!,B!}.
	 * 
	 * @throws SumIsAnythingException
	 *             If it contains Anything throw specified Exception
	 */
	@Test
	public void testThrownSumContainsOneThrownTypeFirstAndOneNormalThrownTypes() throws SumIsAnythingException {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
95 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
141 | 
		final SimpleScannerInput input = new SimpleScannerInput("Group1:group=[A:class={};];");
		final VerboseTokenStream output = new VerboseTokenStream(SimpleTokenStream.create());
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		
		final IdentifierToken group1IdentifierToken = (IdentifierToken) output.getStream().peek();
		final IdentifierToken aIdentifierToken = IdentifierToken.create("A", Position.create("", 1, 15, 6));
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Constructor> constructors = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(group1IdentifierToken);
		final Group group = Group.create(groupName, groupVector, group1IdentifierToken);
		
		final Name aName = groupName.addName(aIdentifierToken);
		final ClassType aClass =
				RegularClassType.create(
						aName,
						new Vector<ClassModifier>(),
						new Vector<Attribute>(),
						new Vector<Type>(),
						new Vector<Operation>(),
						constructors,
						aIdentifierToken,
						
						new Vector<ClassType>());
		groupVector.add(aClass);
		
		final Model expected = Model.create(group1IdentifierToken);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
127 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
166 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
214 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
283 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
332 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
381 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
430 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
479 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
519 | 
						+ "NaturalPerson:class=Person+{}; CorporateBody:class=Person+{};];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		final SimpleWalkerTask referencer = TypeReferencer.create(model, taskmanager);
		final SimpleWalkerTask cyclicInheritance = CyclicInheritanceCheck.create(model, taskmanager);
		cyclicInheritance.addDependency(referencer);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<OKTaskResult>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<ExceptionalTaskResult>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(2, okResult.size());  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
268 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
314 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
360 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
406 | 
						"Group:group=[Klasse:class={operation : [[(parameter1:Integer,parameter2:String) -> String ]];};];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		Model model = null;
		model = parser.parse();
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		ProductCheck.create(model, taskmanager);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(1, okResult.size());
		assertEquals(0, failResult.size());
	}
	
	/**
	 * Group:group=[Klasse:class={operation : [[(parameter1:Integer,parameter2:String) -> String ]];};]; .
	 * 
	 * @throws InterruptedException
	 * @throws ExecutionException
	 * @throws NoValidTokenStreamException
	 * @throws CyclicDependencyException
	 */
	@Test
	public void testTwoDifferentNames2() throws InterruptedException, ExecutionException, NoValidTokenStreamException,  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
481 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
551 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1877 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1948 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2136 | 
		this.stream.add(this.asteriskToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType classModel =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState attributeReferenceState = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
688 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
763 | 
		final IdentifierToken iParameterIdentifierToken = IdentifierToken.create("i", Position.create("", 1, 1, 1));
		
		final IdentifierToken op1 = IdentifierToken.create("op1", Position.create("", 1, 1, 0));
		final IdentifierToken op2 = IdentifierToken.create("op2", Position.create("", 1, 1, 0));
		
		final Vector<GroupElement> group1Vector = new Vector<>();
		final Vector<Constructor> constructors = new Vector<>();
		final Vector<Operation> operations = new Vector<>();
		
		final Name group1Name = UnqualifiedName.create(group1IdentifierToken);
		final Group group1 = Group.create(group1Name, group1Vector, group1IdentifierToken);
		
		final Name aName = group1Name.addName(aIdentifierToken);
		final ClassType aClass =
				RegularClassType.create(
						aName,
						new Vector<ClassModifier>(),
						new Vector<Attribute>(),
						new Vector<Type>(),
						operations,
						constructors,
						aIdentifierToken,
						
						new Vector<ClassType>());
		group1Vector.add(aClass);
		
		final ProductType aProduct = ProductType.create(this.bracketOpenToken);
		final ProductType sProduct = ProductType.create(this.bracketOpenToken);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
39 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
88 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
127 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
166 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
214 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
283 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
332 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
381 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
430 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
479 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
519 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
559 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
606 | 
						+ "CorporateBody:class=Person+{};];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		final SimpleWalkerTask referencer = TypeReferencer.create(model, taskmanager);
		final SimpleWalkerTask cyclicInheritance = CyclicInheritanceCheck.create(model, taskmanager);
		cyclicInheritance.addDependency(referencer);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<OKTaskResult>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<ExceptionalTaskResult>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(1, okResult.size());  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestGetFirstAndLastToken.java | 
414 | 
| de/fhdw/wtf/parser/test/TestGetFirstAndLastToken.java | 
503 | 
| de/fhdw/wtf/parser/test/TestGetFirstAndLastToken.java | 
715 | 
		expectedLastToken = EndToken.create(Position.create("", 0 + 1, 47 + 1, 47));
		
		assertEquals(expectedFirstToken, group.getFirstToken());
		assertEquals(expectedLastToken, group.getLastToken());
		
		// Gruppenname
		Name name = group.getName();
		assertEquals(expectedFirstToken, name.getFirstToken());
		expectedLastToken = ColonToken.create(Position.create("", 0 + 1, 5 + 1, 5));
		assertEquals(expectedLastToken, name.getLastToken());
		
		// Klasse Class
		final Iterator<GroupElement> iterator2 = group.getGroupElements().iterator();
		final GroupElement groupElement = iterator2.next();
		final ClassType class1 = groupElement.accept(new GroupElementReturnVisitor<ClassType>() {
			
			@Override
			public ClassType handle(final Group group) {
				fail();
				return null;
			}
			
			@Override
			public ClassType handle(final ClassType clss) {
				return clss;
			}
		});
		
		expectedFirstToken = IdentifierToken.create("Class", Position.create("", 0 + 1, 13 + 1, 13));
		expectedLastToken = SquareBracketCloseToken.create(Position.create("", 0 + 1, 45 + 1, 45));  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
480 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
550 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
694 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
782 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
867 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1098 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1519 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1611 | 
		this.stream.add(this.stringIdentifier);
		this.stream.add(this.asteriskToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType classModel =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState attributeReferenceState = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
946 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1021 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1228 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1435 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1706 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1797 | 
		this.stream.add(this.stringIdentifier);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType classModel =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState stringReferenceState = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));   | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestBaseTypeInheritanceCheck.java | 
52 | 
| de/fhdw/wtf/walker/tasks/test/TestBaseTypeInheritanceCheck.java | 
110 | 
| de/fhdw/wtf/walker/tasks/test/TestBaseTypeInheritanceCheck.java | 
168 | 
| de/fhdw/wtf/walker/tasks/test/TestBaseTypeInheritanceCheck.java | 
217 | 
| de/fhdw/wtf/walker/tasks/test/TestBaseTypeInheritanceCheck.java | 
267 | 
		final SimpleScannerInput input = new SimpleScannerInput("personGroup:group=[Person:class=Integer+{};];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		final SimpleWalkerTask referencer = TypeReferencer.create(model, taskmanager);
		final SimpleWalkerTask baseTypeInheritanceCheck = BaseTypeInheritanceCheck.create(model, taskmanager);
		baseTypeInheritanceCheck.addDependency(referencer);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(1, okResult.size());  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
44 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
88 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
133 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
177 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
223 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
268 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
311 | 
						+ "Class3:class={Attribute1:Class2 symmetric (Class1);};];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		final SimpleWalkerTask referencer = TypeReferencer.create(model, taskmanager);
		final InvalidAttributeModifierCheck modifierCheck = InvalidAttributeModifierCheck.create(model, taskmanager);
		modifierCheck.addDependency(referencer);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(2, okResult.size());  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
619 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2135 | 
		this.stream.add(this.bracketOpenToken);
		this.stream.add(this.bracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType classModel =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ProductType product = ProductType.create(this.bracketOpenToken);   | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
484 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
534 | 
						"Group:group=[Klasse:class={name : String;operation : [[(parameter:Integer) -> String ]] ;operation2 : [[(parameter:Integer) -> String ]] abstract;} abstract; ];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		Model model = null;
		model = parser.parse();
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		AbstractOperationsCheck.create(model, taskmanager);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(1, okResult.size());
		assertEquals(0, failResult.size());
	}  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
268 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
314 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
360 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
406 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
544 | 
						"Group:group=[Klasse:class={operation : [[(parameter1:Integer,parameter2:String) -> String ]];};];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		Model model = null;
		model = parser.parse();
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		ProductCheck.create(model, taskmanager);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(1, okResult.size());
		assertEquals(0, failResult.size());
	}  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
278 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
374 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
435 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
482 | 
		final Attribute attr2 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();
		assertEquals(1, supertypesAttr1.size());
		final Iterator<Type> superTypesAttr1Iterator = supertypesAttr1.iterator();
		assertEquals(model.getAnything().getPrototype(), HelperUtils.getReferencedType(superTypesAttr1Iterator.next()));
		
		assertEquals(0, ((SumType) attr2.getAttrType()).getSuperTypes().size());
		final Collection<Type> supertypesAttr2 =
				((SumType) ((SumType) attr2.getAttrType()).getPrototype()).getSuperTypes();
		assertEquals(1, supertypesAttr2.size());
		final Iterator<Type> superTypesAttr2Iterator = supertypesAttr2.iterator();
		assertEquals(clss, HelperUtils.getReferencedType(superTypesAttr2Iterator.next()));   | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
199 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
345 | 
		final Attribute attr2 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();
		assertEquals(1, supertypesAttr1.size());
		final Iterator<Type> superTypesAttr1Iterator = supertypesAttr1.iterator();
		assertEquals(model.getAnything().getPrototype(), HelperUtils.getReferencedType(superTypesAttr1Iterator.next()));
		
		assertEquals(0, ((SumType) attr2.getAttrType()).getSuperTypes().size());
		final Collection<Type> supertypesAttr2 =
				((SumType) ((SumType) attr2.getAttrType()).getPrototype()).getSuperTypes();
		assertEquals(2, supertypesAttr2.size());
		final Iterator<Type> superTypesAttr2Iterator = supertypesAttr2.iterator();
		assertEquals(attr1Type, superTypesAttr2Iterator.next());   | 
| File | 
Line | 
| de/fhdw/wtf/parser/testWithScanner/TestParserScanner.java | 
91 | 
| de/fhdw/wtf/parser/testWithScanner/TestParserScanner.java | 
150 | 
| de/fhdw/wtf/parser/testWithScanner/TestParserScanner.java | 
217 | 
| de/fhdw/wtf/parser/testWithScanner/TestParserScanner.java | 
299 | 
| de/fhdw/wtf/parser/testWithScanner/TestParserScanner.java | 
383 | 
				new SimpleScannerInput("group1 : group = [ class1 : class = {op : [[()->test]];} service transient;];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Operation> operations = new Vector<>();
		final Vector<ClassModifier> modifiers = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, GroupToken.create(Position.create("", 1, 1, 0)));
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType clazz =
				RegularClassType.create(
						className,
						modifiers,
						new Vector<Attribute>(),
						new Vector<Type>(),
						operations,
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ProductType product = ProductType.create(this.bracketOpenToken);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
125 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
150 | 
		final SimpleScannerInput input = new SimpleScannerInput("Group:group=[];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		assertEquals(1, model.getInteger().getPrototype().getSuperTypes().size());
		assertEquals(
				model.getAnything().getPrototype(),
				HelperUtils.getReferencedType(model.getInteger().getPrototype().getSuperTypes().iterator().next()));
		
		assertEquals(1, model.getString().getPrototype().getSuperTypes().size());
		assertEquals(
				model.getAnything().getPrototype(),
				HelperUtils.getReferencedType(model.getString().getPrototype().getSuperTypes().iterator().next()));
	}
	
	/**
	 * Group:group=[Class:class={Attribute:String;};]; .
	 * 
	 * @throws Exception
	 *             Exception
	 */
	@Test
	public void testModelWithoutSum() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
846 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2355 | 
		final IdentifierToken attributeIdentifier = IdentifierToken.create("Attribute", Position.create("", 1, 1, 0));
		final IdentifierToken trueIdentifier = IdentifierToken.create("true", Position.create("", 1, 1, 0));
		final IdentifierToken falseIdentifier = IdentifierToken.create("false", Position.create("", 1, 1, 0));
		
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(attributeIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.curlyBracketOpenToken);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
177 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
222 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
269 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
316 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
426 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
473 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
149 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
190 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
235 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
281 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
394 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
439 | 
						+ "Attribute2:{String,Integer};};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final ClassType clss = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		final Iterator<Attribute> attrIterator = clss.getAttributes().iterator();
		final Attribute attr1 = attrIterator.next();
		final Attribute attr2 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestGroups.java | 
215 | 
| de/fhdw/wtf/parser/test/TestGroups.java | 
248 | 
	public void testSimpleGroupInGroupInGroup2GroupCloseMissing() {
		this.stream.add(this.idGroup1Token);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.idGroup2Token);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.idGroup3Token);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.semicolonToken);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
613 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
685 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
596 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
664 | 
						+ "Attribute3:{Integer,String};}; B:class=A+{}; C:class=A+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final Iterator<GroupElement> iterator = model.getGroups().iterator().next().getGroupElements().iterator();
		
		final ClassType clssA = (ClassType) iterator.next();
		final ClassType clssB = (ClassType) iterator.next();
		final ClassType clssC = (ClassType) iterator.next();
		final ClassType clssClass = (ClassType) iterator.next();
		
		final Iterator<Attribute> attrIterator = clssA.getAttributes().iterator();
		final Attribute attr1 = attrIterator.next();
		final Attribute attr2 = attrIterator.next();
		final Attribute attr3 = attrIterator.next();
		
		final Type attr2Type = ((SumType) attr2.getAttrType()).getPrototype();  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
365 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
394 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
533 | 
		final SimpleScannerInput input = new SimpleScannerInput("Group:group=[Class:class={Attribute1:{Class};};];");
		final Model model = this.getModel(input);
		
		assertTrue(model.getString().getPrototype() == model.getString());
		assertTrue(model.getInteger().getPrototype() == model.getInteger());
		
		final ClassType cls = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		
		assertTrue(cls.getPrototype() == cls);
		
		final Iterator<Attribute> attributes = cls.getAttributes().iterator();
		final Attribute attribute1 = attributes.next();
		
		assertTrue(attribute1.getAttrType() instanceof SumType);
		final SumType sum = (SumType) attribute1.getAttrType();
		
		assertTrue(sum.getPrototype() == cls);
		// String,Integer,Class
		assertEquals(3, ((SumType) model.getAnything().getPrototype()).getElements().size());
	}
	
	/**
	 * Group:group=[Class:class={Attribute1:{{Class}};};]; .
	 * 
	 * @throws Exception
	 *             possible Exception
	 */
	@Test
	public void testSumWithOneElementAtBeginningOneSumWithOneClass() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
481 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
551 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
695 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
783 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
868 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
947 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1022 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1099 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1229 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1318 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1436 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1520 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1612 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1707 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1798 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1877 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1948 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2136 | 
		this.stream.add(this.asteriskToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType classModel =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState attributeReferenceState = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
185 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
339 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
397 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
452 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
783 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
1064 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
277 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
580 | 
		final IdentifierToken myParameter = IdentifierToken.create("MyParameter", Position.create("", 1, 1, 0));
		final IdentifierToken string = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(myOperation);
		this.stream.add(this.colonToken);
		this.stream.add(this.doubleSquareBracketOpenToken);
		this.stream.add(this.bracketOpenToken);
		this.stream.add(myParameter);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
481 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
551 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
620 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
695 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
783 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
868 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
947 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1022 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1099 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1229 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1318 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1436 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1520 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1612 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1707 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1798 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1877 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1948 | 
		this.stream.add(this.asteriskToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType classModel =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						
						new Vector<ClassType>());
		
		final ByNameState attributeReferenceState = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
898 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
288 | 
		this.stream.add(this.equalToken);
		this.stream.add(myOperation);
		this.stream.add(this.colonToken);
		this.stream.add(this.doubleSquareBracketOpenToken);
		this.stream.add(this.bracketOpenToken);
		this.stream.add(myParameter);
		this.stream.add(this.colonToken);
		this.stream.add(string);
		this.stream.add(this.bracketCloseToken);
		this.stream.add(this.arrowToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.doubleSquareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
203 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
581 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
801 | 
		final IdentifierToken myOperation = IdentifierToken.create("MyOperation", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(myOperation);
		this.stream.add(this.colonToken);
		this.stream.add(this.doubleSquareBracketOpenToken);
		this.stream.add(this.bracketOpenToken);
		this.stream.add(this.bracketCloseToken);
		this.stream.add(this.arrowToken);
		this.stream.add(this.curlyBracketOpenToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
186 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
340 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
398 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
453 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
784 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
1065 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
278 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
670 | 
		final IdentifierToken string = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(myOperation);
		this.stream.add(this.colonToken);
		this.stream.add(this.doubleSquareBracketOpenToken);
		this.stream.add(this.bracketOpenToken);
		this.stream.add(myParameter);
		this.stream.add(this.colonToken);
		this.stream.add(string);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestGetFirstAndLastToken.java | 
443 | 
| de/fhdw/wtf/parser/test/TestGetFirstAndLastToken.java | 
532 | 
		expectedLastToken = SquareBracketCloseToken.create(Position.create("", 0 + 1, 45 + 1, 45));
		
		assertEquals(expectedFirstToken, class1.getFirstToken());
		assertEquals(expectedLastToken, class1.getLastToken());
		
		// Klassenname
		name = class1.getName();
		
		// klassenName
		final UnqualifiedName lastAddedName = name.getLastAddedName();
		expectedFirstToken = IdentifierToken.create("Class", Position.create("", 0 + 1, 13 + 1, 13));
		assertEquals(expectedFirstToken, lastAddedName.getFirstToken());
		expectedLastToken = ColonToken.create(Position.create("", 0 + 1, 18 + 1, 18));
		assertEquals(expectedLastToken, lastAddedName.getLastToken());
		
		// Attribut Attribute
		final Iterator<Attribute> iterator3 = class1.getAttributes().iterator();
		final Attribute attribute = iterator3.next();
		
		expectedFirstToken = IdentifierToken.create("Attribute", Position.create("", 0 + 1, 26 + 1, 26));
		expectedLastToken = CurlyBracketCloseToken.create(Position.create("", 0 + 1, 43 + 1, 43));  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
203 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
471 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
801 | 
		final IdentifierToken myOperation = IdentifierToken.create("MyOperation", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(myOperation);
		this.stream.add(this.colonToken);
		this.stream.add(this.doubleSquareBracketOpenToken);
		this.stream.add(this.bracketOpenToken);
		this.stream.add(this.bracketCloseToken);
		this.stream.add(this.arrowToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(this.curlyBracketCloseToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
859 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
918 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1044 | 
		final IdentifierToken aIdentifierToken = IdentifierToken.create("A", Position.create("", 1, 1, 0));
		final IdentifierToken sIdentifierToken = IdentifierToken.create("s", Position.create("", 1, 1, 0));
		
		final Vector<GroupElement> group1Vector = new Vector<>();
		final Vector<Constructor> constructors = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name group1Name = UnqualifiedName.create(group1IdentifierToken);
		final Group group1 = Group.create(group1Name, group1Vector, group1IdentifierToken);
		
		final Name aName = group1Name.addName(aIdentifierToken);
		final ClassType aClass =
				RegularClassType.create(
						aName,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						constructors,
						aIdentifierToken,
						
						new Vector<ClassType>());
		group1Vector.add(aClass);
		
		final ByNameState attributeStringReferenceState =
				ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		
		final TypeProxy stringType = TypeProxy.create(this.stringIdentifier, attributeStringReferenceState);  | 
| File | 
Line | 
| de/fhdw/wtf/core/integration/test/TestScannerParserIntegration.java | 
64 | 
| de/fhdw/wtf/core/integration/test/TestScannerParserIntegration.java | 
90 | 
		final SimpleTokenStream scannerOutput = SimpleTokenStream.create();
		final ModelDslScanner scanner = ModelDslScanner.create();
		scanner.scan(input, scannerOutput);
		final Parser p = Parser.create(scannerOutput);
		
		try {
			final Model result = p.parse();
			assertEquals(0, p.getExceptions().size());
			assertEquals(1, result.getGroups().size());
			final Group g = result.getGroups().iterator().next();
			assertEquals("gruppenName", ((UnqualifiedName) g.getName()).getIdentifierToken().getIdentifier());
			assertEquals(0, g.getGroupElements().size());
		} catch (final NoValidTokenStreamException e) {
			if (p.getExceptions().size() > 0) {
				System.out.println(p.getExceptions());
			}
			fail();
		}
	}
	
	/**
	 * "gruppenName : group =  \n [    \n];   " .
	 */
	@Test
	public void modelSimpleValidWhitespace() {  | 
| File | 
Line | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1320 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1362 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1404 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1447 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1491 | 
		actualSum.add(TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(b))));
		
		final ThrownType thrownType = ThrownType.create(DummyToken.getInstance(), actualSum, DummyToken.getInstance());
		
		final Type standardizedType = thrownType.standardize();
		
		// Prepare Expected
		final SumType expectedSum = SumType.create(dummyToken);
		expectedSum.add(ThrownType.create(
				dummyToken,
				TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(a)))));
		expectedSum.add(ThrownType.create(
				dummyToken,
				TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(b)))));
		
		// Test
		assertTrue(standardizedType instanceof SumType);
		final SumType sum = (SumType) standardizedType;
		assertEquals(2, sum.getElements().size());
		assertEquals(2, expectedSum.getElements().size());
		this.assertEqualsOnlists(sum.getElements(), expectedSum.getElements());
	}
	
	/**
	 * {A!,B}! => Result: {A!,B!}.
	 * 
	 * @throws SumIsAnythingException
	 *             If it contains Anything throw specified Exception
	 */
	@Test
	public void testThrownSumContainsOneThrownTypeFirstAndOneNormalThrownTypes() throws SumIsAnythingException {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
213 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
313 | 
		final Name cName = group1Name.addName(cIdentifierToken);
		
		final ClassType aClass =
				RegularClassType.create(
						aName,
						new Vector<ClassModifier>(),
						new Vector<Attribute>(),
						new Vector<Type>(),
						new Vector<Operation>(),
						aConstructors,
						aIdentifierToken,
						
						new Vector<ClassType>());
		
		final ClassType bClass =
				RegularClassType.create(
						bName,
						new Vector<ClassModifier>(),
						new Vector<Attribute>(),
						new Vector<Type>(),
						new Vector<Operation>(),
						bConstructors,
						
						bIdentifierToken,
						
						new Vector<ClassType>());
		
		final ClassType cClass =
				RegularClassType.create(
						cName,
						new Vector<ClassModifier>(),
						new Vector<Attribute>(),
						new Vector<Type>(),
						new Vector<Operation>(),
						cConstructors,
						cIdentifierToken,
						
						new Vector<ClassType>());   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
665 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
580 | 
		final IdentifierToken myParameter = IdentifierToken.create("MyParameter", Position.create("", 1, 1, 0));
		final IdentifierToken string = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(myOperation);
		this.stream.add(this.colonToken);
		this.stream.add(this.doubleSquareBracketOpenToken);
		this.stream.add(myParameter);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
47 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
103 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
159 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
215 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
271 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
327 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
383 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
484 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
534 | 
						"Group:group=[Klasse:class={name : String; operation : [[(parameter:Integer) -> String ]] abstract;}; ];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		Model model = null;
		model = parser.parse();
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		AbstractOperationsCheck.create(model, taskmanager);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(0, okResult.size());  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
47 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
101 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
158 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
213 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
268 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
314 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
360 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
406 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
544 | 
						"Group:group=[Klasse:class={operation : [[(parameter:Integer,parameter:String) -> String ]];};];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		Model model = null;
		model = parser.parse();
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		ProductCheck.create(model, taskmanager);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(0, okResult.size());  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1204 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2550 | 
		final IdentifierToken countIdentifier = IdentifierToken.create("count", Position.create("", 1, 1, 0));
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(attributeIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.stringIdentifier);
		this.stream.add(this.arrowToken);
		this.stream.add(this.bracketOpenToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
547 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
618 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
691 | 
		final IdentifierToken op = IdentifierToken.create("op", Position.create("", 1, 1, 0));
		
		final Vector<GroupElement> group1Vector = new Vector<>();
		final Vector<Constructor> constructors = new Vector<>();
		final Vector<Operation> operations = new Vector<>();
		
		final Name group1Name = UnqualifiedName.create(group1IdentifierToken);
		final Group group1 = Group.create(group1Name, group1Vector, group1IdentifierToken);
		
		final Name aName = group1Name.addName(aIdentifierToken);
		
		final ClassType aClass =
				RegularClassType.create(
						aName,
						new Vector<ClassModifier>(),
						new Vector<Attribute>(),
						new Vector<Type>(),
						operations,
						constructors,
						aIdentifierToken,
						
						new Vector<ClassType>());
		group1Vector.add(aClass);
		
		final ProductType aProduct = ProductType.create(this.bracketOpenToken);
		final ProductType sProduct = ProductType.create(this.bracketOpenToken);
		
		final ByNameState stringName = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
718 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
696 | 
		assertEquals(expectedSupertypes, actualSupertypes);
		
		assertEquals(0, ((SumType) attr2.getAttrType()).getSuperTypes().size());
		final Collection<Type> supertypesAttr2 =
				((SumType) ((SumType) attr2.getAttrType()).getPrototype()).getSuperTypes();
		assertEquals(0, supertypesAttr2.size());
		
		assertEquals(0, ((SumType) attr3.getAttrType()).getSuperTypes().size());
		final Collection<Type> supertypesAttr3 =
				((SumType) ((SumType) attr3.getAttrType()).getPrototype()).getSuperTypes();
		assertEquals(1, supertypesAttr3.size());
		final Iterator<Type> superTypesAttr3Iterator = supertypesAttr3.iterator();
		assertEquals(model.getAnything().getPrototype(), HelperUtils.getReferencedType(superTypesAttr3Iterator.next()));
		
		assertEquals(1, model.getInteger().getPrototype().getSuperTypes().size());   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
860 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
919 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
979 | 
		final IdentifierToken sIdentifierToken = IdentifierToken.create("s", Position.create("", 1, 1, 0));
		
		final Vector<GroupElement> group1Vector = new Vector<>();
		final Vector<Constructor> constructors = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name group1Name = UnqualifiedName.create(group1IdentifierToken);
		final Group group1 = Group.create(group1Name, group1Vector, group1IdentifierToken);
		
		final Name aName = group1Name.addName(aIdentifierToken);
		final ClassType aClass =
				RegularClassType.create(
						aName,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						constructors,
						aIdentifierToken,
						
						new Vector<ClassType>());
		group1Vector.add(aClass);
		
		final ByNameState attributeStringReferenceState =
				ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		
		final TypeProxy stringType = TypeProxy.create(this.stringIdentifier, attributeStringReferenceState);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1144 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1290 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1383 | 
						ByNameState.create(UnqualifiedName.create(this.stringIdentifier)));
		
		attributes.add(Attribute.create("s", stringType, new Vector<AttributeModifier>(), sIdentifierToken));
		sProduct.addElement(ProductElementType.create("s", stringType, sIdentifierToken));
		constructors.add(Constructor.create(aProduct, aClass, new Vector<ConstructorReference>(), aIdentifierToken));
		
		final Operation operation =
				Operation.create(
						"op",
						new Vector<OperationModifier>(),
						sProduct,
						aClass,
						SumType.create(this.curlyBracketOpenToken),
						op);
		operations.add(operation);
		
		final Model expected = Model.create(group1IdentifierToken);
		expected.addGroup(group1);
		
		this.parser = Parser.create(output);
		final Model actual = this.parser.parse();
		
		assertEquals(0, this.parser.getExceptions().size());
		assertEquals(expected, actual);
		
	}
	
	/**
	 * Group1:group=[A:class={op:[[(s:String)->{}]];();s:String;};];.
	 * 
	 * 
	 * @throws Exception
	 *             {@link de.fhdw.wtf.common.exception.parser.NoValidTokenStreamException}
	 */
	@Test
	public void testFirstOperationThanConstructorThanVariale() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
673 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1381 | 
		final IdentifierToken countIdentifier = IdentifierToken.create("count", Position.create("", 1, 1, 0));
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(attributeIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.bracketOpenToken);
		this.stream.add(nameIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.stringIdentifier);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
937 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
977 | 
	public void testNoCurlyBracketOpenException2() {
		this.stream = SimpleTokenStream.create();
		this.parser = Parser.create(this.stream);
		final IdentifierToken myGroup = IdentifierToken.create("MyGroup", Position.create("", 1, 1, 0));
		final IdentifierToken myClass = IdentifierToken.create("MyClass", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
231 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
278 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
325 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
435 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
482 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
345 | 
		final Attribute attr2 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();
		assertEquals(1, supertypesAttr1.size());
		final Iterator<Type> superTypesAttr1Iterator = supertypesAttr1.iterator();
		assertEquals(model.getAnything().getPrototype(), HelperUtils.getReferencedType(superTypesAttr1Iterator.next()));
		
		assertEquals(0, ((SumType) attr2.getAttrType()).getSuperTypes().size());
		final Collection<Type> supertypesAttr2 =
				((SumType) ((SumType) attr2.getAttrType()).getPrototype()).getSuperTypes();
		assertEquals(1, supertypesAttr2.size());   | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
374 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
199 | 
		final Attribute attr4 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();
		assertEquals(1, supertypesAttr1.size());
		final Iterator<Type> superTypesAttr1Iterator = supertypesAttr1.iterator();
		assertEquals(model.getAnything().getPrototype(), HelperUtils.getReferencedType(superTypesAttr1Iterator.next()));
		
		assertEquals(0, ((SumType) attr2.getAttrType()).getSuperTypes().size());
		final Collection<Type> supertypesAttr2 =
				((SumType) ((SumType) attr2.getAttrType()).getPrototype()).getSuperTypes();
		assertEquals(1, supertypesAttr2.size());   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
241 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
508 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
558 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
609 | 
		final IdentifierToken name = IdentifierToken.create("name", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(myAttribute);
		this.stream.add(this.colonToken);
		this.stream.add(this.bracketOpenToken);
		this.stream.add(name);
		this.stream.add(this.colonToken);
		this.stream.add(this.bracketCloseToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
290 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
839 | 
		final IdentifierToken string = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(myAttribute);
		this.stream.add(this.colonToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(string);
		this.stream.add(this.commaToken);
		this.stream.add(this.curlyBracketCloseToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
837 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
1235 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
360 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
668 | 
		final IdentifierToken myAttribute = IdentifierToken.create("MyAttribute", Position.create("", 1, 1, 0));
		final IdentifierToken string = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		final IdentifierToken integer = IdentifierToken.create("Integer", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(myAttribute);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
374 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
244 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
345 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
403 | 
		final Attribute attr4 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();
		assertEquals(1, supertypesAttr1.size());
		final Iterator<Type> superTypesAttr1Iterator = supertypesAttr1.iterator();
		assertEquals(model.getAnything().getPrototype(), HelperUtils.getReferencedType(superTypesAttr1Iterator.next()));
		
		assertEquals(0, ((SumType) attr2.getAttrType()).getSuperTypes().size());
		final Collection<Type> supertypesAttr2 =
				((SumType) ((SumType) attr2.getAttrType()).getPrototype()).getSuperTypes();   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestGetFirstAndLastToken.java | 
414 | 
| de/fhdw/wtf/parser/test/TestGetFirstAndLastToken.java | 
503 | 
| de/fhdw/wtf/parser/test/TestGetFirstAndLastToken.java | 
607 | 
| de/fhdw/wtf/parser/test/TestGetFirstAndLastToken.java | 
715 | 
		expectedLastToken = EndToken.create(Position.create("", 0 + 1, 47 + 1, 47));
		
		assertEquals(expectedFirstToken, group.getFirstToken());
		assertEquals(expectedLastToken, group.getLastToken());
		
		// Gruppenname
		Name name = group.getName();
		assertEquals(expectedFirstToken, name.getFirstToken());
		expectedLastToken = ColonToken.create(Position.create("", 0 + 1, 5 + 1, 5));
		assertEquals(expectedLastToken, name.getLastToken());
		
		// Klasse Class
		final Iterator<GroupElement> iterator2 = group.getGroupElements().iterator();
		final GroupElement groupElement = iterator2.next();
		final ClassType class1 = groupElement.accept(new GroupElementReturnVisitor<ClassType>() {
			
			@Override
			public ClassType handle(final Group group) {
				fail();
				return null;
			}
			
			@Override
			public ClassType handle(final ClassType clss) {
				return clss;
			}
		});
		
		expectedFirstToken = IdentifierToken.create("Class", Position.create("", 0 + 1, 13 + 1, 13));  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
471 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
581 | 
		this.stream.add(this.semicolonToken);
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(myOperation);
		this.stream.add(this.colonToken);
		this.stream.add(this.doubleSquareBracketOpenToken);
		this.stream.add(this.bracketOpenToken);
		this.stream.add(this.bracketCloseToken);
		this.stream.add(this.arrowToken);
		this.stream.add(this.curlyBracketOpenToken);   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
289 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
507 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
557 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
608 | 
		final IdentifierToken myAttribute = IdentifierToken.create("MyAttribute", Position.create("", 1, 1, 0));
		final IdentifierToken string = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(myAttribute);
		this.stream.add(this.colonToken);
		this.stream.add(this.curlyBracketOpenToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
679 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
902 | 
		this.stream.add(this.doubleSquareBracketOpenToken);
		this.stream.add(myParameter);
		this.stream.add(this.colonToken);
		this.stream.add(string);
		this.stream.add(this.bracketCloseToken);
		this.stream.add(this.arrowToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.doubleSquareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		try {
			this.parser.parse();
			fail();
		} catch (final NoValidTokenStreamException e) {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1204 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2460 | 
		final IdentifierToken countIdentifier = IdentifierToken.create("count", Position.create("", 1, 1, 0));
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(attributeIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.stringIdentifier);
		this.stream.add(this.arrowToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1678 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2189 | 
		final IdentifierToken countIdentifier = IdentifierToken.create("count", Position.create("", 1, 1, 0));
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(attributeIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.bracketOpenToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
547 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
618 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
766 | 
		final IdentifierToken op = IdentifierToken.create("op", Position.create("", 1, 1, 0));
		
		final Vector<GroupElement> group1Vector = new Vector<>();
		final Vector<Constructor> constructors = new Vector<>();
		final Vector<Operation> operations = new Vector<>();
		
		final Name group1Name = UnqualifiedName.create(group1IdentifierToken);
		final Group group1 = Group.create(group1Name, group1Vector, group1IdentifierToken);
		
		final Name aName = group1Name.addName(aIdentifierToken);
		
		final ClassType aClass =
				RegularClassType.create(
						aName,
						new Vector<ClassModifier>(),
						new Vector<Attribute>(),
						new Vector<Type>(),
						operations,
						constructors,
						aIdentifierToken,
						
						new Vector<ClassType>());
		group1Vector.add(aClass);
		
		final ProductType aProduct = ProductType.create(this.bracketOpenToken);
		final ProductType sProduct = ProductType.create(this.bracketOpenToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1293 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1417 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1494 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1585 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1772 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2357 | 
		final IdentifierToken countIdentifier = IdentifierToken.create("count", Position.create("", 1, 1, 0));
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(attributeIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.bracketOpenToken);
		this.stream.add(nameIdentifier);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
186 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
340 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
398 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
453 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
784 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
1065 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
203 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
278 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
362 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
581 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
670 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
801 | 
		final IdentifierToken string = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(myOperation);
		this.stream.add(this.colonToken);
		this.stream.add(this.doubleSquareBracketOpenToken);
		this.stream.add(this.bracketOpenToken);
		this.stream.add(myParameter);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
937 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
977 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
1152 | 
	public void testNoCurlyBracketOpenException2() {
		this.stream = SimpleTokenStream.create();
		this.parser = Parser.create(this.stream);
		final IdentifierToken myGroup = IdentifierToken.create("MyGroup", Position.create("", 1, 1, 0));
		final IdentifierToken myClass = IdentifierToken.create("MyClass", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleGroupcomponentCheck.java | 
113 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleGroupcomponentCheck.java | 
184 | 
						+ "a:group2>class2;" + "};" + "];" + "];" + "];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		Model model = null;
		try {
			model = parser.parse();
		} catch (final NoValidTokenStreamException e) {
			fail();
		}
		
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		
		final SimpleWalkerTask doubleGroupcomponent = DoubleGroupcomponentCheck.create(model, taskmanager);
		
		final Collection<SimpleWalkerTask> tasks = new Vector<>();
		tasks.add(doubleGroupcomponent);
		taskmanager.start(tasks);
		
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			assertTrue(current instanceof ExceptionalTaskResult);
		}
		assertEquals(1, results.size());
	}
	
	/**
	 * checks wether a group can have the same name as a class.
	 * 
	 * @throws InterruptedException
	 * @throws ExecutionException
	 */
	@Test
	public void testDoubleGroupcomponents3() throws InterruptedException, ExecutionException {  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
424 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
460 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
497 | 
				new SimpleScannerInput("Group:group=[Class:class={Attribute1:{String*}; Attribute2:String*;};];");
		final Model model = this.getModel(input);
		
		assertTrue(model.getString().getPrototype() == model.getString());
		assertTrue(model.getInteger().getPrototype() == model.getInteger());
		
		final ClassType cls = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		
		assertTrue(cls.getPrototype() == cls);
		
		final Iterator<Attribute> attributes = cls.getAttributes().iterator();
		final Attribute attribute1 = attributes.next();
		final Attribute attribute2 = attributes.next();
		
		assertTrue(attribute1.getAttrType() instanceof SumType);
		final SumType sum = (SumType) attribute1.getAttrType();
		
		assertTrue(sum.getPrototype() instanceof ListType);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
653 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
723 | 
		assertEquals(model.getAnything().getPrototype(), HelperUtils.getReferencedType(superTypesAttr2Iterator.next()));
		
		assertEquals(0, ((SumType) attr3.getAttrType()).getSuperTypes().size());
		final Collection<Type> supertypesAttr3 =
				((SumType) ((SumType) attr3.getAttrType()).getPrototype()).getSuperTypes();
		assertEquals(1, supertypesAttr3.size());
		final Iterator<Type> superTypesAttr3Iterator = supertypesAttr3.iterator();
		assertEquals(model.getAnything().getPrototype(), HelperUtils.getReferencedType(superTypesAttr3Iterator.next()));
		
		assertEquals(1, model.getInteger().getPrototype().getSuperTypes().size());
		assertEquals(
				attr3Type,
				HelperUtils.getReferencedType(model.getInteger().getPrototype().getSuperTypes().iterator().next()));   | 
| File | 
Line | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
2048 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
2129 | 
	public void testSumTypesManyTimes() throws SumIsAnythingException {
		
		final Token dummyToken = DummyToken.getInstance();
		final Position dummyPosition = DummyToken.getDummyPosition();
		final IdentifierToken b = IdentifierToken.create("B", dummyPosition);
		
		// Prepare Actual
		final SumType actualSum = SumType.create(dummyToken);
		actualSum.add(ThrownType.create(
				dummyToken,
				TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(b)))));
		actualSum.add(TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(b))));
		actualSum.add(TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(b))));
		actualSum.add(ThrownType.create(
				dummyToken,
				TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(b)))));
		
		final List<Type> standardizeElements = actualSum.standardize().accept(new TypeVisitorReturn<List<Type>>() {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1427 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1680 | 
		final IdentifierToken iParameterIdentifierToken = IdentifierToken.create("i", Position.create("", 1, 1, 1));
		
		final Vector<GroupElement> group1Vector = new Vector<>();
		final Vector<Constructor> constructors = new Vector<>();
		
		final Name group1Name = UnqualifiedName.create(group1IdentifierToken);
		final Group group1 = Group.create(group1Name, group1Vector, group1IdentifierToken);
		
		final Name aName = group1Name.addName(aIdentifierToken);
		final Name saName = group1Name.addName(saIdentifierToken);
		
		final Vector<Type> supertypes = new Vector<>();
		supertypes.add(TypeProxy.create(null, ByNameState.create(UnqualifiedName.create(saIdentifierToken))));
		
		final ClassType saClass =
				RegularClassType.create(
						saName,
						new Vector<ClassModifier>(),
						new Vector<Attribute>(),
						new Vector<Type>(),
						new Vector<Operation>(),  | 
| File | 
Line | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
310 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
415 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
515 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
615 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
731 | 
	public void testProductSum4() throws Exception {
		final IdentifierToken classIdentifier = IdentifierToken.create("class1", Position.create("", 1, 1, 0));
		final IdentifierToken groupIdentifier = IdentifierToken.create("group1", Position.create("", 1, 1, 0));
		final IdentifierToken attributeIdentifier = IdentifierToken.create("attribute", Position.create("", 1, 1, 0));
		final IdentifierToken integerIdentifier = IdentifierToken.create("Integer", Position.create("", 1, 1, 0));
		final IdentifierToken stringIdentifier = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		final IdentifierToken testIdentifier = IdentifierToken.create("Test", Position.create("", 1, 1, 0));
		
		final SimpleScannerInput input =
				new SimpleScannerInput(  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
443 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
490 | 
		final Model model = parser.parse();
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		AbstractOperationsCheck.create(model, taskmanager);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(1, okResult.size());
		assertEquals(0, failResult.size());
	}
	
	/**
	 * Group:group=[Klasse:class={name : String;operation : [[(parameter:Integer) -> String ]] ;operation2 :
	 * [[(parameter:Integer) -> String ]] abstract;} abstract; ]; .
	 * 
	 * @throws InterruptedException
	 * @throws ExecutionException
	 * @throws NoValidTokenStreamException
	 * @throws CyclicDependencyException
	 */
	@Test
	public void testAbstractOperationInAbstractClass1() throws InterruptedException, ExecutionException,  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleGroupcomponentCheck.java | 
148 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleGroupcomponentCheck.java | 
221 | 
		final SimpleScannerInput input = new SimpleScannerInput("" + "k:group=[" + "k:class={};" + "];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		Model model = null;
		try {
			model = parser.parse();
		} catch (final NoValidTokenStreamException e) {
			fail();
		}
		
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		
		final SimpleWalkerTask doubleGroupcomponent = DoubleGroupcomponentCheck.create(model, taskmanager);
		
		final Collection<SimpleWalkerTask> tasks = new Vector<>();
		tasks.add(doubleGroupcomponent);
		taskmanager.start(tasks);
		
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			assertFalse(current instanceof ExceptionalTaskResult);
		}
		assertEquals(1, results.size());
	}  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
650 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
634 | 
		final Collection<Type> supertypesAttr2 = attr2Type.getSuperTypes();
		assertEquals(1, supertypesAttr2.size());
		final Iterator<Type> superTypesAttr2Iterator = supertypesAttr2.iterator();
		assertEquals(model.getAnything().getPrototype(), HelperUtils.getReferencedType(superTypesAttr2Iterator.next()));
		
		assertEquals(0, ((SumType) attr3.getAttrType()).getSuperTypes().size());
		final Collection<Type> supertypesAttr3 =
				((SumType) ((SumType) attr3.getAttrType()).getPrototype()).getSuperTypes();
		assertEquals(1, supertypesAttr3.size());
		final Iterator<Type> superTypesAttr3Iterator = supertypesAttr3.iterator();
		assertEquals(model.getAnything().getPrototype(), HelperUtils.getReferencedType(superTypesAttr3Iterator.next()));
		
		assertEquals(1, model.getInteger().getPrototype().getSuperTypes().size());   | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
55 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
111 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
167 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
223 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
279 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
335 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
391 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
55 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
109 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
166 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
221 | 
		AbstractOperationsCheck.create(model, taskmanager);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(0, okResult.size());
		assertEquals(1, failResult.size());
		
		final Exception exception = failResult.iterator().next().getError();
		if (exception instanceof AbstractOperationsException) {  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
301 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
333 | 
		final SimpleScannerInput input = new SimpleScannerInput("Group:group=[Class:class={Attribute1:{Integer};};];");
		final Model model = this.getModel(input);
		
		assertTrue(model.getString().getPrototype() == model.getString());
		assertTrue(model.getInteger().getPrototype() == model.getInteger());
		
		final ClassType cls = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		
		assertTrue(cls.getPrototype() == cls);
		
		final Iterator<Attribute> attributes = cls.getAttributes().iterator();
		final Attribute attribute1 = attributes.next();
		
		assertTrue(attribute1.getAttrType() instanceof SumType);
		final SumType sum = (SumType) attribute1.getAttrType();
		
		assertTrue(sum.getPrototype() instanceof BaseType);
		final BaseType integer = (BaseType) sum.getPrototype();  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestTypeReferencer.java | 
1096 | 
| de/fhdw/wtf/walker/tasks/test/TestTypeReferencer.java | 
1174 | 
		final SumType sum = SumType.create(DummyToken.getInstance());
		sum.add(proxy);
		
		final BaseType string = model.getString();
		classState = ByReferenceState.create(string, string.getTypeName());
		proxy = TypeProxy.create(DummyToken.getInstance(), classState);
		sum.add(proxy);
		
		final BaseType integer = model.getInteger();
		classState = ByReferenceState.create(integer, integer.getTypeName());
		proxy = TypeProxy.create(DummyToken.getInstance(), classState);
		sum.add(proxy);
		
		final Group g = model.getGroups().iterator().next();
		final ClassType c = (ClassType) g.getGroupElements().iterator().next();
		final Attribute a = c.getAttributes().iterator().next();
		final TypeProxy t = (TypeProxy) a.getAttrType();   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1112 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1187 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1259 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1332 | 
		final IdentifierToken aIdentifierToken = IdentifierToken.create("A", Position.create("", 1, 1, 0));
		final IdentifierToken sIdentifierToken = IdentifierToken.create("s", Position.create("", 1, 1, 1));
		final IdentifierToken op = IdentifierToken.create("op", Position.create("", 1, 1, 0));
		
		final Vector<GroupElement> group1Vector = new Vector<>();
		final Vector<Constructor> constructors = new Vector<>();
		final Vector<Operation> operations = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name group1Name = UnqualifiedName.create(group1IdentifierToken);
		final Group group1 = Group.create(group1Name, group1Vector, group1IdentifierToken);
		
		final Name aName = group1Name.addName(aIdentifierToken);
		final ClassType aClass =  | 
| File | 
Line | 
| de/fhdw/wtf/parser/testWithScanner/TestParserScanner.java | 
118 | 
| de/fhdw/wtf/parser/testWithScanner/TestParserScanner.java | 
181 | 
		final ProductType product = ProductType.create(this.bracketOpenToken);
		final ByNameState testByName = ByNameState.create(UnqualifiedName.create(test));
		final TypeProxy testTypeProxy = TypeProxy.create(test, testByName);
		
		final Operation operation =
				Operation.create("op", new Vector<OperationModifier>(), product, clazz, testTypeProxy, op);
		operations.add(operation);
		
		modifiers.add(ClassModifierService.create(ServiceToken.create(Position.create("", 1, 1, 0))));
		modifiers.add(ClassModifierTransient.create(TransientToken.create(Position.create("", 1, 1, 0))));
		groupVector.add(clazz);
		final Model expected = Model.create(groupIdentifier);
		expected.addGroup(group);
		assertEquals(expected, model);
	}
	
	/**
	 * group1 : group = [ class1 : class = {op : [(param:Integer)->test];} service transient;]; .
	 * 
	 * @throws Exception
	 */
	@Test
	public void testSimpleClassOperation2() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
929 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1003 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1080 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1157 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1204 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1293 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1417 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1494 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1585 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1678 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1772 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2189 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2268 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2357 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2460 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2550 | 
		final IdentifierToken attributeIdentifier = IdentifierToken.create("Attribute", Position.create("", 1, 1, 0));
		
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(attributeIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.integerIdentifier);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
228 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
518 | 
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Operation> operations = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(myGroup);
		final Group group = Group.create(groupName, groupVector, myGroup);
		
		final Name className = groupName.addName(myClass);
		
		final ClassType class1 =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						new Vector<Attribute>(),
						new Vector<Type>(),
						operations,
						new Vector<Constructor>(),
						myClass,
						
						new Vector<ClassType>());
		groupVector.add(class1);
		
		final ProductType product = ProductType.create(this.bracketOpenToken);
		final SumType sum = SumType.create(this.curlyBracketOpenToken);
		
		final Operation operation =   | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestBaseTypeInheritanceCheck.java | 
61 | 
| de/fhdw/wtf/walker/tasks/test/TestBaseTypeInheritanceCheck.java | 
119 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
320 | 
		baseTypeInheritanceCheck.addDependency(referencer);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(1, okResult.size());
		assertEquals(1, failResult.size());
		
		final Exception exception = failResult.iterator().next().getError();
		if (exception instanceof BaseTypeInheritanceException) {  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
443 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
540 | 
		final Model model = parser.parse();
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		AbstractOperationsCheck.create(model, taskmanager);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(1, okResult.size());
		assertEquals(0, failResult.size());
	}  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
103 | 
| de/fhdw/wtf/parser/test/TestModels.java | 
90 | 
		this.colonToken = ColonToken.create(Position.create("", 0 + 1, 0 + 1, 0));
		this.groupToken = GroupToken.create(Position.create("", 0 + 1, 0 + 1, 0));
		this.equalToken = EqualToken.create(Position.create("", 0 + 1, 0 + 1, 0));
		this.squareBracketOpenToken = SquareBracketOpenToken.create(Position.create("", 0, 0, 0));
		this.squareBracketCloseToken = SquareBracketCloseToken.create(Position.create("", 0, 0, 0));
		this.semicolonToken = SemicolonToken.create(Position.create("", 0 + 1, 0 + 1, 0));
		this.parser = Parser.create(this.stream);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
606 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
673 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
759 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1381 | 
		final IdentifierToken attributeIdentifier = IdentifierToken.create("Attribute", Position.create("", 1, 1, 0));
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(attributeIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.bracketOpenToken);
		this.stream.add(this.bracketCloseToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
666 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
203 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
362 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
670 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
801 | 
		final IdentifierToken string = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(myOperation);
		this.stream.add(this.colonToken);
		this.stream.add(this.doubleSquareBracketOpenToken);
		this.stream.add(myParameter);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
937 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
977 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
1152 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
1191 | 
	public void testNoCurlyBracketOpenException2() {
		this.stream = SimpleTokenStream.create();
		this.parser = Parser.create(this.stream);
		final IdentifierToken myGroup = IdentifierToken.create("MyGroup", Position.create("", 1, 1, 0));
		final IdentifierToken myClass = IdentifierToken.create("MyClass", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
77 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
310 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
415 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
515 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
615 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
731 | 
	public void testProductSum1() throws Exception {
		final IdentifierToken classIdentifier = IdentifierToken.create("class1", Position.create("", 1, 1, 0));
		final IdentifierToken groupIdentifier = IdentifierToken.create("group1", Position.create("", 1, 1, 0));
		final IdentifierToken attributeIdentifier = IdentifierToken.create("attribute", Position.create("", 1, 1, 0));
		final IdentifierToken integerIdentifier = IdentifierToken.create("Integer", Position.create("", 1, 1, 0));
		final IdentifierToken stringIdentifier = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		final IdentifierToken testIdentifier = IdentifierToken.create("Test", Position.create("", 1, 1, 0));
		
		final String stringInput =  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
76 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
140 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
273 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
337 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
403 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
469 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
534 | 
		cyclicInheritance.addDependency(referencer);
		inheritanceChecker.addMembers(cyclicInheritance, baseTypeInheritanceCheck);
		
		doubleAttributenameCheck.addDependency(inheritanceChecker);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(6, okResult.size());
		assertEquals(0, failResult.size());
	}
	
	/**
	 * "" + "group1:group=[" + "class1:class={" + "attributelong: Integer;" + "attribute: Integer;" + "};" + "];" .
	 * 
	 * @throws NoValidTokenStreamException
	 *             NoValidTokenStreamException
	 * @throws CyclicDependencyException
	 *             CyclicDependencyException
	 * @throws InterruptedException
	 *             InterruptedException
	 * @throws ExecutionException
	 *             ExecutionException
	 * @throws CyclicPartDefinitionException
	 *             CyclicPartDefinitionException
	 */
	@Test
	public void testDoubleAttributename2() throws InterruptedException, ExecutionException,  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
301 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
333 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
365 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
394 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
533 | 
		final SimpleScannerInput input = new SimpleScannerInput("Group:group=[Class:class={Attribute1:{Integer};};];");
		final Model model = this.getModel(input);
		
		assertTrue(model.getString().getPrototype() == model.getString());
		assertTrue(model.getInteger().getPrototype() == model.getInteger());
		
		final ClassType cls = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		
		assertTrue(cls.getPrototype() == cls);
		
		final Iterator<Attribute> attributes = cls.getAttributes().iterator();
		final Attribute attribute1 = attributes.next();
		
		assertTrue(attribute1.getAttrType() instanceof SumType);
		final SumType sum = (SumType) attribute1.getAttrType();
		
		assertTrue(sum.getPrototype() instanceof BaseType);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
592 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
803 | 
				ProductElementType.create("sum3", sum2, IdentifierToken.create("sum3", Position.create("", 1, 1, 0)));
		product2.addElement(element21);
		product2.addElement(element22);
		
		final Attribute attribute =
				Attribute.create("attribute", product2, new Vector<AttributeModifier>(), attributeIdentifier);
		attributes.add(attribute);
		
		modifiers.add(ClassModifierService.create(VisitableToken.create(Position.create("", 1, 1, 0))));
		modifiers.add(ClassModifierTransient.create(AbstractToken.create(Position.create("", 1, 1, 0))));
		groupVector.add(clazz);
		final Model expected = Model.create(groupIdentifier);
		expected.addGroup(group);
		assertEquals(expected, model);
	}
	
	/**
	 * group1 : group = [ class1 : class = {attribute : (sum1:{Integer, Test}, sum2:{{Integer, (str1:String,
	 * str2:String)}, (int3:Integer, int4:Integer), Test}) ;} service transient;]; .
	 * 
	 * @throws Exception
	 */
	@Test
	public void testProductSum7() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestTypeReferencer.java | 
554 | 
| de/fhdw/wtf/walker/tasks/test/TestTypeReferencer.java | 
730 | 
				IdentifierToken.create("", Position.create("", 0 + 1, 0 + 1, 0));
		final Attribute class2111Attribute =
				Attribute.create(
						"class21",
						class2111AttributeTypeReference,
						new Vector<AttributeModifier>(),
						class2111AttributeIdentifier);
		class2111Attributes.add(class2111Attribute);
		
		final TokenStream output = FilteredTokenStream.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		final Model result = parser.parse();
		
		final TypeReferencerTestReturnValue v = new TypeReferencerTestReturnValue(result);
		
		assertEquals(1, v.getFailResult().size());
		assertEquals(1, v.getTypeReferencer().getExceptions().size());
		assertEquals(0, v.getOkResult().size());
	}
	
	/**
	 * Test the referencing of: Group1:group = [Group2:group = [Class1:class={};];]; Group2:group= [Class1:class=
	 * Group1>Class1 + {}; Group1:group=[Class1:class= Group2>Class1 +{classa:Group1>Group2>Class1;};
	 * Group1:group=[Class1:class = Group2>Group1>Class1 + {class21:Group2>Group1>Class1;};];];];.
	 * 
	 * @throws Exception
	 *             {@link de.fhdw.wtf.common.exception.parser.NoValidTokenStreamException}, {@link InterruptedException}
	 *             , {@link ExecutionException}.
	 */
	@Test
	public void test2GroupsWithClasseHierarchieZyklus() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
186 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
340 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
398 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
453 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
784 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
1065 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
278 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
362 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
471 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
670 | 
		final IdentifierToken string = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(myOperation);
		this.stream.add(this.colonToken);
		this.stream.add(this.doubleSquareBracketOpenToken);
		this.stream.add(this.bracketOpenToken);
		this.stream.add(myParameter);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
281 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2118 | 
				IdentifierToken.create("Attribute3", Position.create("", 0 + 1, 0 + 1, 0));
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(attributeIdentifier1);
		this.stream.add(this.colonToken);
		this.stream.add(this.stringIdentifier);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
76 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
140 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
337 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
600 | 
		cyclicInheritance.addDependency(referencer);
		inheritanceChecker.addMembers(cyclicInheritance, baseTypeInheritanceCheck);
		
		doubleAttributenameCheck.addDependency(inheritanceChecker);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(6, okResult.size());
		assertEquals(0, failResult.size());
	}  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1205 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1370 | 
						new Vector<Type>(),
						operations,
						constructors,
						aIdentifierToken,
						
						new Vector<ClassType>());
		group1Vector.add(aClass);
		
		final ProductType aProduct = ProductType.create(this.bracketOpenToken);
		final ProductType sProduct = ProductType.create(this.bracketOpenToken);
		
		final ByNameState attributeStringReferenceState =
				ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		final TypeProxy stringType = TypeProxy.create(this.stringIdentifier, attributeStringReferenceState);
		
		attributes.add(Attribute.create("s", stringType, new Vector<AttributeModifier>(), sIdentifierToken));
		sProduct.addElement(ProductElementType.create("s", stringType, sIdentifierToken));
		constructors.add(Constructor.create(aProduct, aClass, new Vector<ConstructorReference>(), aIdentifierToken));
		
		final Operation operation1 =  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
185 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
289 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
339 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
397 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
452 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
507 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
557 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
608 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
665 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
783 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
1064 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
277 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
580 | 
		final IdentifierToken myParameter = IdentifierToken.create("MyParameter", Position.create("", 1, 1, 0));
		final IdentifierToken string = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(myOperation);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestModels.java | 
109 | 
| de/fhdw/wtf/parser/test/TestModels.java | 
169 | 
	public void testModelCalculation() throws Exception {
		final TokenStream stream = SimpleTokenStream.create();
		final Parser parser = Parser.create(stream);
		final IdentifierToken group1Identifier = IdentifierToken.create("Group1", Position.create("", 1, 1, 0));
		final IdentifierToken class1Identifier = IdentifierToken.create("Class1", Position.create("", 1, 1, 0));
		final IdentifierToken group2Identifier = IdentifierToken.create("Group2", Position.create("", 1, 1, 0));
		final IdentifierToken class2Identifier = IdentifierToken.create("Class2", Position.create("", 1, 1, 0));
		final IdentifierToken class3Identifier = IdentifierToken.create("Class3", Position.create("", 1, 1, 0));  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
534 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
772 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
864 | 
		assertEquals(clss, HelperUtils.getReferencedType(superTypesAttr1Iterator.next()));
		
		assertEquals(1, model.getInteger().getPrototype().getSuperTypes().size());
		assertEquals(
				model.getAnything().getPrototype(),
				HelperUtils.getReferencedType(model.getInteger().getPrototype().getSuperTypes().iterator().next()));
		
		assertEquals(1, model.getString().getPrototype().getSuperTypes().size());
		assertEquals(
				model.getAnything().getPrototype(),
				HelperUtils.getReferencedType(model.getString().getPrototype().getSuperTypes().iterator().next()));
	}
	
	/**
	 * Group:group=[A:class={Attribute1:{String,Integer,A}; Attribute2:{String,A}; Attribute3:{B,C};}; B:class=A+{};
	 * C:class=A+{}; Class:class={};]; .
	 * 
	 * @throws Exception
	 *             Exception
	 */
	@Test
	public void testTransitiveInheritance() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
753 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
845 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
1038 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
741 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
833 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
949 | 
						+ "D:class=B+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final Iterator<GroupElement> iterator = model.getGroups().iterator().next().getGroupElements().iterator();
		final ClassType clssA = (ClassType) iterator.next();
		final ClassType clssB = (ClassType) iterator.next();
		
		final Iterator<Attribute> attrIterator = clssA.getAttributes().iterator();
		
		final Attribute attr1 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
257 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
306 | 
		this.stream.add(this.bracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		try {
			this.parser.parse();
			fail();
		} catch (final NoValidTokenStreamException e) {
			boolean noType = false;
			assertEquals(1, this.parser.getExceptions().size());
			for (final Exception ex : this.parser.getExceptions()) {
				if (ex instanceof NoTypeException) {
					noType = true;
				}
			}
			assertTrue(noType);
		}
	}
	
	/**
	 * MyGroup:group=[MyClass:class={MyAttribute:{String,};};];.
	 */
	@Test
	public void testNoTypeExceptionSum() {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
415 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
906 | 
		this.stream.add(string);
		this.stream.add(this.arrowToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.doubleSquareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		try {
			this.parser.parse();
			fail();
		} catch (final NoValidTokenStreamException e) {
			assertEquals(1, this.parser.getExceptions().size());
			boolean noBracketClose = false;  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
419 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
524 | 
		this.stream.add(this.doubleSquareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		try {
			this.parser.parse();
			fail();
		} catch (final NoValidTokenStreamException e) {
			assertEquals(1, this.parser.getExceptions().size());
			boolean noBracketClose = false;
			for (final Exception ex : this.parser.getExceptions()) {
				if (ex instanceof NoBracketCloseException) {
					noBracketClose = true;
				}
			}
			assertTrue(noBracketClose);
		}
	}
	
	/**
	 * MyGroup:group=[MyClass:class={MyOperation:[[(MyParameter:String)->{}]]};];.
	 */
	@Test
	public void testNoSemicolonExceptionOperation() {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
1125 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
1164 | 
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		try {
			this.parser.parse();
			fail();
		} catch (final NoValidTokenStreamException e) {
			boolean noEqual = false;
			assertEquals(1, this.parser.getExceptions().size());
			for (final Exception ex : this.parser.getExceptions()) {
				if (ex instanceof NoEqualException) {
					noEqual = true;
				}
			}
			assertTrue(noEqual);
		}
	}
	
	/**
	 * MyGroup:group=[MyClass:class{};];.
	 */
	@Test
	public void testNoEqualsExceptionClass() {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
132 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
199 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
465 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
533 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1861 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1929 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2003 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2045 | 
		final IdentifierToken classIdentifier = IdentifierToken.create("Class", Position.create("", 0 + 1, 0 + 1, 0));
		final IdentifierToken attributeIdentifier =
				IdentifierToken.create("Attribute", Position.create("", 0 + 1, 0 + 1, 0));
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
679 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
292 | 
		this.stream.add(this.doubleSquareBracketOpenToken);
		this.stream.add(myParameter);
		this.stream.add(this.colonToken);
		this.stream.add(string);
		this.stream.add(this.bracketCloseToken);
		this.stream.add(this.arrowToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.doubleSquareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestGetFirstAndLastToken.java | 
443 | 
| de/fhdw/wtf/parser/test/TestGetFirstAndLastToken.java | 
532 | 
| de/fhdw/wtf/parser/test/TestGetFirstAndLastToken.java | 
744 | 
		expectedLastToken = SquareBracketCloseToken.create(Position.create("", 0 + 1, 45 + 1, 45));
		
		assertEquals(expectedFirstToken, class1.getFirstToken());
		assertEquals(expectedLastToken, class1.getLastToken());
		
		// Klassenname
		name = class1.getName();
		
		// klassenName
		final UnqualifiedName lastAddedName = name.getLastAddedName();
		expectedFirstToken = IdentifierToken.create("Class", Position.create("", 0 + 1, 13 + 1, 13));
		assertEquals(expectedFirstToken, lastAddedName.getFirstToken());
		expectedLastToken = ColonToken.create(Position.create("", 0 + 1, 18 + 1, 18));
		assertEquals(expectedLastToken, lastAddedName.getLastToken());
		
		// Attribut Attribute
		final Iterator<Attribute> iterator3 = class1.getAttributes().iterator();
		final Attribute attribute = iterator3.next();
		
		expectedFirstToken = IdentifierToken.create("Attribute", Position.create("", 0 + 1, 26 + 1, 26));  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
123 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
187 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
256 | 
						+ "attribute: Integer;" + "};" + "];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		final SimpleWalkerTask doubleGroupcomponent = DoubleGroupcomponentCheck.create(model, taskmanager);
		final TypeReferencer referencer = TypeReferencer.create(model, taskmanager);
		final SimpleWalkerTask cyclicInheritance = CyclicInheritanceCheck.create(model, taskmanager);
		final DoubleAttributenameCheck doubleAttributenameCheck = DoubleAttributenameCheck.create(model, taskmanager);
		final GroupDependencyTask inheritanceChecker = GroupDependencyTask.create(taskmanager);
		final SimpleWalkerTask baseTypeInheritanceCheck = BaseTypeInheritanceCheck.create(model, taskmanager);
		
		referencer.addDependency(doubleGroupcomponent);   | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
51 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
55 | 
public class TestSupertypesCleanInheritanceTask {
	
	/**
	 * Entsprechende Task laufen und erzeugen das Model.
	 * 
	 * @param input
	 *            SimpleScannerInput
	 * @return Model
	 * @throws CyclicDependencyException
	 *             CyclicDependencyException
	 * @throws InterruptedException
	 *             InterruptedException
	 * @throws ExecutionException
	 *             ExecutionException
	 * @throws NoValidTokenStreamException
	 *             NoValidTokenStreamException
	 */
	private Model getModel(final SimpleScannerInput input) throws CyclicDependencyException, InterruptedException,
			ExecutionException, NoValidTokenStreamException {
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		Model model = null;
		model = parser.parse();
		assertEquals(0, parser.getExceptions().size());
		
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		final TypeReferencer referencer = TypeReferencer.create(model, taskmanager);
		final SimpleWalkerTask prototypesTask = PrototypesTask.create(model, taskmanager);
		final SimpleWalkerTask subtypesFillTask = SubtypesFillTask.create(model, taskmanager);
		final SimpleWalkerTask cyclicInheritance = CyclicInheritanceCheck.create(model, taskmanager);
		final SupertypesFillTask supertypesFillTask = SupertypesFillTask.create(model, taskmanager);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
606 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
673 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
759 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
848 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
929 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1003 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1080 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1157 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1204 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1293 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1381 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1417 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1494 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1585 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1678 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1772 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2189 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2268 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2357 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2460 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2550 | 
		final IdentifierToken attributeIdentifier = IdentifierToken.create("Attribute", Position.create("", 1, 1, 0));
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(attributeIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.bracketOpenToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
241 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
290 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
508 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
558 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
609 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
839 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
1237 | 
		final IdentifierToken name = IdentifierToken.create("name", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(myAttribute);
		this.stream.add(this.colonToken);
		this.stream.add(this.bracketOpenToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/testWithScanner/TestParserScanner.java | 
208 | 
| de/fhdw/wtf/parser/testWithScanner/TestParserScanner.java | 
290 | 
| de/fhdw/wtf/parser/testWithScanner/TestParserScanner.java | 
374 | 
		final IdentifierToken op = IdentifierToken.create("op", Position.create("", 1, 1, 0));
		final IdentifierToken groupIdentifier = IdentifierToken.create("group1", Position.create("", 1, 1, 0));
		final IdentifierToken param1Identifier = IdentifierToken.create("param1", Position.create("", 1, 1, 0));
		final IdentifierToken param2Identifier = IdentifierToken.create("param2", Position.create("", 1, 1, 0));
		final IdentifierToken integerIdentifier = IdentifierToken.create("Integer", Position.create("", 1, 1, 0));
		final IdentifierToken stringIdentifier = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		
		final SimpleScannerInput input =
				new SimpleScannerInput(  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1305 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1506 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1597 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1691 | 
		this.stream.add(this.colonToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.bracketOpenToken);
		this.stream.add(nameIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.stringIdentifier);
		this.stream.add(this.commaToken);
		this.stream.add(countIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.integerIdentifier);
		this.stream.add(this.bracketCloseToken);
		this.stream.add(this.arrowToken);
		this.stream.add(this.integerIdentifier);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
388 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
2027 | 
		final IdentifierToken sParameterIdentifierToken = IdentifierToken.create("s", Position.create("", 1, 1, 0));
		
		final Vector<GroupElement> group1Vector = new Vector<>();
		final Vector<Constructor> constructors = new Vector<>();
		
		final Name group1Name = UnqualifiedName.create(group1IdentifierToken);
		final Group group1 = Group.create(group1Name, group1Vector, group1IdentifierToken);
		
		final Name aName = group1Name.addName(aIdentifierToken);
		final ClassType aClass =
				RegularClassType.create(
						aName,
						new Vector<ClassModifier>(),
						new Vector<Attribute>(),
						new Vector<Type>(),
						new Vector<Operation>(),
						constructors,
						aIdentifierToken,
						
						new Vector<ClassType>());
		group1Vector.add(aClass);
		
		final ProductType aProduct = ProductType.create(this.bracketOpenToken);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
59 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
187 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
256 | 
						+ "attributeLong: Integer;" + "};" + "];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		final SimpleWalkerTask doubleGroupcomponent = DoubleGroupcomponentCheck.create(model, taskmanager);
		final TypeReferencer referencer = TypeReferencer.create(model, taskmanager);
		final SimpleWalkerTask cyclicInheritance = CyclicInheritanceCheck.create(model, taskmanager);
		final DoubleAttributenameCheck doubleAttributenameCheck = DoubleAttributenameCheck.create(model, taskmanager);
		final GroupDependencyTask inheritanceChecker = GroupDependencyTask.create(taskmanager);
		final SimpleWalkerTask baseTypeInheritanceCheck = BaseTypeInheritanceCheck.create(model, taskmanager);
		
		referencer.addDependency(doubleGroupcomponent);   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
306 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
394 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
518 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
606 | 
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Operation> operations = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(myGroup);
		final Group group = Group.create(groupName, groupVector, myGroup);
		
		final Name className = groupName.addName(myClass);
		final ClassType class1 =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						new Vector<Attribute>(),
						new Vector<Type>(),
						operations,
						new Vector<Constructor>(),
						myClass,
						
						new Vector<ClassType>());
		groupVector.add(class1);
		
		final ProductType product = ProductType.create(this.bracketOpenToken);
		final ByNameState byName = ByNameState.create(UnqualifiedName.create(string));   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
250 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
515 | 
	public void testClassAbstractModifier() throws Exception {
		this.stream.add(this.group1IdentifierToken);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.classIdentifierToken);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.abstractToken);
		this.stream.add(this.semicolonToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
352 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
572 | 
	public void testClassServiceModifier() throws Exception {
		this.stream.add(this.group1IdentifierToken);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.classIdentifierToken);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.serviceToken);
		this.stream.add(this.semicolonToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
668 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
743 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
842 | 
	public void testSimpleInheritance() throws Exception {
		this.stream.add(this.group1IdentifierToken);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.superClass1IdentifierToken);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.classIdentifierToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
794 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
898 | 
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(myOperation);
		this.stream.add(this.colonToken);
		this.stream.add(this.doubleSquareBracketOpenToken);
		this.stream.add(this.bracketOpenToken);
		this.stream.add(myParameter);
		this.stream.add(this.colonToken);
		this.stream.add(string);
		this.stream.add(this.bracketCloseToken);
		this.stream.add(this.arrowToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.doubleSquareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.semicolonToken);   | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleGroupcomponentCheck.java | 
184 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleGroupcomponentCheck.java | 
220 | 
				new SimpleScannerInput("" + "group1:group=[" + "k:class={};" + "k:group=[];" + "];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		Model model = null;
		try {
			model = parser.parse();
		} catch (final NoValidTokenStreamException e) {
			fail();
		}
		
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		
		final SimpleWalkerTask doubleGroupcomponent = DoubleGroupcomponentCheck.create(model, taskmanager);
		
		final Collection<SimpleWalkerTask> tasks = new Vector<>();
		tasks.add(doubleGroupcomponent);
		taskmanager.start(tasks);
		
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
231 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
278 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
325 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
374 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
435 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
482 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
568 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
199 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
244 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
345 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
403 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
547 | 
		final Attribute attr2 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();
		assertEquals(1, supertypesAttr1.size());
		final Iterator<Type> superTypesAttr1Iterator = supertypesAttr1.iterator();
		assertEquals(model.getAnything().getPrototype(), HelperUtils.getReferencedType(superTypesAttr1Iterator.next()));
		
		assertEquals(0, ((SumType) attr2.getAttrType()).getSuperTypes().size());
		final Collection<Type> supertypesAttr2 =   | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
534 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
772 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
864 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
916 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
955 | 
		assertEquals(clss, HelperUtils.getReferencedType(superTypesAttr1Iterator.next()));
		
		assertEquals(1, model.getInteger().getPrototype().getSuperTypes().size());
		assertEquals(
				model.getAnything().getPrototype(),
				HelperUtils.getReferencedType(model.getInteger().getPrototype().getSuperTypes().iterator().next()));
		
		assertEquals(1, model.getString().getPrototype().getSuperTypes().size());
		assertEquals(
				model.getAnything().getPrototype(),
				HelperUtils.getReferencedType(model.getString().getPrototype().getSuperTypes().iterator().next()));
	}
	
	/**
	 * Group:group=[A:class={Attribute1:{String,Integer,A}; Attribute2:{String,A}; Attribute3:{B,C};}; B:class=A+{};
	 * C:class=A+{}; Class:class={};]; .
	 * 
	 * @throws Exception
	 *             Exception
	 */
	@Test
	public void testTransitiveInheritance() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/common/ast/type/test/TypeTest.java | 
56 | 
| de/fhdw/wtf/common/ast/type/test/TypeTest.java | 
92 | 
| de/fhdw/wtf/common/ast/type/test/TypeTest.java | 
128 | 
| de/fhdw/wtf/common/ast/type/test/TypeTest.java | 
164 | 
	public void testClassAbstract() {
		final IdentifierToken className = IdentifierToken.create("className", Position.createDummyPosition());
		final Name name = UnqualifiedName.create(className);
		final Collection<ClassModifier> modifiers = new Vector<>();
		final Collection<Attribute> attributes = new Vector<>();
		final List<Type> superTypes = new Vector<>();
		final Collection<Operation> operations = new Vector<>();
		final Collection<Constructor> superConstructors = new Vector<>();
		final Collection<ClassType> subTypes = new Vector<>();
		
		final ClassType clazz =
				RegularClassType.create(
						name,
						modifiers,
						attributes,
						superTypes,
						operations,
						superConstructors,
						className,
						subTypes);
		
		final AbstractToken abstractToken = AbstractToken.create(Position.createDummyPosition());  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
324 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
601 | 
		final Name className = groupName.addName(this.classIdentifierToken);
		modifiers.add(ClassModifierTransient.create(this.transientToken));
		final ClassType class1 =
				RegularClassType.create(
						className,
						modifiers,
						new Vector<Attribute>(),
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						this.classIdentifierToken,
						
						new Vector<ClassType>());
		groupVector.add(class1);
		final Model expected = Model.create(this.group1IdentifierToken);
		expected.addGroup(group);
		
		final Model actual = this.parser.parse();
		assertEquals(expected, actual);
		assertEquals(0, this.parser.getExceptions().size());
	}
	
	/**
	 * Group:group=[Class:class={} service;]; .
	 * 
	 * @throws Exception
	 */
	@Test
	public void testClassServiceModifier() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
426 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
544 | 
		final Name className = groupName.addName(this.classIdentifierToken);
		modifiers.add(ClassModifierVisitable.create(this.visitableToken));
		final ClassType class1 =
				RegularClassType.create(
						className,
						modifiers,
						new Vector<Attribute>(),
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						this.classIdentifierToken,
						
						new Vector<ClassType>());
		groupVector.add(class1);
		final Model expected = Model.create(this.group1IdentifierToken);
		expected.addGroup(group);
		
		final Model actual = this.parser.parse();
		assertEquals(expected, actual);
		assertEquals(0, this.parser.getExceptions().size());
	}
	
	/**
	 * Group:group=[Class:class={} [;]; .
	 */
	@Test
	public void testClassWithExceptionInParseModifier() {  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
445 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
492 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
276 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
322 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
368 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
414 | 
		AbstractOperationsCheck.create(model, taskmanager);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(1, okResult.size());
		assertEquals(0, failResult.size());
	}
	
	/**
	 * Group:group=[Klasse:class={name : String;operation : [[(parameter:Integer) -> String ]] ;operation2 :
	 * [[(parameter:Integer) -> String ]] abstract;} abstract; ]; .
	 * 
	 * @throws InterruptedException
	 * @throws ExecutionException
	 * @throws NoValidTokenStreamException
	 * @throws CyclicDependencyException
	 */
	@Test
	public void testAbstractOperationInAbstractClass1() throws InterruptedException, ExecutionException,  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
402 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
822 | 
		assertEquals(attr1Type, superTypesAttr4Iterator.next());
		
		assertEquals(1, model.getInteger().getPrototype().getSuperTypes().size());
		assertEquals(
				model.getAnything().getPrototype(),
				HelperUtils.getReferencedType(model.getInteger().getPrototype().getSuperTypes().iterator().next()));
		
		assertEquals(1, model.getString().getPrototype().getSuperTypes().size());
		assertEquals(
				model.getAnything().getPrototype(),
				HelperUtils.getReferencedType(model.getString().getPrototype().getSuperTypes().iterator().next()));
	}
	
	/**
	 * Group:group=[A:class={Attribute1:{String,Integer,A}; Attribute2:{C,D,E};}; B:class=A+{}; C:class=A+{};
	 * Class:class={}; D:class=B+{}; E:class=B+{};]; .
	 * 
	 * @throws Exception
	 *             Exception
	 */
	@Test
	public void testSumSupertypeIsAnClass() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/common/ast/type/test/TypeTest.java | 
56 | 
| de/fhdw/wtf/common/ast/type/test/TypeTest.java | 
92 | 
| de/fhdw/wtf/common/ast/type/test/TypeTest.java | 
128 | 
| de/fhdw/wtf/common/ast/type/test/TypeTest.java | 
164 | 
| de/fhdw/wtf/common/ast/type/test/TypeTest.java | 
200 | 
	public void testClassAbstract() {
		final IdentifierToken className = IdentifierToken.create("className", Position.createDummyPosition());
		final Name name = UnqualifiedName.create(className);
		final Collection<ClassModifier> modifiers = new Vector<>();
		final Collection<Attribute> attributes = new Vector<>();
		final List<Type> superTypes = new Vector<>();
		final Collection<Operation> operations = new Vector<>();
		final Collection<Constructor> superConstructors = new Vector<>();
		final Collection<ClassType> subTypes = new Vector<>();
		
		final ClassType clazz =
				RegularClassType.create(
						name,
						modifiers,
						attributes,
						superTypes,
						operations,
						superConstructors,
						className,
						subTypes);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
666 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
471 | 
		final IdentifierToken string = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(myOperation);
		this.stream.add(this.colonToken);
		this.stream.add(this.doubleSquareBracketOpenToken);
		this.stream.add(myParameter);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
59 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
123 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
386 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
452 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
517 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
583 | 
						+ "attributeLong: Integer;" + "};" + "];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		final SimpleWalkerTask doubleGroupcomponent = DoubleGroupcomponentCheck.create(model, taskmanager);
		final TypeReferencer referencer = TypeReferencer.create(model, taskmanager);
		final SimpleWalkerTask cyclicInheritance = CyclicInheritanceCheck.create(model, taskmanager);
		final DoubleAttributenameCheck doubleAttributenameCheck = DoubleAttributenameCheck.create(model, taskmanager);
		final GroupDependencyTask inheritanceChecker = GroupDependencyTask.create(taskmanager);
		final SimpleWalkerTask baseTypeInheritanceCheck = BaseTypeInheritanceCheck.create(model, taskmanager);
		
		referencer.addDependency(doubleGroupcomponent);   | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
187 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
256 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
320 | 
						+ "attribute: Integer;" + "};" + "];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		final SimpleWalkerTask doubleGroupcomponent = DoubleGroupcomponentCheck.create(model, taskmanager);
		final TypeReferencer referencer = TypeReferencer.create(model, taskmanager);
		final SimpleWalkerTask cyclicInheritance = CyclicInheritanceCheck.create(model, taskmanager);
		final DoubleAttributenameCheck doubleAttributenameCheck = DoubleAttributenameCheck.create(model, taskmanager);
		final GroupDependencyTask inheritanceChecker = GroupDependencyTask.create(taskmanager);
		final SimpleWalkerTask baseTypeInheritanceCheck = BaseTypeInheritanceCheck.create(model, taskmanager);
		
		referencer.addDependency(doubleGroupcomponent);   | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleGroupcomponentCheck.java | 
38 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleGroupcomponentCheck.java | 
75 | 
						+ "a:group2>class2;" + "};" + "];" + "];" + "];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		Model model = null;
		try {
			model = parser.parse();
		} catch (final NoValidTokenStreamException e) {
			fail();
		}
		
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		
		final SimpleWalkerTask doubleClassname = DoubleGroupcomponentCheck.create(model, taskmanager);
		
		final Collection<SimpleWalkerTask> tasks = new Vector<>();
		tasks.add(doubleClassname);
		taskmanager.start(tasks);
		
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleGroupcomponentCheck.java | 
113 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleGroupcomponentCheck.java | 
148 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleGroupcomponentCheck.java | 
184 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleGroupcomponentCheck.java | 
221 | 
						+ "a:group2>class2;" + "};" + "];" + "];" + "];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		Model model = null;
		try {
			model = parser.parse();
		} catch (final NoValidTokenStreamException e) {
			fail();
		}
		
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		
		final SimpleWalkerTask doubleGroupcomponent = DoubleGroupcomponentCheck.create(model, taskmanager);
		
		final Collection<SimpleWalkerTask> tasks = new Vector<>();
		tasks.add(doubleGroupcomponent);
		taskmanager.start(tasks);
		
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
363 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
558 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
334 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
537 | 
						+ "Attribute4:{A,C};}; B:class={}; C:class={}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final ClassType clss = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		final Iterator<Attribute> attrIterator = clss.getAttributes().iterator();
		final Attribute attr1 = attrIterator.next();
		final Attribute attr2 = attrIterator.next();
		final Attribute attr3 = attrIterator.next();  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestTypeReferencer.java | 
253 | 
| de/fhdw/wtf/walker/tasks/test/TestTypeReferencer.java | 
428 | 
| de/fhdw/wtf/walker/tasks/test/TestTypeReferencer.java | 
604 | 
		final Group group12 = Group.create(group12Name, group12Elements, group12IdentifierToken, null);
		group1Elements.add(group12);
		final IdentifierToken class121IdentifierToken =
				IdentifierToken.create("Class1", Position.create("", 0 + 1, 0 + 1, 0));
		final Name class121Name = group12Name.addName(class121IdentifierToken);
		final Collection<ClassModifier> class121Modifiers = new Vector<>();
		final Collection<Attribute> class121Attributes = new Vector<>();
		final List<Type> class121SuperTypes = new Vector<>();
		final Collection<Operation> class121Operations = new Vector<>();
		final ClassType class121 =
				RegularClassType.create(
						class121Name,
						class121Modifiers,
						class121Attributes,
						class121SuperTypes,
						class121Operations,
						new Vector<Constructor>(),
						class121IdentifierToken,
						
						new Vector<ClassType>(),  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestTypeReferencer.java | 
279 | 
| de/fhdw/wtf/walker/tasks/test/TestTypeReferencer.java | 
454 | 
| de/fhdw/wtf/walker/tasks/test/TestTypeReferencer.java | 
629 | 
		final Group group2 = Group.create(group2Name, group2Elements, group2IdentifierToken, null);
		model.addGroup(group2);
		final IdentifierToken class21IdentifierToken =
				IdentifierToken.create("Class1", Position.create("", 0 + 1, 0 + 1, 0));
		final Name class21Name = group2Name.addName(class21IdentifierToken);
		final Collection<ClassModifier> class21Modifiers = new Vector<>();
		final Collection<Attribute> class21Attributes = new Vector<>();
		final List<Type> class21SuperTypes = new Vector<>();
		final Collection<Operation> class21Operations = new Vector<>();
		final ClassType class21 =
				RegularClassType.create(
						class21Name,
						class21Modifiers,
						class21Attributes,
						class21SuperTypes,
						class21Operations,
						new Vector<Constructor>(),
						class21IdentifierToken,
						
						new Vector<ClassType>(),  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestTypeReferencer.java | 
305 | 
| de/fhdw/wtf/walker/tasks/test/TestTypeReferencer.java | 
480 | 
| de/fhdw/wtf/walker/tasks/test/TestTypeReferencer.java | 
654 | 
		final Group group21 = Group.create(group21Name, group21Elements, group21IdentifierToken, null);
		group2Elements.add(group21);
		final IdentifierToken class211IdentifierToken =
				IdentifierToken.create("Class1", Position.create("", 0 + 1, 0 + 1, 0));
		final Name class211Name = group21Name.addName(class211IdentifierToken);
		final Collection<ClassModifier> class211Modifiers = new Vector<>();
		final Collection<Attribute> class211Attributes = new Vector<>();
		final List<Type> class211SuperTypes = new Vector<>();
		final Collection<Operation> class211Operations = new Vector<>();
		final ClassType class211 =
				RegularClassType.create(
						class211Name,
						class211Modifiers,
						class211Attributes,
						class211SuperTypes,
						class211Operations,
						new Vector<Constructor>(),
						class211IdentifierToken,
						
						new Vector<ClassType>(),  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestBaseTypeInheritanceCheck.java | 
177 | 
| de/fhdw/wtf/walker/tasks/test/TestBaseTypeInheritanceCheck.java | 
226 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
53 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
97 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
142 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
186 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
232 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
277 | 
		baseTypeInheritanceCheck.addDependency(referencer);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(2, okResult.size());
		assertEquals(0, failResult.size());
	}
	
	/**
	 * personGroup:group=[Person:class=Person+{};];.
	 * 
	 * @throws InterruptedException
	 *             InterruptedException
	 * @throws ExecutionException
	 *             ExecutionException
	 * @throws NoValidTokenStreamException
	 *             NoValidTokenStreamException
	 * @throws CyclicDependencyException
	 *             CyclicDependencyException
	 */
	@Test
	public void testInheritFromItself() throws InterruptedException, ExecutionException, NoValidTokenStreamException,  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
58 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
129 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
200 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
272 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
344 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
414 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
486 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
549 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
612 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
674 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
737 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
800 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
865 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
927 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
989 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
1059 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
1121 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
1184 | 
						+ "operation : [[(parameter:Integer) -> String ]];}; ];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		Model model = null;
		model = parser.parse();
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		
		final SimpleWalkerTask doubleGroupcomponent = DoubleGroupcomponentCheck.create(model, taskmanager);
		final SimpleWalkerTask doubleAttributenameCheck = DoubleAttributenameCheck.create(model, taskmanager);
		final SimpleWalkerTask referencer = TypeReferencer.create(model, taskmanager);
		final SimpleWalkerTask prototypesTask = PrototypesTask.create(model, taskmanager);
		final SimpleWalkerTask cyclicInheritance = CyclicInheritanceCheck.create(model, taskmanager);
		final SimpleWalkerTask subtypesFillTask = SubtypesFillTask.create(model, taskmanager);
		final GroupDependencyTask doubleChecks = GroupDependencyTask.create(taskmanager);   | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
129 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
154 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
402 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
822 | 
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		assertEquals(1, model.getInteger().getPrototype().getSuperTypes().size());
		assertEquals(
				model.getAnything().getPrototype(),
				HelperUtils.getReferencedType(model.getInteger().getPrototype().getSuperTypes().iterator().next()));
		
		assertEquals(1, model.getString().getPrototype().getSuperTypes().size());
		assertEquals(
				model.getAnything().getPrototype(),
				HelperUtils.getReferencedType(model.getString().getPrototype().getSuperTypes().iterator().next()));
	}
	
	/**
	 * Group:group=[Class:class={Attribute:String;};]; .
	 * 
	 * @throws Exception
	 *             Exception
	 */
	@Test
	public void testModelWithoutSum() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
250 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
515 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
627 | 
	public void testClassAbstractModifier() throws Exception {
		this.stream.add(this.group1IdentifierToken);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.classIdentifierToken);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.abstractToken);
		this.stream.add(this.semicolonToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
403 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
482 | 
	public void testClassVisitableModifier() throws Exception {
		this.stream.add(this.group1IdentifierToken);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.classIdentifierToken);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.visitableToken);
		this.stream.add(this.semicolonToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
674 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
756 | 
		this.stream.add(this.superClass1IdentifierToken);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.classIdentifierToken);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.superClass1IdentifierToken);
		this.stream.add(this.plusSymbolToken);
		this.stream.add(this.curlyBracketOpenToken);   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
403 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
782 | 
						new Vector<Operation>(),
						constructors,
						aIdentifierToken,
						
						new Vector<ClassType>());
		group1Vector.add(aClass);
		
		final ProductType aProduct = ProductType.create(this.bracketOpenToken);
		final ProductType xProduct = ProductType.create(this.bracketOpenToken);
		final ProductType sProduct = ProductType.create(this.bracketOpenToken);
		final ProductType xsProduct = ProductType.create(this.bracketOpenToken);
		
		final ByNameState integerName = ByNameState.create(UnqualifiedName.create(this.integerIdentifier));
		final ByNameState stringName = ByNameState.create(UnqualifiedName.create(this.stringIdentifier));
		
		final TypeProxy stringTypeProxy = TypeProxy.create(this.stringIdentifier, stringName);
		final TypeProxy integerTypeProxy = TypeProxy.create(this.integerIdentifier, integerName);   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
289 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
507 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
557 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
608 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
888 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
580 | 
		final IdentifierToken myAttribute = IdentifierToken.create("MyAttribute", Position.create("", 1, 1, 0));
		final IdentifierToken string = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
542 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
552 | 
		AbstractOperationsCheck.create(model, taskmanager);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(1, okResult.size());
		assertEquals(0, failResult.size());
	}
}  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
129 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
154 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
402 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
534 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
772 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
822 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
864 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
916 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
955 | 
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		assertEquals(1, model.getInteger().getPrototype().getSuperTypes().size());
		assertEquals(
				model.getAnything().getPrototype(),
				HelperUtils.getReferencedType(model.getInteger().getPrototype().getSuperTypes().iterator().next()));
		
		assertEquals(1, model.getString().getPrototype().getSuperTypes().size());
		assertEquals(
				model.getAnything().getPrototype(),
				HelperUtils.getReferencedType(model.getString().getPrototype().getSuperTypes().iterator().next()));
	}
	
	/**
	 * Group:group=[Class:class={Attribute:String;};]; .
	 * 
	 * @throws Exception
	 *             Exception
	 */
	@Test
	public void testModelWithoutSum() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
199 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
245 | 
		assertEquals(model.getAnything().getPrototype(), HelperUtils.getReferencedType(superTypesAttr2Iterator.next()));
		
		assertEquals(1, model.getInteger().getPrototype().getSuperTypes().size());
		assertEquals(
				attr2.getAttrType().getPrototype(),
				HelperUtils.getReferencedType(model.getInteger().getPrototype().getSuperTypes().iterator().next()));
		
		assertEquals(1, model.getString().getPrototype().getSuperTypes().size());
		assertEquals(
				attr2.getAttrType().getPrototype(),
				HelperUtils.getReferencedType(model.getString().getPrototype().getSuperTypes().iterator().next()));
	}
	
	/**
	 * Group:group=[Class:class={Attribute1:{String,Integer}; Attribute2:{String};}; Class2:class={};]; .
	 * 
	 * @throws Exception
	 *             Exception
	 */
	@Test
	public void testNormalContainsInheritance2() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/common/task/test/TaskTest.java | 
152 | 
| de/fhdw/wtf/common/task/test/TaskTest.java | 
186 | 
	public void testCyclicDependency() {
		final SimpleScannerInput input =
				new SimpleScannerInput("" + "group1:group=[" + "class1:class={};" + "group2:group=["
						+ "class2:class={};" + "group3:group=[" + "class3:class={" + "a:group2>class2;" + "};" + "];"
						+ "];" + "];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		Model model = null;
		try {
			model = parser.parse();
		} catch (final NoValidTokenStreamException e) {
			fail();
		}
		
		final TaskExecutor taskmanager = TaskExecutorFixed.create();
		
		final SimpleWalkerTask doubleAttributename = DoubleAttributenameCheck.create(model, taskmanager);
		final SimpleWalkerTask doubleGroupcomponent = DoubleGroupcomponentCheck.create(model, taskmanager);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
578 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1147 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1293 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1386 | 
		sProduct.addElement(ProductElementType.create("s", stringTypeProxy, sParameterIdentifierToken));
		
		constructors.add(Constructor.create(aProduct, aClass, new Vector<ConstructorReference>(), aIdentifierToken));
		
		final Operation operation =
				Operation.create(
						"op",
						new Vector<OperationModifier>(),
						sProduct,
						aClass,
						SumType.create(this.curlyBracketOpenToken),
						op);
		operations.add(operation);
		
		final Model expected = Model.create(group1IdentifierToken);
		expected.addGroup(group1);
		
		this.parser = Parser.create(output);
		final Model actual = this.parser.parse();
		
		assertEquals(0, this.parser.getExceptions().size());
		assertEquals(expected, actual);
	}
	
	/**
	 * Group1:group=[A:class={op:[[(s:String)->{}]];();};]; Parser macht wieder Reihenfolge: Konstruktor, Operation.
	 * 
	 * @throws Exception
	 *             {@link de.fhdw.wtf.common.exception.parser.NoValidTokenStreamException}
	 */
	@Test
	public void testFirstOperationThanConstructor() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
475 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
575 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
633 | 
		this.stream.add(this.doubleSquareBracketCloseToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		try {
			this.parser.parse();
			fail();
		} catch (final NoValidTokenStreamException e) {
			assertEquals(1, this.parser.getExceptions().size());
			boolean noSemicolon = false;
			for (final Exception ex : this.parser.getExceptions()) {
				if (ex instanceof NoSemicolonException) {
					noSemicolon = true;
				}
			}
			assertTrue(noSemicolon);
		}
	}
	
	/**
	 * MyGroup:group=[MyClass:class={MyAttribute:(name:String;};];.
	 */
	@Test
	public void testNoBracketCloseExceptionAttribute() {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
911 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
990 | 
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		try {
			this.parser.parse();
			fail();
		} catch (final NoValidTokenStreamException e) {
			assertEquals(1, this.parser.getExceptions().size());
			boolean noCurlyBracketOpen = false;
			for (final Exception ex : this.parser.getExceptions()) {
				if (ex instanceof NoCurlyBracketOpenException) {
					noCurlyBracketOpen = true;
				}
			}
			assertTrue(noCurlyBracketOpen);
		}
	}
	
	/**
	 * MyGroup:group=[MyClass:class=[];];.
	 */
	@Test
	public void testNoCurlyBracketOpenException2() {  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
445 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
492 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
552 | 
		AbstractOperationsCheck.create(model, taskmanager);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(1, okResult.size());
		assertEquals(0, failResult.size());
	}  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
542 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
276 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
322 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
368 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
414 | 
		AbstractOperationsCheck.create(model, taskmanager);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(1, okResult.size());
		assertEquals(0, failResult.size());
	}  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
134 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
467 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
535 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
606 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
673 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
759 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
848 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
929 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1003 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1080 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1157 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1204 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1293 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1381 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1417 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1494 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1585 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1678 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1772 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1863 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1931 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2005 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2189 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2268 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2357 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2460 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2550 | 
				IdentifierToken.create("Attribute", Position.create("", 0 + 1, 0 + 1, 0));
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(attributeIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.stringIdentifier);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
171 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
245 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
856 | 
	public void testProductSum2() throws Exception {
		final IdentifierToken classIdentifier = IdentifierToken.create("class1", Position.create("", 1, 1, 0));
		final IdentifierToken groupIdentifier = IdentifierToken.create("group1", Position.create("", 1, 1, 0));
		final IdentifierToken attributeIdentifier = IdentifierToken.create("attribute", Position.create("", 1, 1, 0));
		final IdentifierToken integerIdentifier = IdentifierToken.create("Integer", Position.create("", 1, 1, 0));
		final IdentifierToken stringIdentifier = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		
		final SimpleScannerInput input =
				new SimpleScannerInput(  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
631 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
701 | 
		final Type attr2Type = ((SumType) attr2.getAttrType()).getPrototype();
		final Type attr3Type = ((SumType) attr3.getAttrType()).getPrototype();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();
		assertEquals(4, supertypesAttr1.size());
		final Set<Type> actualSupertypes = new HashSet<>();
		for (final Type type : supertypesAttr1) {
			actualSupertypes.add(HelperUtils.getReferencedType(type));
		}
		final Set<Type> expectedSupertypes1 = new HashSet<>();  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestTypeReferencer.java | 
1065 | 
| de/fhdw/wtf/walker/tasks/test/TestTypeReferencer.java | 
1134 | 
		final SimpleScannerInput input = new SimpleScannerInput("group1:group=[class1:class={attribute:Anything;};];");
		
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		final TypeReferencerTestReturnValue v = new TypeReferencerTestReturnValue(model);
		assertEquals(1, v.getOkResult().size());
		assertEquals(0, v.getFailResult().size());
		this.assertOperations.assertAllReferencesByType(model);
		
		final Vector<Attribute> attributes = new Vector<>();
		
		final QualifiedName name =
				QualifiedName
						.create(UnqualifiedName.create(group1Identifier), UnqualifiedName.create(class1Identifier));
		
		final ClassType clazz =  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
680 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
861 | 
		this.stream.add(this.semicolonToken);
		this.stream.add(this.classIdentifierToken);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.superClass1IdentifierToken);
		this.stream.add(this.plusSymbolToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
254 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
350 | 
		groupVector.add(cClass);
		
		final ProductType aProduct = ProductType.create(this.bracketOpenToken);
		final ProductType bProduct = ProductType.create(this.bracketOpenToken);
		final ProductType cProduct = ProductType.create(this.bracketOpenToken);
		
		aConstructors.add(Constructor.create(aProduct, aClass, new Vector<ConstructorReference>(), aIdentifierToken));
		bConstructors.add(Constructor.create(bProduct, bClass, new Vector<ConstructorReference>(), bIdentifierToken));
		cConstructors.add(Constructor.create(cProduct, cClass, new Vector<ConstructorReference>(), cIdentifierToken));
		
		final Model expected = Model.create(group1IdentifierToken);
		expected.addGroup(group1);   | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
53 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
109 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
165 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
221 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
277 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
333 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
389 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
443 | 
		model = parser.parse();
		final TaskExecutorFixed taskmanager = TaskExecutorFixed.create();
		AbstractOperationsCheck.create(model, taskmanager);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(0, okResult.size());  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestBaseTypeInheritanceCheck.java | 
276 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
53 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
97 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
142 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
186 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
232 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
277 | 
		baseTypeInheritanceCheck.addDependency(referencer);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(2, okResult.size());
		assertEquals(0, failResult.size());
	}  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
606 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
673 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
759 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
848 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
929 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1003 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1080 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1157 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1204 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1293 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1381 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1417 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1494 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1585 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1678 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1772 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2047 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2189 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2268 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2357 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2460 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2550 | 
		final IdentifierToken attributeIdentifier = IdentifierToken.create("Attribute", Position.create("", 1, 1, 0));
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(attributeIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.bracketOpenToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
685 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
769 | 
		this.stream.add(this.superClass1IdentifierToken);
		this.stream.add(this.plusSymbolToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(this.group1IdentifierToken);
		final Group group = Group.create(groupName, groupVector, this.group1IdentifierToken);
		final Name className = groupName.addName(this.classIdentifierToken);
		final Name superclassName = groupName.addName(this.superClass1IdentifierToken);   | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
614 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
680 | 
		final Type attr2Type = ((SumType) attr2.getAttrType()).getPrototype();
		final Type attr3Type = ((SumType) attr3.getAttrType()).getPrototype();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();
		
		final Collection<Type> expectedSupertypes = new ArrayList<>();
		expectedSupertypes.add(clssA);
		expectedSupertypes.add(clssB);
		expectedSupertypes.add(clssC);
		expectedSupertypes.add(clssClass);
		expectedSupertypes.add(attr3Type);
		expectedSupertypes.add(attr2Type);   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
388 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
471 | 
		final IdentifierToken sParameterIdentifierToken = IdentifierToken.create("s", Position.create("", 1, 1, 0));
		
		final Vector<GroupElement> group1Vector = new Vector<>();
		final Vector<Constructor> constructors = new Vector<>();
		
		final Name group1Name = UnqualifiedName.create(group1IdentifierToken);
		final Group group1 = Group.create(group1Name, group1Vector, group1IdentifierToken);
		
		final Name aName = group1Name.addName(aIdentifierToken);
		final ClassType aClass =
				RegularClassType.create(
						aName,
						new Vector<ClassModifier>(),
						new Vector<Attribute>(),
						new Vector<Type>(),
						new Vector<Operation>(),
						constructors,
						aIdentifierToken,
						
						new Vector<ClassType>());
		group1Vector.add(aClass);
		
		final ProductType aProduct = ProductType.create(this.bracketOpenToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1495 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1581 | 
				new SimpleScannerInput("Group1:group=[S1A:class={};S2A:class={};A:class=S1A+S2A+{();};];");
		final VerboseTokenStream output = new VerboseTokenStream(SimpleTokenStream.create());
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		
		final IdentifierToken group1IdentifierToken = IdentifierToken.create("Group1", Position.create("", 1, 1, 0));
		final IdentifierToken aIdentifierToken = IdentifierToken.create("A", Position.create("", 1, 1, 0));
		final IdentifierToken s1aIdentifierToken = IdentifierToken.create("S1A", Position.create("", 1, 1, 0));
		final IdentifierToken s2aIdentifierToken = IdentifierToken.create("S2A", Position.create("", 1, 1, 0));
		
		final Vector<GroupElement> group1Vector = new Vector<>();  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1752 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1866 | 
						+ "A:class=SA1+SA2+{(i:Integer)=SA1(Integer)+SA2(Integer);};];");
		final VerboseTokenStream output = new VerboseTokenStream(SimpleTokenStream.create());
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final IdentifierToken group1IdentifierToken = IdentifierToken.create("Group1", Position.create("", 1, 1, 0));
		final IdentifierToken aIdentifierToken = IdentifierToken.create("A", Position.create("", 1, 1, 0));
		final IdentifierToken iIdentifierToken = IdentifierToken.create("i", Position.create("", 1, 1, 0));
		final IdentifierToken sa1IdentifierToken = IdentifierToken.create("SA1", Position.create("", 1, 1, 0));
		final IdentifierToken sa2IdentifierToken = IdentifierToken.create("SA2", Position.create("", 1, 1, 0));  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
124 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
250 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
301 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
352 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
403 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
515 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
572 | 
	public void testSimpleClass() throws Exception {
		this.stream.add(this.group1IdentifierToken);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.classIdentifierToken);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
471 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
2027 | 
		final IdentifierToken iParameterIdentifierToken = IdentifierToken.create("i", Position.create("", 1, 1, 1));
		
		final Vector<GroupElement> group1Vector = new Vector<>();
		final Vector<Constructor> constructors = new Vector<>();
		
		final Name group1Name = UnqualifiedName.create(group1IdentifierToken);
		final Group group1 = Group.create(group1Name, group1Vector, group1IdentifierToken);
		
		final Name aName = group1Name.addName(aIdentifierToken);
		final ClassType aClass =
				RegularClassType.create(
						aName,
						new Vector<ClassModifier>(),
						new Vector<Attribute>(),
						new Vector<Type>(),
						new Vector<Operation>(),
						constructors,
						aIdentifierToken,
						
						new Vector<ClassType>());
		group1Vector.add(aClass);
		
		final ProductType emptyProduct = ProductType.create(this.bracketOpenToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
350 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
463 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
898 | 
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(myOperation);
		this.stream.add(this.colonToken);
		this.stream.add(this.doubleSquareBracketOpenToken);
		this.stream.add(this.bracketOpenToken);
		this.stream.add(myParameter);
		this.stream.add(this.colonToken);
		this.stream.add(string);
		this.stream.add(this.bracketCloseToken);
		this.stream.add(this.arrowToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.doubleSquareBracketCloseToken);
		this.stream.add(this.abstractToken);   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestGetFirstAndLastToken.java | 
615 | 
| de/fhdw/wtf/parser/test/TestGetFirstAndLastToken.java | 
832 | 
		expectedLastToken = ColonToken.create(Position.create("", 0 + 1, 5 + 1, 5));
		assertEquals(expectedLastToken, name.getLastToken());
		
		// Klasse Class
		final Iterator<GroupElement> iterator2 = group.getGroupElements().iterator();
		final GroupElement groupElement = iterator2.next();
		final ClassType class1 = groupElement.accept(new GroupElementReturnVisitor<ClassType>() {
			
			@Override
			public ClassType handle(final Group group) {
				fail();
				return null;
			}
			
			@Override
			public ClassType handle(final ClassType clss) {
				return clss;
			}
		});
		
		expectedFirstToken = IdentifierToken.create("Class", Position.create("", 1, 14, 13));
		expectedLastToken = SquareBracketCloseToken.create(Position.create("", 1, 59, 58));  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
233 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
268 | 
						+ "Attribute2:(name:String, count:Integer); Attribute3:[Integer->String];};];");
		final Model model = this.getModel(input);
		
		assertTrue(model.getString().getPrototype() == model.getString());
		assertTrue(model.getInteger().getPrototype() == model.getInteger());
		
		final ClassType cls = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		
		assertTrue(cls.getPrototype() == cls);
		
		final Iterator<Attribute> attributes = cls.getAttributes().iterator();
		final Attribute attribute_1 = attributes.next();
		final Attribute attribute_2 = attributes.next();   | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
1202 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
1118 | 
		expectedSupertypes.add(abstrProductCreated);
		
		this.checkSupertypes(expectedSupertypes, productPrototyp2.getSuperTypes());
		
		assertEquals(1, clssA.getSuperTypes().size());
		assertEquals(1, model.getString().getSuperTypes().size());
		assertEquals(1, model.getInteger().getSuperTypes().size());
	}
	
	/**
	 * Assert Equality of expectedSupertypes and supertypes.
	 * 
	 * @param expectedSupertypes
	 *            expectedSupertypes
	 * @param supertypes
	 *            supertypes
	 */
	private void checkSupertypes(final Collection<Type> expectedSupertypes, final Collection<Type> supertypes) {
		assertEquals(expectedSupertypes.size(), supertypes.size());
		for (final Type type : supertypes) {
			assertTrue(expectedSupertypes.remove(HelperUtils.getReferencedType(type)));
		}
	}
	
}  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
301 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
333 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
365 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
394 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
533 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
696 | 
		final SimpleScannerInput input = new SimpleScannerInput("Group:group=[Class:class={Attribute1:{Integer};};];");
		final Model model = this.getModel(input);
		
		assertTrue(model.getString().getPrototype() == model.getString());
		assertTrue(model.getInteger().getPrototype() == model.getInteger());
		
		final ClassType cls = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		
		assertTrue(cls.getPrototype() == cls);
		
		final Iterator<Attribute> attributes = cls.getAttributes().iterator();
		final Attribute attribute1 = attributes.next();
		
		assertTrue(attribute1.getAttrType() instanceof SumType);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
177 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
222 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
269 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
316 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
363 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
426 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
473 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
558 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
149 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
190 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
235 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
281 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
334 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
394 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
439 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
537 | 
						+ "Attribute2:{String,Integer};};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final ClassType clss = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		final Iterator<Attribute> attrIterator = clss.getAttributes().iterator();
		final Attribute attr1 = attrIterator.next();
		final Attribute attr2 = attrIterator.next();  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
613 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
685 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
886 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
596 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
664 | 
						+ "Attribute3:{Integer,String};}; B:class=A+{}; C:class=A+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final Iterator<GroupElement> iterator = model.getGroups().iterator().next().getGroupElements().iterator();
		
		final ClassType clssA = (ClassType) iterator.next();
		final ClassType clssB = (ClassType) iterator.next();
		final ClassType clssC = (ClassType) iterator.next();
		final ClassType clssClass = (ClassType) iterator.next();  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestTypeReferencer.java | 
349 | 
| de/fhdw/wtf/walker/tasks/test/TestTypeReferencer.java | 
525 | 
		final Group group211 = Group.create(group211Name, group211Elements, group211IdentifierToken, null);
		group21Elements.add(group211);
		final IdentifierToken class2111IdentifierToken =
				IdentifierToken.create("Class1", Position.create("", 0 + 1, 0 + 1, 0));
		final Name class2111Name = group211Name.addName(class2111IdentifierToken);
		final Collection<ClassModifier> class2111Modifiers = new Vector<>();
		final Collection<Attribute> class2111Attributes = new Vector<>();
		final List<Type> class2111SuperTypes = new Vector<>();
		final Collection<Operation> class2111Operations = new Vector<>();
		final ClassType class2111 =
				RegularClassType.create(
						class2111Name,
						class2111Modifiers,
						class2111Attributes,
						class2111SuperTypes,
						class2111Operations,
						new Vector<Constructor>(),  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
171 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
452 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
482 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
627 | 
	public void testSimpleClassWithoutSemicolon() {
		this.stream.add(this.group1IdentifierToken);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.classIdentifierToken);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.squareBracketCloseToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
312 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
586 | 
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.transientToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<ClassModifier> modifiers = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(this.group1IdentifierToken);
		final Group group = Group.create(groupName, groupVector, this.group1IdentifierToken);
		final Name className = groupName.addName(this.classIdentifierToken);
		modifiers.add(ClassModifierTransient.create(this.transientToken));   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
414 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
529 | 
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.visitableToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<ClassModifier> modifiers = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(this.group1IdentifierToken);
		final Group group = Group.create(groupName, groupVector, this.group1IdentifierToken);
		final Name className = groupName.addName(this.classIdentifierToken);
		modifiers.add(ClassModifierVisitable.create(this.visitableToken));   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
415 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
683 | 
		this.stream.add(string);
		this.stream.add(this.arrowToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.doubleSquareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		try {
			this.parser.parse();
			fail();
		} catch (final NoValidTokenStreamException e) {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
77 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
171 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
245 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
310 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
415 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
515 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
615 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
731 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
856 | 
	public void testProductSum1() throws Exception {
		final IdentifierToken classIdentifier = IdentifierToken.create("class1", Position.create("", 1, 1, 0));
		final IdentifierToken groupIdentifier = IdentifierToken.create("group1", Position.create("", 1, 1, 0));
		final IdentifierToken attributeIdentifier = IdentifierToken.create("attribute", Position.create("", 1, 1, 0));
		final IdentifierToken integerIdentifier = IdentifierToken.create("Integer", Position.create("", 1, 1, 0));
		final IdentifierToken stringIdentifier = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		final IdentifierToken testIdentifier = IdentifierToken.create("Test", Position.create("", 1, 1, 0));  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
76 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
140 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
204 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
337 | 
		cyclicInheritance.addDependency(referencer);
		inheritanceChecker.addMembers(cyclicInheritance, baseTypeInheritanceCheck);
		
		doubleAttributenameCheck.addDependency(inheritanceChecker);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(6, okResult.size());  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
79 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
143 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
276 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
340 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
406 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
472 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
537 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
603 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
90 | 
		doubleAttributenameCheck.addDependency(inheritanceChecker);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(6, okResult.size());
		assertEquals(0, failResult.size());  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
134 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
281 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
467 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
535 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1863 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1931 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2005 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2047 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2118 | 
				IdentifierToken.create("Attribute", Position.create("", 0 + 1, 0 + 1, 0));
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(attributeIdentifier);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
262 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
530 | 
		this.stream.add(this.abstractToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<ClassModifier> modifiers = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(this.group1IdentifierToken);
		final Group group = Group.create(groupName, groupVector, this.group1IdentifierToken);
		final Name className = groupName.addName(this.classIdentifierToken);
		modifiers.add(ClassModifierAbstract.create(this.abstractToken));   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
274 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
325 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
376 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
427 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
545 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
602 | 
		modifiers.add(ClassModifierAbstract.create(this.abstractToken));
		final ClassType class1 =
				RegularClassType.create(
						className,
						modifiers,
						new Vector<Attribute>(),
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						this.classIdentifierToken,
						
						new Vector<ClassType>());
		groupVector.add(class1);
		final Model expected = Model.create(this.group1IdentifierToken);
		expected.addGroup(group);
		
		final Model actual = this.parser.parse();
		assertEquals(expected, actual);
		assertEquals(0, this.parser.getExceptions().size());
	}
	
	/**
	 * Group:group=[Class:class={} transient;]; .
	 * 
	 * @throws Exception
	 */
	@Test
	public void testClassTransientModifier() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
364 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
587 | 
		this.stream.add(this.serviceToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<ClassModifier> modifiers = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(this.group1IdentifierToken);
		final Group group = Group.create(groupName, groupVector, this.group1IdentifierToken);
		final Name className = groupName.addName(this.classIdentifierToken);
		modifiers.add(ClassModifierService.create(this.serviceToken));   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
273 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
664 | 
	public void testOperationWithOneSimpleInputParameter() throws Exception {
		final IdentifierToken myGroup = IdentifierToken.create("MyGroup", Position.create("", 1, 1, 0));
		final IdentifierToken myClass = IdentifierToken.create("MyClass", Position.create("", 1, 1, 0));
		final IdentifierToken myOperation = IdentifierToken.create("MyOperation", Position.create("", 1, 1, 0));
		final IdentifierToken myParameter = IdentifierToken.create("MyParameter", Position.create("", 1, 1, 0));
		final IdentifierToken string = IdentifierToken.create("String", Position.create("", 1, 1, 0));  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
124 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
171 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
250 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
301 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
352 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
403 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
452 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
482 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
515 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
572 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
627 | 
	public void testSimpleClass() throws Exception {
		this.stream.add(this.group1IdentifierToken);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.classIdentifierToken);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
78 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
149 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
220 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
292 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
364 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
434 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
506 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
569 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
632 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
694 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
757 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
820 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
885 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
947 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
1008 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
1079 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
1141 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
1204 | 
		subtypesFillTask.addDependency(cyclicInheritance);
		prototypesTask.addDependency(subtypesFillTask);
		overloadingCheck.addDependency(prototypesTask);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(7, okResult.size());  | 
| File | 
Line | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1477 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1677 | 
	public void testThrownSumContainsThrownTypes() throws SumIsAnythingException {
		
		final Token dummyToken = DummyToken.getInstance();
		final Position dummyPosition = DummyToken.getDummyPosition();
		final IdentifierToken a = IdentifierToken.create("A", dummyPosition);
		final IdentifierToken b = IdentifierToken.create("B", dummyPosition);
		
		// Prepare Actual
		final SumType actualSum = SumType.create(dummyToken);
		actualSum.add(ThrownType.create(
				dummyToken,
				TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(a)))));
		actualSum.add(ThrownType.create(
				dummyToken,
				TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(b)))));
		
		final ThrownType thrownType = ThrownType.create(DummyToken.getInstance(), actualSum, DummyToken.getInstance());  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2636 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2676 | 
	public void testAttributeToString() {
		final IdentifierToken string = IdentifierToken.create("String", Position.create("", 0 + 1, 0 + 1, 0));
		final IdentifierToken attributeIdentifier =
				IdentifierToken.create("Attribute", Position.create("", 0 + 1, 0 + 1, 0));
		final IdentifierToken prior = IdentifierToken.create("prior", Position.create("", 0 + 1, 0 + 1, 0));
		final UnqualifiedName name = UnqualifiedName.create(string);
		final BaseType type = BaseType.create(name, string, string);
		final Collection<AttributeModifier> modifiers = new ArrayList<AttributeModifier>();  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
680 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
755 | 
				new SimpleScannerInput("Group1:group=[A:class={op1:[[(s:String)->{}]];();op2:[[(i:Integer)->{}]];};];");
		final VerboseTokenStream output = new VerboseTokenStream(SimpleTokenStream.create());
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		
		final IdentifierToken group1IdentifierToken = IdentifierToken.create("Group1", Position.create("", 1, 1, 0));
		final IdentifierToken aIdentifierToken = IdentifierToken.create("A", Position.create("", 1, 1, 0));
		final IdentifierToken sParameterIdentifierToken = IdentifierToken.create("s", Position.create("", 1, 1, 1));
		final IdentifierToken iParameterIdentifierToken = IdentifierToken.create("i", Position.create("", 1, 1, 1));  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
807 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
857 | 
		this.stream.add(this.semicolonToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		try {
			this.parser.parse();
			fail();
		} catch (final NoValidTokenStreamException e) {
			boolean noCurlyBracketClose = false;
			assertEquals(1, this.parser.getExceptions().size());
			for (final Exception ex : this.parser.getExceptions()) {
				if (ex instanceof NoCurlyBracketCloseException) {
					noCurlyBracketClose = true;
				}
			}
			assertTrue(noCurlyBracketClose);
		}
	}
	
	/**
	 * MyGroup:group=[MyClass:class={MyAttribute:{String, Integer;};];.
	 */
	@Test
	public void testNoCurlyBracketCloseExceptionSum() {  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestAnalyzeInheritanceTreesTask.java | 
213 | 
| de/fhdw/wtf/walker/tasks/test/TestAnalyzeInheritanceTreesTask.java | 
256 | 
		final Model model = SyntaxCheck.getInstance().getModelFromString(input);
		
		final Iterator<Type> iterator = model.getConstructorCallDependencies().keySet().iterator();
		while (iterator.hasNext()) {
			final Type current = iterator.next();
			
			switch (current.getTypeString()) {
			case "group1>A":
				assertTrue(true);
				assertEquals(0, model.getConstructorCallDependencies().get(current).size());
				break;
			case "group1>B":
				assertTrue(true);
				assertEquals(0, model.getConstructorCallDependencies().get(current).size());
				break;
			case "group1>C":  | 
| File | 
Line | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1477 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1677 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1759 | 
	public void testThrownSumContainsThrownTypes() throws SumIsAnythingException {
		
		final Token dummyToken = DummyToken.getInstance();
		final Position dummyPosition = DummyToken.getDummyPosition();
		final IdentifierToken a = IdentifierToken.create("A", dummyPosition);
		final IdentifierToken b = IdentifierToken.create("B", dummyPosition);
		
		// Prepare Actual
		final SumType actualSum = SumType.create(dummyToken);
		actualSum.add(ThrownType.create(
				dummyToken,
				TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(a)))));
		actualSum.add(ThrownType.create(
				dummyToken,
				TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(b)))));  | 
| File | 
Line | 
| de/fhdw/wtf/core/integration/test/TestScannerParserIntegration.java | 
131 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
487 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
557 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
701 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
789 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
874 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
953 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1028 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1105 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1235 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1324 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1442 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1526 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1618 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1713 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1804 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1883 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1954 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2142 | 
		final IdentifierToken valueIdentifier = IdentifierToken.create("value", position);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType classModel =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						new Vector<ClassType>());
		
		final ByNameState keyReferenceState = ByNameState.create(UnqualifiedName.create(keyIdentifier));  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1701 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2204 | 
		this.stream.add(this.bracketCloseToken);
		this.stream.add(this.arrowToken);
		this.stream.add(this.integerIdentifier);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.arrowToken);
		this.stream.add(this.stringIdentifier);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);   | 
| File | 
Line | 
| de/fhdw/wtf/core/integration/test/TestScannerParserIntegration.java | 
131 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
626 | 
		final IdentifierToken valueIdentifier = IdentifierToken.create("value", position);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<Attribute> attributes = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(groupIdentifier);
		final Group group = Group.create(groupName, groupVector, groupIdentifier);
		
		final Name className = groupName.addName(classIdentifier);
		final ClassType classModel =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						attributes,
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						classIdentifier,
						new Vector<ClassType>());
		
		final ByNameState keyReferenceState = ByNameState.create(UnqualifiedName.create(keyIdentifier));  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
186 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
241 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
290 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
340 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
398 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
453 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
508 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
558 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
609 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
666 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
784 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
839 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
1065 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
1237 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
203 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
278 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
362 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
581 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
670 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
801 | 
		final IdentifierToken string = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(myOperation);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
235 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
501 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
551 | 
	public void testNoTypeExceptionProduct() {
		this.stream = SimpleTokenStream.create();
		this.parser = Parser.create(this.stream);
		final IdentifierToken myGroup = IdentifierToken.create("MyGroup", Position.create("", 1, 1, 0));
		final IdentifierToken myClass = IdentifierToken.create("MyClass", Position.create("", 1, 1, 0));
		final IdentifierToken myAttribute = IdentifierToken.create("MyAttribute", Position.create("", 1, 1, 0));
		final IdentifierToken name = IdentifierToken.create("name", Position.create("", 1, 1, 0));  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
284 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
832 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
1230 | 
	public void testNoTypeExceptionSum() {
		this.stream = SimpleTokenStream.create();
		this.parser = Parser.create(this.stream);
		final IdentifierToken myGroup = IdentifierToken.create("MyGroup", Position.create("", 1, 1, 0));
		final IdentifierToken myClass = IdentifierToken.create("MyClass", Position.create("", 1, 1, 0));
		final IdentifierToken myAttribute = IdentifierToken.create("MyAttribute", Position.create("", 1, 1, 0));
		final IdentifierToken string = IdentifierToken.create("String", Position.create("", 1, 1, 0));  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestModels.java | 
111 | 
| de/fhdw/wtf/parser/test/TestModels.java | 
171 | 
| de/fhdw/wtf/parser/test/TestModels.java | 
248 | 
		final Parser parser = Parser.create(stream);
		final IdentifierToken group1Identifier = IdentifierToken.create("Group1", Position.create("", 1, 1, 0));
		final IdentifierToken class1Identifier = IdentifierToken.create("Class1", Position.create("", 1, 1, 0));
		final IdentifierToken group2Identifier = IdentifierToken.create("Group2", Position.create("", 1, 1, 0));
		final IdentifierToken class2Identifier = IdentifierToken.create("Class2", Position.create("", 1, 1, 0));
		final IdentifierToken class3Identifier = IdentifierToken.create("Class3", Position.create("", 1, 1, 0));  | 
| File | 
Line | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
151 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
225 | 
		product.addElement(element4);
		
		final Attribute attribute =
				Attribute.create("attribute", product, new Vector<AttributeModifier>(), attributeIdentifier);
		attributes.add(attribute);
		
		modifiers.add(ClassModifierService.create(VisitableToken.create(Position.create("", 1, 1, 0))));
		modifiers.add(ClassModifierTransient.create(AbstractToken.create(Position.create("", 1, 1, 0))));
		groupVector.add(clazz);
		final Model expected = Model.create(groupIdentifier);
		expected.addGroup(group);
		assertEquals(expected, model);
	}
	
	/**
	 * group1 : group = [ class1 : class = {attribute : (int1:Integer, str:String) ;} service transient;]; .
	 * 
	 * @throws Exception
	 */
	@Test
	public void testProductSum2() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
289 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
394 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
494 | 
		sum.add(typeProxyString);
		
		final Attribute attribute =
				Attribute.create("attribute", sum, new Vector<AttributeModifier>(), attributeIdentifier);
		attributes.add(attribute);
		
		modifiers.add(ClassModifierService.create(VisitableToken.create(Position.create("", 1, 1, 0))));
		modifiers.add(ClassModifierTransient.create(AbstractToken.create(Position.create("", 1, 1, 0))));
		groupVector.add(clazz);
		final Model expected = Model.create(groupIdentifier);
		expected.addGroup(group);
		assertEquals(expected, model);
	}
	
	/**
	 * group1 : group = [ class1 : class = {attribute : {(int1:Integer,int2:Integer,int42:Integer), String,
	 * (int3:Integer,int4:Integer), Test} ;} service transient;]; .
	 * 
	 * @throws Exception
	 */
	@Test
	public void testProductSum4() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
133 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
686 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
770 | 
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(this.group1IdentifierToken);
		final Group group = Group.create(groupName, groupVector, this.group1IdentifierToken);
		final Name className = groupName.addName(this.classIdentifierToken);
		final ClassType class1 =   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
182 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
336 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
394 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
449 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
662 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
780 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
885 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
1061 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
665 | 
		final IdentifierToken myGroup = IdentifierToken.create("MyGroup", Position.create("", 1, 1, 0));
		final IdentifierToken myClass = IdentifierToken.create("MyClass", Position.create("", 1, 1, 0));
		final IdentifierToken myOperation = IdentifierToken.create("MyOperation", Position.create("", 1, 1, 0));
		final IdentifierToken myParameter = IdentifierToken.create("MyParameter", Position.create("", 1, 1, 0));
		final IdentifierToken string = IdentifierToken.create("String", Position.create("", 1, 1, 0));  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
48 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
175 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
292 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
341 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
390 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
439 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
568 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
459 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
504 | 
		cyclicInheritance.addDependency(referencer);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<OKTaskResult>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<ExceptionalTaskResult>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(1, okResult.size());
		assertEquals(1, failResult.size());  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
269 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
316 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
426 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
519 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
235 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
281 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
394 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
492 | 
						+ "B:class=A+{}; C:class=A+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final ClassType clss = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		final Iterator<Attribute> attrIterator = clss.getAttributes().iterator();
		final Attribute attr1 = attrIterator.next();  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
896 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
945 | 
		final ClassType clssD = (ClassType) iterator.next();
		
		final Collection<Type> supertypesClassA = clssA.getSuperTypes();
		assertEquals(1, supertypesClassA.size());
		final Iterator<Type> supertypesClassAIterator = supertypesClassA.iterator();
		assertEquals(model.getAnything().getPrototype(), HelperUtils.getReferencedType(supertypesClassAIterator.next()));
		
		final Collection<Type> supertypesClassB = clssB.getSuperTypes();
		assertEquals(1, supertypesClassB.size());
		final Iterator<Type> supertypesClassBIterator = supertypesClassB.iterator();
		assertEquals(clssA, HelperUtils.getReferencedType(supertypesClassBIterator.next()));   | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
301 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
333 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
365 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
394 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
424 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
460 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
497 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
533 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
696 | 
		final SimpleScannerInput input = new SimpleScannerInput("Group:group=[Class:class={Attribute1:{Integer};};];");
		final Model model = this.getModel(input);
		
		assertTrue(model.getString().getPrototype() == model.getString());
		assertTrue(model.getInteger().getPrototype() == model.getInteger());
		
		final ClassType cls = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		
		assertTrue(cls.getPrototype() == cls);
		
		final Iterator<Attribute> attributes = cls.getAttributes().iterator();
		final Attribute attribute1 = attributes.next();  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
727 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
768 | 
						+ "Attribute2:(p1:String,p2:Integer);};];");
		final Model model = this.getModel(input);
		
		assertTrue(model.getString().getPrototype() == model.getString());
		assertTrue(model.getInteger().getPrototype() == model.getInteger());
		
		final ClassType cls = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		
		assertTrue(cls.getPrototype() == cls);
		
		final Iterator<Attribute> iterator = cls.getAttributes().iterator();
		final Attribute attribute1 = iterator.next();   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
273 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2112 | 
	public void testSomeAttributes() throws Exception {
		final IdentifierToken groupIdentifier = IdentifierToken.create("Group", Position.create("", 0 + 1, 0 + 1, 0));
		final IdentifierToken classIdentifier = IdentifierToken.create("Class", Position.create("", 0 + 1, 0 + 1, 0));
		final IdentifierToken attributeIdentifier1 =
				IdentifierToken.create("Attribute1", Position.create("", 0 + 1, 0 + 1, 0));
		final IdentifierToken attributeIdentifier2 =
				IdentifierToken.create("Attribute2", Position.create("", 0 + 1, 0 + 1, 0));  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
898 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
1075 | 
		this.stream.add(this.equalToken);
		this.stream.add(myOperation);
		this.stream.add(this.colonToken);
		this.stream.add(this.doubleSquareBracketOpenToken);
		this.stream.add(this.bracketOpenToken);
		this.stream.add(myParameter);
		this.stream.add(this.colonToken);
		this.stream.add(string);
		this.stream.add(this.bracketCloseToken);
		this.stream.add(this.arrowToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.doubleSquareBracketCloseToken);   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestGroups.java | 
150 | 
| de/fhdw/wtf/parser/test/TestGroups.java | 
248 | 
	public void testSimpleGroupInGroupComplete() throws Exception {
		this.stream.add(this.idGroup1Token);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.idGroup2Token);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.squareBracketCloseToken);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
59 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
115 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
171 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
227 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
283 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
339 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
395 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
227 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
59 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
113 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
170 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
225 | 
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(0, okResult.size());
		assertEquals(1, failResult.size());
		
		final Exception exception = failResult.iterator().next().getError();
		if (exception instanceof AbstractOperationsException) {  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
445 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
492 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
542 | 
| de/fhdw/wtf/walker/tasks/test/TestBaseTypeInheritanceCheck.java | 
61 | 
| de/fhdw/wtf/walker/tasks/test/TestBaseTypeInheritanceCheck.java | 
119 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
320 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
276 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
322 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
368 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
414 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
552 | 
		AbstractOperationsCheck.create(model, taskmanager);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(1, okResult.size());
		assertEquals(0, failResult.size());  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestBaseTypeInheritanceCheck.java | 
65 | 
| de/fhdw/wtf/walker/tasks/test/TestBaseTypeInheritanceCheck.java | 
123 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
52 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
179 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
296 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
345 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
394 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
443 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
572 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
324 | 
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(1, okResult.size());
		assertEquals(1, failResult.size());
		
		final Exception exception = failResult.iterator().next().getError();
		if (exception instanceof BaseTypeInheritanceException) {  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
79 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
143 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
276 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
340 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
406 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
472 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
537 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
603 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
1010 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
90 | 
		doubleAttributenameCheck.addDependency(inheritanceChecker);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(6, okResult.size());
		assertEquals(0, failResult.size());  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
207 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
91 | 
		doubleAttributenameCheck.addDependency(inheritanceChecker);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(5, okResult.size());
		assertEquals(1, failResult.size());  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
177 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
222 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
363 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
473 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
519 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
558 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
149 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
190 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
334 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
439 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
492 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
537 | 
						+ "Attribute2:{String,Integer};};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final ClassType clss = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		final Iterator<Attribute> attrIterator = clss.getAttributes().iterator();
		final Attribute attr1 = attrIterator.next();  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
385 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
579 | 
				((SumType) ((SumType) attr2.getAttrType()).getPrototype()).getSuperTypes();
		assertEquals(1, supertypesAttr2.size());
		final Iterator<Type> superTypesAttr2Iterator = supertypesAttr2.iterator();
		assertEquals(attr1Type, superTypesAttr2Iterator.next());
		
		assertEquals(0, ((SumType) attr3.getAttrType()).getSuperTypes().size());
		final Collection<Type> supertypesAttr3 =
				((SumType) ((SumType) attr3.getAttrType()).getPrototype()).getSuperTypes();
		assertEquals(1, supertypesAttr3.size());
		final Iterator<Type> superTypesAttr3Iterator = supertypesAttr3.iterator();
		assertEquals(attr1Type, superTypesAttr3Iterator.next());   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
205 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
684 | 
		this.stream.add(HyphenToken.create(Position.createDummyPosition()));
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.doubleSquareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		try {
			this.parser.parse();
			fail();
		} catch (final NoValidTokenStreamException e) {
			boolean noArrowException = false;  | 
| File | 
Line | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1350 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1521 | 
	public void testThrownSumContainsOneThrownTypeFirstAndOneNormalThrownTypes() throws SumIsAnythingException {
		
		final Token dummyToken = DummyToken.getInstance();
		final Position dummyPosition = DummyToken.getDummyPosition();
		final IdentifierToken a = IdentifierToken.create("A", dummyPosition);
		final IdentifierToken b = IdentifierToken.create("B", dummyPosition);
		
		// Prepare Actual
		final SumType actualSum = SumType.create(dummyToken);
		actualSum.add(ThrownType.create(
				dummyToken,
				TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(a)))));
		actualSum.add(TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(b))));
		
		final ThrownType thrownType = ThrownType.create(DummyToken.getInstance(), actualSum, DummyToken.getInstance());  | 
| File | 
Line | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1392 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1599 | 
	public void testThrownSumContainsOneThrownTypeSecondAndOneNormalThrownTypes() throws SumIsAnythingException {
		
		final Token dummyToken = DummyToken.getInstance();
		final Position dummyPosition = DummyToken.getDummyPosition();
		final IdentifierToken a = IdentifierToken.create("A", dummyPosition);
		final IdentifierToken b = IdentifierToken.create("B", dummyPosition);
		
		// Prepare Actual
		final SumType actualSum = SumType.create(dummyToken);
		actualSum.add(TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(a))));
		actualSum.add(ThrownType.create(
				dummyToken,
				TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(b)))));
		
		final ThrownType thrownType = ThrownType.create(DummyToken.getInstance(), actualSum, DummyToken.getInstance());  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
171 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
199 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
452 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
482 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
627 | 
	public void testSimpleClassWithoutSemicolon() {
		this.stream.add(this.group1IdentifierToken);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.classIdentifierToken);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(this.curlyBracketCloseToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
262 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
313 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
364 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
415 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
530 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
587 | 
		this.stream.add(this.abstractToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		final Vector<GroupElement> groupVector = new Vector<>();
		final Vector<ClassModifier> modifiers = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(this.group1IdentifierToken);
		final Group group = Group.create(groupName, groupVector, this.group1IdentifierToken);
		final Name className = groupName.addName(this.classIdentifierToken);
		modifiers.add(ClassModifierAbstract.create(this.abstractToken));   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
205 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
416 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
907 | 
		this.stream.add(HyphenToken.create(Position.createDummyPosition()));
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.doubleSquareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		try {
			this.parser.parse();
			fail();
		} catch (final NoValidTokenStreamException e) {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
629 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
1122 | 
		this.stream.add(myClass2);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		try {
			this.parser.parse();
			fail();
		} catch (final NoValidTokenStreamException e) {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
682 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
905 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
217 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
383 | 
		this.stream.add(string);
		this.stream.add(this.bracketCloseToken);
		this.stream.add(this.arrowToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.doubleSquareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestGroups.java | 
187 | 
| de/fhdw/wtf/parser/test/TestGroups.java | 
215 | 
	public void testSimpleGroupInGroup2GroupCloseMissing() {
		this.stream.add(this.idGroup1Token);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.idGroup2Token);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.semicolonToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
201 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
281 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2118 | 
				IdentifierToken.create("Attribute", Position.create("", 0 + 1, 0 + 1, 0));
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(superclassIdentifier);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
753 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
845 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
980 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
1038 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
1079 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
1148 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
741 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
833 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
877 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
949 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
992 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
1062 | 
						+ "D:class=B+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final Iterator<GroupElement> iterator = model.getGroups().iterator().next().getGroupElements().iterator();
		final ClassType clssA = (ClassType) iterator.next();
		final ClassType clssB = (ClassType) iterator.next();  | 
| File | 
Line | 
| de/fhdw/wtf/dsl/scanner/test/ScannerTest.java | 
519 | 
| de/fhdw/wtf/dsl/scanner/test/ScannerTest.java | 
570 | 
				new SimpleScannerInput("MyGroup:group=[MyClass:class={MyOperation:[[()->[String->Integer]!]];};];");
		final VerboseTokenStream output = new VerboseTokenStream(SimpleTokenStream.create());
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		
		final TokenStream stream = SimpleTokenStream.create();
		
		final IdentifierToken myGroupToken = IdentifierToken.create("MyGroup", Position.create("", 1, 1, 0));
		final IdentifierToken myClassToken = IdentifierToken.create("MyClass", Position.create("", 1, 16, 15));
		final IdentifierToken myOperationToken = IdentifierToken.create("MyOperation", Position.create("", 1, 31, 30));  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
124 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
199 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
250 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
301 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
352 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
403 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
515 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
572 | 
	public void testSimpleClass() throws Exception {
		this.stream.add(this.group1IdentifierToken);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.classIdentifierToken);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(this.curlyBracketCloseToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestGroups.java | 
150 | 
| de/fhdw/wtf/parser/test/TestGroups.java | 
187 | 
| de/fhdw/wtf/parser/test/TestGroups.java | 
215 | 
| de/fhdw/wtf/parser/test/TestGroups.java | 
248 | 
	public void testSimpleGroupInGroupComplete() throws Exception {
		this.stream.add(this.idGroup1Token);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.idGroup2Token);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.squareBracketCloseToken);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
55 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
111 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
167 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
223 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
279 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
335 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
391 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
276 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
322 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
368 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
414 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
552 | 
		AbstractOperationsCheck.create(model, taskmanager);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(0, okResult.size());  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
445 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
492 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
542 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
55 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
109 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
166 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
221 | 
		AbstractOperationsCheck.create(model, taskmanager);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(1, okResult.size());  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
613 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
685 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
753 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
845 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
886 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
937 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
1038 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
596 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
664 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
741 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
833 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
949 | 
						+ "Attribute3:{Integer,String};}; B:class=A+{}; C:class=A+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final Iterator<GroupElement> iterator = model.getGroups().iterator().next().getGroupElements().iterator();
		
		final ClassType clssA = (ClassType) iterator.next();
		final ClassType clssB = (ClassType) iterator.next();
		final ClassType clssC = (ClassType) iterator.next();  | 
| File | 
Line | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
2055 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
2136 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
2197 | 
		final SumType actualSum = SumType.create(dummyToken);
		actualSum.add(ThrownType.create(
				dummyToken,
				TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(b)))));
		actualSum.add(TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(b))));
		actualSum.add(TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(b))));
		actualSum.add(ThrownType.create(
				dummyToken,
				TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(b)))));
		
		final List<Type> standardizeElements = actualSum.standardize().accept(new TypeVisitorReturn<List<Type>>() {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
102 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
100 | 
		this.integerIdentifier = IdentifierToken.create("Integer", Position.create("", 0 + 1, 0 + 1, 0));
		this.colonToken = ColonToken.create(Position.create("", 0 + 1, 0 + 1, 0));
		this.groupToken = GroupToken.create(Position.create("", 0 + 1, 0 + 1, 0));
		this.equalToken = EqualToken.create(Position.create("", 0 + 1, 0 + 1, 0));
		this.squareBracketOpenToken = SquareBracketOpenToken.create(Position.create("", 0, 0, 0));  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
186 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
241 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
290 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
340 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
398 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
453 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
508 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
558 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
609 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
666 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
784 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
839 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
941 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
981 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
1065 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
1237 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
203 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
278 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
362 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
581 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
670 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
801 | 
		final IdentifierToken string = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
229 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
276 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
323 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
433 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
480 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
805 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
197 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
242 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
401 | 
		final Iterator<Attribute> attrIterator = clss.getAttributes().iterator();
		final Attribute attr1 = attrIterator.next();
		final Attribute attr2 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();
		assertEquals(1, supertypesAttr1.size());
		final Iterator<Type> superTypesAttr1Iterator = supertypesAttr1.iterator();
		assertEquals(model.getAnything().getPrototype(), HelperUtils.getReferencedType(superTypesAttr1Iterator.next()));   | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
613 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
685 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
886 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
937 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
980 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
1079 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
1148 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
596 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
664 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
877 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
992 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
1062 | 
						+ "Attribute3:{Integer,String};}; B:class=A+{}; C:class=A+{}; Class:class={};];");
		final Model model = this.getModel(input);
		
		assertEquals(0, model.getAnything().getSuperTypes().size());
		assertEquals(0, ((SumType) model.getAnything().getPrototype()).getSuperTypes().size());
		
		final Iterator<GroupElement> iterator = model.getGroups().iterator().next().getGroupElements().iterator();
		
		final ClassType clssA = (ClassType) iterator.next();
		final ClassType clssB = (ClassType) iterator.next();  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
281 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
606 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
673 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
759 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
848 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
929 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1003 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1080 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1157 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1204 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1293 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1381 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1417 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1494 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1585 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1678 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1772 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2118 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2189 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2268 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2357 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2460 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
2550 | 
				IdentifierToken.create("Attribute3", Position.create("", 0 + 1, 0 + 1, 0));
		this.stream.add(groupIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(classIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(attributeIdentifier1);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
149 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
278 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
329 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
380 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
431 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
549 | 
| de/fhdw/wtf/parser/test/TestClasses.java | 
606 | 
						new Vector<ClassModifier>(),
						new Vector<Attribute>(),
						new Vector<Type>(),
						new Vector<Operation>(),
						new Vector<Constructor>(),
						this.classIdentifierToken,
						
						new Vector<ClassType>());
		groupVector.add(class1);
		final Model expected = Model.create(this.group1IdentifierToken);
		expected.addGroup(group);
		
		final Model actual = this.parser.parse();
		assertEquals(expected, actual);
		assertEquals(0, this.parser.getExceptions().size());
		
	}
	
	/**
	 * Group:group=[Class:class={}]; .
	 */
	@Test
	public void testSimpleClassWithoutSemicolon() {  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestBaseTypeInheritanceCheck.java | 
61 | 
| de/fhdw/wtf/walker/tasks/test/TestBaseTypeInheritanceCheck.java | 
119 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
53 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
97 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
142 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
186 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
232 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
277 | 
		baseTypeInheritanceCheck.addDependency(referencer);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(1, okResult.size());  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestBaseTypeInheritanceCheck.java | 
177 | 
| de/fhdw/wtf/walker/tasks/test/TestBaseTypeInheritanceCheck.java | 
226 | 
| de/fhdw/wtf/walker/tasks/test/TestBaseTypeInheritanceCheck.java | 
276 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
320 | 
		baseTypeInheritanceCheck.addDependency(referencer);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(2, okResult.size());  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
80 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
151 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
222 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
294 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
366 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
436 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
508 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
571 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
634 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
696 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
759 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
822 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
887 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
949 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
1010 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
1081 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
1143 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
1206 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
91 | 
		overloadingCheck.addDependency(prototypesTask);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(7, okResult.size());  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
116 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
727 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
768 | 
						+ "Attribute2:(name:String,count:Integer)*;};];");
		final Model model = this.getModel(input);
		
		assertTrue(model.getString().getPrototype() == model.getString());
		assertTrue(model.getInteger().getPrototype() == model.getInteger());
		
		final ClassType cls = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		
		assertTrue(cls.getPrototype() == cls);
		
		final Iterator<Attribute> iterator = cls.getAttributes().iterator();
		final Attribute attribute_1 = iterator.next();   | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
233 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
268 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
301 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
333 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
365 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
394 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
424 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
460 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
497 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
533 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
696 | 
						+ "Attribute2:(name:String, count:Integer); Attribute3:[Integer->String];};];");
		final Model model = this.getModel(input);
		
		assertTrue(model.getString().getPrototype() == model.getString());
		assertTrue(model.getInteger().getPrototype() == model.getInteger());
		
		final ClassType cls = (ClassType) model.getGroups().iterator().next().getGroupElements().iterator().next();
		
		assertTrue(cls.getPrototype() == cls);
		
		final Iterator<Attribute> attributes = cls.getAttributes().iterator();
		final Attribute attribute_1 = attributes.next();   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
186 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
290 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
340 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
398 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
453 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
508 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
558 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
609 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
666 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
784 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
1021 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
1065 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
278 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
581 | 
		final IdentifierToken string = IdentifierToken.create("String", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
241 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
839 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
889 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
941 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
981 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
1237 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
203 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
362 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
670 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
801 | 
		final IdentifierToken name = IdentifierToken.create("name", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
523 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
1252 | 
		this.stream.add(this.colonToken);
		this.stream.add(string);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);
		
		try {
			this.parser.parse();
			fail();
		} catch (final NoValidTokenStreamException e) {
			assertEquals(1, this.parser.getExceptions().size());
			boolean noBracketClose = false;  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
937 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
977 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
1113 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
1152 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
1191 | 
	public void testNoCurlyBracketOpenException2() {
		this.stream = SimpleTokenStream.create();
		this.parser = Parser.create(this.stream);
		final IdentifierToken myGroup = IdentifierToken.create("MyGroup", Position.create("", 1, 1, 0));
		final IdentifierToken myClass = IdentifierToken.create("MyClass", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/testWithScanner/TestParserScanner.java | 
351 | 
| de/fhdw/wtf/parser/testWithScanner/TestParserScanner.java | 
441 | 
		final Operation operation2 = Operation.create("op2", operationModifiers, product, clazz, testTypeProxy, op2);
		operations.add(operation1);
		operations.add(operation2);
		
		modifiers.add(ClassModifierService.create(ServiceToken.create(Position.create("", 1, 1, 0))));
		modifiers.add(ClassModifierTransient.create(TransientToken.create(Position.create("", 1, 1, 0))));
		groupVector.add(clazz);
		final Model expected = Model.create(groupIdentifier);
		expected.addGroup(group);
		assertEquals(expected, model);
	}
	
	/**
	 * group1 : group = [ class1 : class = {op1 : [(param1:Integer, param2:{})->test] abstract; op2 : [(param1:Integer,
	 * param2:{Integer,String})->test] abstract;} service transient;]; .
	 * 
	 * @throws Exception
	 */
	@Test
	public void testSimpleClassOperation5Empty() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
805 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
288 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
446 | 
		final Iterator<Attribute> attrIterator = clssA.getAttributes().iterator();
		
		final Attribute attr1 = attrIterator.next();
		final Attribute attr2 = attrIterator.next();
		
		assertEquals(0, ((SumType) attr1.getAttrType()).getSuperTypes().size());
		final Type attr1Type = ((SumType) attr1.getAttrType()).getPrototype();
		final Collection<Type> supertypesAttr1 = ((SumType) attr1Type).getSuperTypes();
		assertEquals(1, supertypesAttr1.size());
		final Iterator<Type> superTypesAttr1Iterator = supertypesAttr1.iterator();   | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestTypeReferencer.java | 
863 | 
| de/fhdw/wtf/walker/tasks/test/TestTypeReferencer.java | 
888 | 
| de/fhdw/wtf/walker/tasks/test/TestTypeReferencer.java | 
985 | 
				new SimpleScannerInput("group1:group=[class1:class={" + "attr1:Class2 prior;};];");
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		final TypeReferencerTestReturnValue v = new TypeReferencerTestReturnValue(model);
		
		assertEquals(1, v.getFailResult().size());
		assertEquals(0, v.getOkResult().size());
		assertEquals(1, v.getTypeReferencer().getExceptions().size());
	}
	
	/**
	 * Test the referencing of: group1:group=[class1:class={attr1:group2>Class2 prior;};class2:class={};];
	 * group2:group=[class3:class={};];.
	 * 
	 * @throws Exception
	 *             {@link de.fhdw.wtf.common.exception.parser.NoValidTokenStreamException}, {@link InterruptedException}
	 *             , {@link ExecutionException}.
	 */
	@Test
	public void testNoClassException2() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1320 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1362 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1404 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1447 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1491 | 
| de/fhdw/wtf/common/ast/type/test/StandardizeSumsTest.java | 
1861 | 
		actualSum.add(TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(b))));
		
		final ThrownType thrownType = ThrownType.create(DummyToken.getInstance(), actualSum, DummyToken.getInstance());
		
		final Type standardizedType = thrownType.standardize();
		
		// Prepare Expected
		final SumType expectedSum = SumType.create(dummyToken);
		expectedSum.add(ThrownType.create(
				dummyToken,
				TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(a)))));
		expectedSum.add(ThrownType.create(
				dummyToken,
				TypeProxy.create(dummyToken, ByNameState.create(UnqualifiedName.create(b)))));   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
685 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1785 | 
		this.stream.add(this.colonToken);
		this.stream.add(this.bracketOpenToken);
		this.stream.add(nameIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.stringIdentifier);
		this.stream.add(this.commaToken);
		this.stream.add(countIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.integerIdentifier);
		this.stream.add(this.bracketCloseToken);
		this.stream.add(this.asteriskToken);
		this.stream.add(this.semicolonToken);   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1354 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1466 | 
		product.addElement(countElement);
		
		final MapType map = MapType.create(this.bracketOpenToken, product, integerType);
		
		final Attribute attribute =
				Attribute.create("Attribute", map, new Vector<AttributeModifier>(), attributeIdentifier);
		attributes.add(attribute);
		groupVector.add(classModel);
		final Model expected = Model.create(groupIdentifier);
		expected.addGroup(group);
		
		final Model actual = this.parser.parse();
		assertEquals(expected, actual);
		assertEquals(0, this.parser.getExceptions().size());
	}
	
	/**
	 * Group:group=[Class:class={Attribute:(name:.
	 * 
	 * @throws Exception
	 *             : {@link NoValidTokenStreamException}
	 */
	@Test
	public void testAttributeWithMapOnBeginningOfProduct() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1691 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1784 | 
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(this.bracketOpenToken);
		this.stream.add(nameIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.stringIdentifier);
		this.stream.add(this.commaToken);
		this.stream.add(countIdentifier);
		this.stream.add(this.colonToken);
		this.stream.add(this.integerIdentifier);
		this.stream.add(this.bracketCloseToken);
		this.stream.add(this.arrowToken);   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
168 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
186 | 
		this.abstractToken = AbstractToken.create(Position.create("", 1, 1, 0));
		this.commaToken = CommaToken.create(Position.create("", 1, 1, 0));
		this.doubleSquareBracketCloseToken = DoubleSquareBracketCloseToken.create(Position.create("", 1, 1, 0));
		this.doubleSquareBracketOpenToken = DoubleSquareBracketOpenToken.create(Position.create("", 1, 1, 0));
		this.arrowToken = ArrowToken.create(Position.create("", 1, 1, 0));
	}
	
	/**
	 * MyGroup:group=[MyClass:class={MyOperation:[[(MyParameter:String)-{}]];};];.
	 */
	@Test
	public void testNoArrowException() {  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
97 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
136 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
223 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
488 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
528 | 
| de/fhdw/wtf/walker/tasks/test/TestCyclicInheritanceCheck.java | 
615 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
459 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
504 | 
		cyclicInheritance.addDependency(referencer);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<OKTaskResult>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<ExceptionalTaskResult>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(2, okResult.size());  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestTypeReferencer.java | 
1065 | 
| de/fhdw/wtf/walker/tasks/test/TestTypeReferencer.java | 
1134 | 
| de/fhdw/wtf/walker/tasks/test/TestTypeReferencer.java | 
1216 | 
		final SimpleScannerInput input = new SimpleScannerInput("group1:group=[class1:class={attribute:Anything;};];");
		
		final TokenStream output = FilteredTokenStream.create();
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		final Model model = parser.parse();
		final TypeReferencerTestReturnValue v = new TypeReferencerTestReturnValue(model);
		assertEquals(1, v.getOkResult().size());
		assertEquals(0, v.getFailResult().size());
		this.assertOperations.assertAllReferencesByType(model);
		
		final Vector<Attribute> attributes = new Vector<>();
		
		final QualifiedName name =  | 
| File | 
Line | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
154 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
228 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
292 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
397 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
497 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
597 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
712 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
808 | 
				Attribute.create("attribute", product, new Vector<AttributeModifier>(), attributeIdentifier);
		attributes.add(attribute);
		
		modifiers.add(ClassModifierService.create(VisitableToken.create(Position.create("", 1, 1, 0))));
		modifiers.add(ClassModifierTransient.create(AbstractToken.create(Position.create("", 1, 1, 0))));
		groupVector.add(clazz);
		final Model expected = Model.create(groupIdentifier);
		expected.addGroup(group);
		assertEquals(expected, model);
	}
	
	/**
	 * group1 : group = [ class1 : class = {attribute : (int1:Integer, str:String) ;} service transient;]; .
	 * 
	 * @throws Exception
	 */
	@Test
	public void testProductSum2() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
653 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
701 | 
		assertEquals(model.getAnything().getPrototype(), HelperUtils.getReferencedType(superTypesAttr2Iterator.next()));
		
		assertEquals(0, ((SumType) attr3.getAttrType()).getSuperTypes().size());
		final Collection<Type> supertypesAttr3 =
				((SumType) ((SumType) attr3.getAttrType()).getPrototype()).getSuperTypes();
		assertEquals(1, supertypesAttr3.size());
		final Iterator<Type> superTypesAttr3Iterator = supertypesAttr3.iterator();
		assertEquals(model.getAnything().getPrototype(), HelperUtils.getReferencedType(superTypesAttr3Iterator.next()));
		
		assertEquals(1, model.getInteger().getPrototype().getSuperTypes().size());   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
821 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
904 | 
		final ListType list = ListType.create(this.bracketOpenToken, product);
		final ListType list2 = ListType.create(this.bracketOpenToken, list);
		
		final Attribute attribute =
				Attribute.create("Attribute", list2, new Vector<AttributeModifier>(), attributeIdentifier);
		attributes.add(attribute);
		groupVector.add(classModel);
		final Model expected = Model.create(groupIdentifier);
		expected.addGroup(group);
		
		final Model actual = this.parser.parse();
		assertEquals(expected, actual);
		assertEquals(0, this.parser.getExceptions().size());
	}
	
	/**
	 * Group:group=[Class:class={Attribute:{True, False}**;};];.
	 * 
	 * @throws Exception
	 *             : {@link NoValidTokenStreamException}
	 */
	@Test
	public void testAttributeWithMoreListsOnSum() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1131 | 
| de/fhdw/wtf/parser/test/TestAttributes.java | 
1558 | 
		final MapType map = MapType.create(this.integerIdentifier, integerType, stringType);
		
		final ListType list = ListType.create(this.bracketOpenToken, map);
		
		final Attribute attribute =
				Attribute.create("Attribute", list, new Vector<AttributeModifier>(), attributeIdentifier);
		attributes.add(attribute);
		groupVector.add(classModel);
		final Model expected = Model.create(groupIdentifier);
		expected.addGroup(group);
		
		final Model actual = this.parser.parse();
		assertEquals(expected, actual);
		assertEquals(0, this.parser.getExceptions().size());
	}
	
	/**
	 * Group:group=[Class:class={Attribute:[Integer->String]*;;];.
	 * 
	 * @throws Exception
	 *             : {@link NoValidTokenStreamException}
	 */
	@Test
	public void testAttributeWithListOfMapButMissingBracketClose() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
241 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
290 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
508 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
558 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
609 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
839 | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
1237 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
471 | 
		final IdentifierToken name = IdentifierToken.create("name", Position.create("", 1, 1, 0));
		this.stream.add(myGroup);
		this.stream.add(this.colonToken);
		this.stream.add(this.groupToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.squareBracketOpenToken);
		this.stream.add(myClass);
		this.stream.add(this.colonToken);
		this.stream.add(this.classToken);
		this.stream.add(this.equalToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(myAttribute);  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
231 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
309 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
397 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
523 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
611 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
705 | 
		final Vector<Operation> operations = new Vector<>();
		
		final Name groupName = UnqualifiedName.create(myGroup);
		final Group group = Group.create(groupName, groupVector, myGroup);
		
		final Name className = groupName.addName(myClass);
		
		final ClassType class1 =
				RegularClassType.create(
						className,
						new Vector<ClassModifier>(),
						new Vector<Attribute>(),
						new Vector<Type>(),
						operations,
						new Vector<Constructor>(),
						myClass,
						
						new Vector<ClassType>());
		groupVector.add(class1);
		
		final ProductType product = ProductType.create(this.bracketOpenToken);   | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
55 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
111 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
167 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
223 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
279 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
335 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
391 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
445 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
492 | 
| de/fhdw/wtf/walker/tasks/test/TestAbstractOperationsCheck.java | 
542 | 
| de/fhdw/wtf/walker/tasks/test/TestBaseTypeInheritanceCheck.java | 
61 | 
| de/fhdw/wtf/walker/tasks/test/TestBaseTypeInheritanceCheck.java | 
119 | 
| de/fhdw/wtf/walker/tasks/test/TestBaseTypeInheritanceCheck.java | 
177 | 
| de/fhdw/wtf/walker/tasks/test/TestBaseTypeInheritanceCheck.java | 
226 | 
| de/fhdw/wtf/walker/tasks/test/TestBaseTypeInheritanceCheck.java | 
276 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
79 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
143 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
207 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
276 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
340 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
406 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
472 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
537 | 
| de/fhdw/wtf/walker/tasks/test/TestDoubleAttributenameCheck.java | 
603 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
53 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
97 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
142 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
186 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
232 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
277 | 
| de/fhdw/wtf/walker/tasks/test/TestInvalidAttributeModifierCheck.java | 
320 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
80 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
151 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
222 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
294 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
366 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
436 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
508 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
571 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
634 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
696 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
759 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
822 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
887 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
949 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
1010 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
1081 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
1143 | 
| de/fhdw/wtf/walker/tasks/test/TestOverloadingCheck.java | 
1206 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
55 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
109 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
166 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
221 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
276 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
322 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
368 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
414 | 
| de/fhdw/wtf/walker/tasks/test/TestProductCheck.java | 
552 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
80 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
90 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
91 | 
		AbstractOperationsCheck.create(model, taskmanager);
		taskmanager.startAllKnownTasks();
		
		final Collection<OKTaskResult> okResult = new ArrayList<>();
		final Collection<ExceptionalTaskResult> failResult = new ArrayList<>();
		final Collection<TaskResult> results = taskmanager.getResultsAndShutdown();
		for (final TaskResult current : results) {
			current.accept(new TaskResultVisitor() {
				
				@Override
				public void handleOkTaskResult(final OKTaskResult result) {
					okResult.add(result);
				}
				
				@Override
				public void handleExceptionalTaskResult(final ExceptionalTaskResult result) {
					failResult.add(result);
				}
			});
		}
		
		assertEquals(0, okResult.size());  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestAnalyzeInheritanceTreesTask.java | 
273 | 
| de/fhdw/wtf/walker/tasks/test/TestAnalyzeInheritanceTreesTask.java | 
472 | 
| de/fhdw/wtf/walker/tasks/test/TestAnalyzeInheritanceTreesTask.java | 
542 | 
| de/fhdw/wtf/walker/tasks/test/TestAnalyzeInheritanceTreesTask.java | 
621 | 
				assertEquals(0, model.getConstructorCallDependencies().get(current).size());
				break;
			case "group1>D":
				final Iterator<Type> dIterator = model.getConstructorCallDependencies().get(current).iterator();
				assertEquals("group1>A", dIterator.next().toString());
				assertEquals("group1>B", dIterator.next().toString());
				assertEquals("group1>C", dIterator.next().toString());
				assertEquals(3, model.getConstructorCallDependencies().get(current).size());
				break;  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestAnalyzeInheritanceTreesTask.java | 
489 | 
| de/fhdw/wtf/walker/tasks/test/TestAnalyzeInheritanceTreesTask.java | 
561 | 
				assertEquals(1, model.getConstructorCallDependencies().get(current).size());
				break;
			case "group1>G":
				final Iterator<Type> gIterator = model.getConstructorCallDependencies().get(current).iterator();
				assertEquals("group1>D", gIterator.next().toString());
				assertEquals("group1>E", gIterator.next().toString());
				assertEquals("group1>F", gIterator.next().toString());
				assertEquals(3, model.getConstructorCallDependencies().get(current).size());
				break;  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestTypeReferencer.java | 
384 | 
| de/fhdw/wtf/walker/tasks/test/TestTypeReferencer.java | 
560 | 
| de/fhdw/wtf/walker/tasks/test/TestTypeReferencer.java | 
736 | 
						null);
		class2111Attributes.add(class2111Attribute);
		
		final TokenStream output = FilteredTokenStream.create();
		scanner.scan(input, output);
		final Parser parser = Parser.create(output);
		
		final Model result = parser.parse();
		final TypeReferencerTestReturnValue v = new TypeReferencerTestReturnValue(result);
		
		assertEquals(1, v.getFailResult().size());
		assertEquals(1, v.getTypeReferencer().getExceptions().size());
		assertEquals(0, v.getOkResult().size());
	}
	
	/**
	 * Test the referencing of:Group1:group = [Group2:group = [Class1:class={};];]; Group2:group= [Class1:class=
	 * Group1>Class1 + {};Group1:group=[Class1:class= {classa:Group1>Group2>Class1;};Group1:group=[Class1:class =
	 * Group2>Group1>Class1 + {class21:Group2>Group1>Class1;};];];];.
	 * 
	 * @throws Exception
	 *             {@link de.fhdw.wtf.common.exception.parser.NoValidTokenStreamException}, {@link InterruptedException}
	 *             , {@link ExecutionException}.
	 */
	@Test
	public void test2GroupsWithClassesRelativePath() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
539 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
610 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
680 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
755 | 
		final SimpleScannerInput input = new SimpleScannerInput("Group1:group=[A:class={();op:[[(s:String)->{}]];};];");
		final VerboseTokenStream output = new VerboseTokenStream(SimpleTokenStream.create());
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		
		final IdentifierToken group1IdentifierToken = IdentifierToken.create("Group1", Position.create("", 1, 1, 0));
		final IdentifierToken aIdentifierToken = IdentifierToken.create("A", Position.create("", 1, 1, 0));
		final IdentifierToken sParameterIdentifierToken = IdentifierToken.create("s", Position.create("", 1, 1, 1));
		final IdentifierToken op = IdentifierToken.create("op", Position.create("", 1, 1, 0));  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
971 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1037 | 
		final SimpleScannerInput input = new SimpleScannerInput("Group1:group=[A:class={s:String;();i:Integer;};];");
		final VerboseTokenStream output = new VerboseTokenStream(SimpleTokenStream.create());
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		
		final IdentifierToken group1IdentifierToken = IdentifierToken.create("Group1", Position.create("", 1, 1, 0));
		final IdentifierToken aIdentifierToken = IdentifierToken.create("A", Position.create("", 1, 1, 0));
		final IdentifierToken iParameterIdentifierToken = IdentifierToken.create("i", Position.create("", 1, 1, 1));
		final IdentifierToken nameIdentifierToken = IdentifierToken.create("s", Position.create("", 1, 1, 0));  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1325 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1419 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1672 | 
				new SimpleScannerInput("Group1:group=[SA:class={};A:class=SA+{();op:[[(s:String)->{}]];s:String;};];");
		final VerboseTokenStream output = new VerboseTokenStream(SimpleTokenStream.create());
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		
		final IdentifierToken group1IdentifierToken = IdentifierToken.create("Group1", Position.create("", 1, 1, 0));
		final IdentifierToken aIdentifierToken = IdentifierToken.create("A", Position.create("", 1, 1, 0));
		final IdentifierToken saIdentifierToken = IdentifierToken.create("SA", Position.create("", 1, 1, 0));
		final IdentifierToken sIdentifierToken = IdentifierToken.create("s", Position.create("", 1, 1, 1));  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1752 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1866 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1956 | 
						+ "A:class=SA1+SA2+{(i:Integer)=SA1(Integer)+SA2(Integer);};];");
		final VerboseTokenStream output = new VerboseTokenStream(SimpleTokenStream.create());
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final IdentifierToken group1IdentifierToken = IdentifierToken.create("Group1", Position.create("", 1, 1, 0));
		final IdentifierToken aIdentifierToken = IdentifierToken.create("A", Position.create("", 1, 1, 0));
		final IdentifierToken iIdentifierToken = IdentifierToken.create("i", Position.create("", 1, 1, 0));
		final IdentifierToken sa1IdentifierToken = IdentifierToken.create("SA1", Position.create("", 1, 1, 0));  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestGetFirstAndLastToken.java | 
422 | 
| de/fhdw/wtf/parser/test/TestGetFirstAndLastToken.java | 
511 | 
| de/fhdw/wtf/parser/test/TestGetFirstAndLastToken.java | 
723 | 
| de/fhdw/wtf/parser/test/TestGetFirstAndLastToken.java | 
832 | 
		expectedLastToken = ColonToken.create(Position.create("", 0 + 1, 5 + 1, 5));
		assertEquals(expectedLastToken, name.getLastToken());
		
		// Klasse Class
		final Iterator<GroupElement> iterator2 = group.getGroupElements().iterator();
		final GroupElement groupElement = iterator2.next();
		final ClassType class1 = groupElement.accept(new GroupElementReturnVisitor<ClassType>() {
			
			@Override
			public ClassType handle(final Group group) {
				fail();
				return null;
			}
			
			@Override
			public ClassType handle(final ClassType clss) {
				return clss;
			}
		});
		
		expectedFirstToken = IdentifierToken.create("Class", Position.create("", 0 + 1, 13 + 1, 13));  | 
| File | 
Line | 
| de/fhdw/wtf/parser/testWithScanner/TestParserScanner.java | 
123 | 
| de/fhdw/wtf/parser/testWithScanner/TestParserScanner.java | 
187 | 
| de/fhdw/wtf/parser/testWithScanner/TestParserScanner.java | 
268 | 
				Operation.create("op", new Vector<OperationModifier>(), product, clazz, testTypeProxy, op);
		operations.add(operation);
		
		modifiers.add(ClassModifierService.create(ServiceToken.create(Position.create("", 1, 1, 0))));
		modifiers.add(ClassModifierTransient.create(TransientToken.create(Position.create("", 1, 1, 0))));
		groupVector.add(clazz);
		final Model expected = Model.create(groupIdentifier);
		expected.addGroup(group);
		assertEquals(expected, model);
	}
	
	/**
	 * group1 : group = [ class1 : class = {op : [(param:Integer)->test];} service transient;]; .
	 * 
	 * @throws Exception
	 */
	@Test
	public void testSimpleClassOperation2() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
723 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
637 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
701 | 
		assertEquals(0, supertypesAttr2.size());
		
		assertEquals(0, ((SumType) attr3.getAttrType()).getSuperTypes().size());
		final Collection<Type> supertypesAttr3 =
				((SumType) ((SumType) attr3.getAttrType()).getPrototype()).getSuperTypes();
		assertEquals(1, supertypesAttr3.size());
		final Iterator<Type> superTypesAttr3Iterator = supertypesAttr3.iterator();
		assertEquals(model.getAnything().getPrototype(), HelperUtils.getReferencedType(superTypesAttr3Iterator.next()));
		
		assertEquals(1, model.getInteger().getPrototype().getSuperTypes().size());   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
464 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
971 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1037 | 
				new SimpleScannerInput("Group1:group=[A:class={()=A(Integer);(i:Integer);};];");
		final VerboseTokenStream output = new VerboseTokenStream(SimpleTokenStream.create());
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		
		final IdentifierToken group1IdentifierToken = IdentifierToken.create("Group1", Position.create("", 1, 1, 0));
		final IdentifierToken aIdentifierToken = IdentifierToken.create("A", Position.create("", 1, 1, 0));
		final IdentifierToken iParameterIdentifierToken = IdentifierToken.create("i", Position.create("", 1, 1, 1));
		
		final Vector<GroupElement> group1Vector = new Vector<>();  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1752 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1866 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1956 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
2021 | 
						+ "A:class=SA1+SA2+{(i:Integer)=SA1(Integer)+SA2(Integer);};];");
		final VerboseTokenStream output = new VerboseTokenStream(SimpleTokenStream.create());
		final Scanner scanner = ModelDslScanner.create();
		scanner.scan(input, output);
		final IdentifierToken group1IdentifierToken = IdentifierToken.create("Group1", Position.create("", 1, 1, 0));
		final IdentifierToken aIdentifierToken = IdentifierToken.create("A", Position.create("", 1, 1, 0));
		final IdentifierToken iIdentifierToken = IdentifierToken.create("i", Position.create("", 1, 1, 0));
		final IdentifierToken sa1IdentifierToken = IdentifierToken.create("SA1", Position.create("", 1, 1, 0));  | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestExceptions.java | 
415 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
218 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
296 | 
| de/fhdw/wtf/parser/test/TestOperations.java | 
384 | 
		this.stream.add(string);
		this.stream.add(this.arrowToken);
		this.stream.add(this.curlyBracketOpenToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.doubleSquareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.curlyBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.squareBracketCloseToken);
		this.stream.add(this.semicolonToken);
		this.stream.add(this.endToken);   | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesCleanInheritanceTask.java | 
192 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
164 | 
| de/fhdw/wtf/walker/tasks/test/TestSupertypesFillTask.java | 
630 | 
		assertEquals(0, supertypesAttr1.size());
		
		assertEquals(0, ((SumType) attr2.getAttrType()).getSuperTypes().size());
		final Collection<Type> supertypesAttr2 =
				((SumType) ((SumType) attr2.getAttrType()).getPrototype()).getSuperTypes();
		assertEquals(1, supertypesAttr2.size());
		final Iterator<Type> superTypesAttr2Iterator = supertypesAttr2.iterator();
		assertEquals(model.getAnything().getPrototype(), HelperUtils.getReferencedType(superTypesAttr2Iterator.next()));
		
		assertEquals(1, model.getInteger().getPrototype().getSuperTypes().size());   | 
| File | 
Line | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
888 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
947 | 
| de/fhdw/wtf/parser/test/TestConstructors.java | 
1556 | 
		attributes.add(Attribute.create("s", stringType, new Vector<AttributeModifier>(), sIdentifierToken));
		
		final ProductType aProduct = ProductType.create(this.bracketOpenToken);
		
		constructors.add(Constructor.create(aProduct, aClass, new Vector<ConstructorReference>(), aIdentifierToken));
		
		final Model expected = Model.create(group1IdentifierToken);
		expected.addGroup(group1);
		
		this.parser = Parser.create(output);
		final Model actual = this.parser.parse();
		
		assertEquals(0, this.parser.getExceptions().size());
		assertEquals(expected, actual);
	}
	
	/**
	 * Group1:group=[A:class={();s:String;};];.
	 * 
	 * @throws Exception
	 *             {@link de.fhdw.wtf.common.exception.parser.NoValidTokenStreamException}
	 */
	@Test
	public void testFirstConstructorThanVariable() throws Exception {  | 
| File | 
Line | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
154 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
228 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
292 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
397 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
497 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
597 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
712 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
808 | 
| de/fhdw/wtf/parser/testWithScanner/TestTypes.java | 
900 | 
				Attribute.create("attribute", product, new Vector<AttributeModifier>(), attributeIdentifier);
		attributes.add(attribute);
		
		modifiers.add(ClassModifierService.create(VisitableToken.create(Position.create("", 1, 1, 0))));
		modifiers.add(ClassModifierTransient.create(AbstractToken.create(Position.create("", 1, 1, 0))));
		groupVector.add(clazz);
		final Model expected = Model.create(groupIdentifier);
		expected.addGroup(group);
		assertEquals(expected, model);
	}  | 
| File | 
Line | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
614 | 
| de/fhdw/wtf/walker/tasks/test/TestPrototypesTask.java | 
647 | 
						" Group:group=[Class:class={operation1:[[(test1:String, test2:String)->Integer*]]; operation2:[[(test1:String, test2:String)->Integer*]];};];");
		final Model model = this.getModel(input);
		
		assertTrue(model.getString().getPrototype() == model.getString());
		assertTrue(model.getInteger().getPrototype() == model.getInteger());
		
		final Iterator<GroupElement> groupElementIterator =
				model.getGroups().iterator().next().getGroupElements().iterator();
		final ClassType cls = (ClassType) groupElementIterator.next();
		
		assertTrue(cls.getPrototype() == cls);
		
		final Iterator<Operation> operations = cls.getOperations().iterator();  |