code: public Iterator<Map.Entry<FieldDescriptorType, Object>> iterator() {
      if (hasLazyField) {
        return new LazyIterator<FieldDescriptorType>(
            fields.entrySet().iterator());
      }
      return fields.entrySet().iterator();
    }
docs: Get an iterator to the field map. This iterator should not be leaked out
  of the protobuf library as it is not protected from mutation when fields
  is not immutable.