class RepositoryBackedSession {

  public void removeAttribute(String name) {
    assertValid();
    Attribute attr = getAttributeFromCache(name);
    if (attr == null) {
      attr = retrieveAttribute(name, null);
      if (attr == null) {
        return;
      }
    }
    if (sessionData.isNonCacheable(name)) {
      manager.getRepository().removeSessionAttribute(sessionData, name);
    }
    Object oldValue = attr.value;
    attr.value = null;
    attr.deleted = true;
    attr.changed = true;
    dirty = true;
    checkUsedAndLock();
    // Trigger the removal and binding events
    if (oldValue != null) {
      manager.getNotifier().attributeRemoved(this, name, oldValue);
    }
  }

  public  RepositoryBackedSession(SessionData sessionData, SessionManager manager, SessionFactory factory);
  protected  RepositoryBackedSession(RepositoryBackedSession linked);

}