private MultimapEdge<V> addEdge(Integer key) {
        Entry<Integer, MultimapEdge<V>> floorKey = edges.floorEntry(key);
        if(floorKey == null || floorKey.getKey().compareTo(key) != 0) {
            // going to add new edge, but with what values?
            MultimapEdge<V> list;
            if (floorKey != null) {
                //some edge is before, add its values (adding to its territory)
                list = floorKey.getValue().copy();
            } else {
                list = new MultimapEdge<>();
            }
            
            // add new starting edge
            edges.put(key,list);
            return list;
        }
        return floorKey.getValue();
    }