	private void handleCollectedData(EcoreModelResourceVisitor visitor) {
		for (IFile f : visitor.getRemovedModelFiles()) {
			String workspacePath = getKeyPath(f);
			Descriptor d = pathToDescriptor.remove(workspacePath);
			if (d != null) {
				Descriptor d2 = uriToDescriptor.remove(d.nsURI);
				assert d2 == d;
			}
			delist(d);
		}
		Set<IFile> filesToAdd = new HashSet<IFile>(visitor.getNewModelFiles());
		for (IFile f : visitor.getChangedModelFiles()) {
			Descriptor d = pathToDescriptor.remove(getKeyPath(f));
			if (d != null) {
				Descriptor d2 = uriToDescriptor.remove(d.nsURI); 
				assert d2 == d;
				delist(d);
			}
			filesToAdd.add(f);
		}
		for (IFile f : filesToAdd) {
			if (shouldIgnoreWorkspaceMetamodel(f)) {
				continue;
			}
			try {
				Resource r = attemptLoad(f);
				if (r != null && hasSuitableContent(r)) {
					Descriptor d = createDescriptor(f, r);
					assert d != null;
					pathToDescriptor.put(d.workspacePath, d);
					uriToDescriptor.put(d.nsURI, d);
				}
			} catch (Exception ex) {
				ex.printStackTrace();
			}
		}
	}

	private void handleCollectedData(EcoreModelResourceVisitor visitor) {
		for (IFile f : visitor.getRemovedModelFiles()) {
			String workspacePath = getKeyPath(f);
			Descriptor d = pathToDescriptor.remove(workspacePath);
			if (d != null) {
				Descriptor d2 = uriToDescriptor.remove(d.nsURI);
				assert d2 == d;
				delist(d);
			}
		}
		Set<IFile> filesToAdd = new HashSet<IFile>(visitor.getNewModelFiles());
		for (IFile f : visitor.getChangedModelFiles()) {
			Descriptor d = pathToDescriptor.remove(getKeyPath(f));
			if (d != null) {
				Descriptor d2 = uriToDescriptor.remove(d.nsURI); 
				assert d2 == d;
				delist(d);
			}
			filesToAdd.add(f);
		}
		for (IFile f : filesToAdd) {
			if (shouldIgnoreWorkspaceMetamodel(f)) {
				continue;
			}
			try {
				Resource r = attemptLoad(f);
				if (r != null && hasSuitableContent(r)) {
					Descriptor d = createDescriptor(f, r);
					assert d != null;
					pathToDescriptor.put(d.workspacePath, d);
					uriToDescriptor.put(d.nsURI, d);
				}
			} catch (Exception ex) {
				ex.printStackTrace();
			}
		}
	}
