final public Diagram createSystem(UmlSource source) {

		if (source.isEmpty()) {
			return buildEmptyError(source);
		}

		final IteratorCounter it = source.iterator();
		final String startLine = it.next();
		if (StartUtils.isArobaseStartDiagram(startLine) == false) {
			throw new UnsupportedOperationException();
		}

		if (it.hasNext() == false) {
			return buildEmptyError(source);
		}
		final String s = it.next();
		if (StartUtils.isArobaseEndDiagram(s)) {
			return buildEmptyError(source);
		}
		final AbstractPSystem sys = executeLine(s);
		if (sys == null) {
			return new PSystemError(source, new ErrorUml(ErrorUmlType.SYNTAX_ERROR, "Syntax Error?",
					it.currentNum() - 1));
		}
		sys.setSource(source);
		return sys;

	}