code: void setDelegates(Map<K, V> forward, Map<V, K> backward) {
      checkState(delegate == null);
      checkState(inverse == null);
      checkArgument(forward.isEmpty());
      checkArgument(backward.isEmpty());
      checkArgument(forward != backward);
      delegate = forward;
      inverse = makeInverse(backward);
    }
docs: Specifies the delegate maps going in each direction. Called by the constructor and by
  subclasses during deserialization.