code: public void save(Map<String, Object> data) throws PersistenceException {
          logger.debug("enter - save(Map)");
          try {
              Class<?> cls = persistent.getClass();
              
              state = new HashMap<String, Object>();
              while( cls != null && !cls.getName().equals(Object.class.getName()) ) {
                  Field[] fields = cls.getDeclaredFields();
                  
                  for( Field f : fields ) {
                      int m = f.getModifiers();
                  
                      if( Modifier.isTransient(m) || Modifier.isStatic(m) ) {
                          continue;
                      }
                      f.setAccessible(true);
                      state.put(f.getName(), f.get(persistent));
                  }
                  cls = cls.getSuperclass();
              }
              for( String key: data.keySet() ) {
                  state.put(key, data.get(key));
              }
          }
          catch( IllegalAccessException e ) {
              throw new PersistenceException(e.getMessage());
          }
          finally {
              logger.debug("exit - save(Map)");
          }
      }
docs: Saves the current state of the persistent object.
  @param data values that should be used to override any
  current state
  @throws org.dasein.persist.PersistenceException an error occurred
  reading values from the persistent object