code: @Override
      public RandomRoutingTable.Snapshot snapshot() {
          
          // block modification operations while creating the snapshot
          synchronized (this) {
              return new Snapshot(new HashMap<TrustGraphNodeId,TrustGraphNodeId>(routingTable),
                                  new ArrayList<TrustGraphNodeId>(orderedNeighbors));
          }
      }
docs: Creates a snapshot of the current state of the routing table.
  A mapping X->Y between two TrustGraphNeighbors represents that
  the next hop of a message received from the neighbor X is Y.
  
  This snapshot will contain each neighbor exactly once as a key
  and once as a value.
  
  @return a snapshot of the current state of the routing table
  represented as a Map between TrustGraphNeigbors.
  @see RandomRoutingTable.snapshot()