docs: public void removeDependency(T from, T to) {
        lock.writeLock().lock();
        try {
           Set<T> dependencies = outgoingEdges.get(from);
           if (dependencies == null || !dependencies.contains(to)) {
              throw new IllegalArgumentException("Inexistent dependency");
           }
           dependencies.remove(to);
           incomingEdges.get(to).remove(from);
        } finally {
           lock.writeLock().unlock();
        }
     }