code: final public boolean save(Transaction t) {
  		if (!isValid()) {
  			return false;
  		}
  
          boolean doesExist = exists();
          if (!doesExist) {
              beforeCreate();
          }
  
          beforeSave();
          final ContentValues cv = Utils.getContentValues(this);
          if (cv.size() == 0) {
              throw new ContentValuesEmptyException();
          }
          final String tableName = Utils.getTableName(getClass());
          if (doesExist) {
              if (t.update(tableName, cv, Utils.getWhereStatement(this)) == 0) {
                  return false;
              }
          } else {
              long id = t.insert(tableName, cv);
              if (id == -1) {
                  return false;
              }
  
              // set the @AutoIncrement column if one exists
              final ModelInfo info = ModelInfo.from(getClass());
              if (info.autoIncrementField != null) {
                  info.autoIncrementField.field.setAccessible(true);
                  try {
                      info.autoIncrementField.field.set(this, id);
                  } catch (Exception e) {
                      throw new RuntimeException(e);
                  }
              }
          }
  
  		t.addOnTransactionCommittedListener(new OnTransactionCommittedListener() {
  
  			@Override
  			public void onTransactionCommitted() {
  				Sprinkles.sInstance.mContext.getContentResolver().notifyChange(
  						Utils.getNotificationUri(Model.this.getClass()), null, true);
  			}
  		});
  
  		return true;
  	}
docs: Save this model to the database within the given transaction.
  If this model has an @AutoIncrement annotation on a property
  than that property will be set when this method returns.
  
  @param t
  The transaction to save this model in
  
  @return whether or not the save was successful.