* });
*/
// TODO avoid unnecessary checking if component already present in
// metastore
Date moment = clock.getTime();
FCAGraph revokedGraph = getGraphOverTime(Collections.singleton(source))
.getGraph(moment);
// c-mols
Set<MaximumContextualMolecule> newCMols = new HashSet<MaximumContextualMolecule>(
assertedGraph.getContextualMolecules());
newCMols.removeAll(revokedGraph.getContextualMolecules());
addCMolecules(source, newCMols, moment);
Set<MaximumContextualMolecule> revokedCMols = new HashSet<MaximumContextualMolecule>(
revokedGraph.getContextualMolecules());
revokedCMols.removeAll(assertedGraph.getContextualMolecules());
revokeCMolecules(source, revokedCMols, moment);
// t-mols
Set<TerminalMolecule> newTMols = new HashSet<TerminalMolecule>(
assertedGraph.getTerminalMolecules());
newTMols.removeAll(revokedGraph.getTerminalMolecules());
addTMolecules(source, newTMols, moment);
Set<TerminalMolecule> revokedTMols = new HashSet<TerminalMolecule>(
revokedGraph.getTerminalMolecules());
revokedTMols.removeAll(assertedGraph.getTerminalMolecules());
revokeTMolecules(source, revokedTMols, moment);
// fg-nodes
Set<FunctionallyGroundedNode> newFGNodes = new HashSet<FunctionallyGroundedNode>(
assertedGraph.getFunctionallyGroundedNodes());
newFGNodes.removeAll(revokedGraph.getFunctionallyGroundedNodes());
addFGNodes(source, newFGNodes, moment);
Set<FunctionallyGroundedNode> revokedFGNodes = new HashSet<FunctionallyGroundedNode>(
revokedGraph.getFunctionallyGroundedNodes());
revokedFGNodes.removeAll(assertedGraph.getFunctionallyGroundedNodes());
revokeFGNodes(source, revokedFGNodes, moment);
}