code: public Set<String> getFieldNames() {
          HashSet<String> result = new LinkedHashSet<>(m_valueMap.keySet());
          return result;
      }
docs: Return the field names for which this DBObject has a value. The set does not
  include fields that have "remove" values stored. The set is copied.
  
  @return Field names for which this DBObject has a value. Empty if there are no
  field values for this object.
  @see    #getUpdatedFieldNames()