public List<String> remove(List<String> pathsToRemove) {
   pathsToRemove = new ArrayList<>(pathsToRemove); // copy over to make sure 'remove' is supported
   List<String> pathsFound = new ArrayList<>();
   removeSuperAccessorIfNeeded(pathsToRemove, pathsFound);
   removeAttributeAccessorsIfNeeded(pathsToRemove, pathsFound);
   pathsToRemove.removeAll(pathsFound);
   pathsToRemove = removeFromSuperAccessorGraph(pathsToRemove);
   pathsToRemove = removeFromAttributeAccessorGraphs(pathsToRemove);
   return pathsToRemove;
 }