code: public Set<Map.Entry<String, Object>> entrySet() {
          final List<Map.Entry<String, Object>> entries = new ArrayList<Map.Entry<String, Object>>();
          BsonBinaryReader reader = getBsonReader();
          try {
              reader.readStartDocument();
              while (reader.readBsonType() != BsonType.END_OF_DOCUMENT) {
                  entries.add(new AbstractMap.SimpleImmutableEntry<String, Object>(reader.readName(), readValue(reader)));
              }
              reader.readEndDocument();
          } finally {
              reader.close();
          }
          return new Set<Map.Entry<String, Object>>() {
              @Override
              public int size() {
                  return entries.size();
              }
  
              @Override
              public boolean isEmpty() {
                  return entries.isEmpty();
              }
  
              @Override
              public Iterator<Map.Entry<String, Object>> iterator() {
                  return entries.iterator();
              }
  
              @Override
              public Object[] toArray() {
                  return entries.toArray();
              }
  
              @Override
              public <T> T[] toArray(final T[] a) {
                  return entries.toArray(a);
              }
  
              @Override
              public boolean contains(final Object o) {
                  return entries.contains(o);
              }
  
              @Override
              public boolean containsAll(final Collection<?> c) {
                  return entries.containsAll(c);
              }
  
              @Override
              public boolean add(final Map.Entry<String, Object> stringObjectEntry) {
                  throw new UnsupportedOperationException();
              }
  
              @Override
              public boolean remove(final Object o) {
                  throw new UnsupportedOperationException();
              }
  
              @Override
              public boolean addAll(final Collection<? extends Map.Entry<String, Object>> c) {
                  throw new UnsupportedOperationException();
              }
  
              @Override
              public boolean retainAll(final Collection<?> c) {
                  throw new UnsupportedOperationException();
              }
  
              @Override
              public boolean removeAll(final Collection<?> c) {
                  throw new UnsupportedOperationException();
              }
  
              @Override
              public void clear() {
                  throw new UnsupportedOperationException();
              }
          };
      }
docs: Gets the entry set for all the key/value pairs in this {@code BSONObject}.  The returned set is immutable.
  
  @return then entry set