========================================================================
Type: Resource
  Method: Resource doReadProperties(PropertyNameList w)
  Method: void doWriteProperties()
  Method: Resource doReadContent(PropertyNameList w, OutputStream content)
  Method: void doWriteContent(InputStream content, String contentIdentifier)
  Method: void doDelete()
    Postconditions:
      (resource-deleted)
  Method: void doCopy(Resource destination, boolean overwrite) 
    Postconditions:
      (must-not-copy-property)
      (copy-creates-new-resource)
  Method: void doMove(String destinationLocation, Boolean overwrite)
    Postconditions:
      (preserve-properties)
      (workspace-member-moved)
========================================================================
Type: ControllableResource
  Method: void doCreateResource()
    Preconditions:
      (resource-must-be-null)
      (location-ok)
    Postconditions:
      (initialize-resource)
  Method: doWriteContent()
    Preconditions:
      (cannot-modify-controlled-content)
  Method: doDelete()
    Preconditions:
      (cannot-modify-checked-in-parent)
  Method: doMove()
    Preconditions:
      (cannot-modify-checked-in-parent)
      (cannot-modify-destination-checked-in-parent)
    Postconditions:
      (update-checked-out-reference)
  Method: void doControl()
    Preconditions:
      (cannot-modify-checked-in-parent)
    Postconditions:
      (initialize-checked-out)
      (put-under-version-control)
      (must-not-change-existing-checked-in-out)
      (new-version-history)
  Method: void doCreateControlledResource(Version v)
    Preconditions:
      (cannot-modify-checked-in-parent)
      (cannot-add-to-existing-history)
      (one-version-controlled-resource-per-history-per-workspace)
    Postconditions:
      (new-version-controlled-resource)
      (new-version-controlled-folder)
  Method: void doCheckout() 
    Preconditions:
      (must-be-checked-in)
      (must-not-be-stale)
    Postconditions:
      (is-checked-out)
  Method: void doCheckout(boolean forkOK, List activityList, boolean newActivity, boolean unreserved)
    Preconditions:
      (checkout-of-version-with-descendant-is-forbidden)
      (checkout-of-version-with-descendant-is-discouraged)
      (checkout-of-checked-out-version-is-forbidden)
      (checkout-of-checked-out-version-is-discouraged)
      (must-not-update-baseline-folder)
      (one-checkout-per-activity-per-history)
      (linear-activity)
    Postconditions:
      (has-checked-out-version)
      (initialize-predecessor-list)
      (initialize-activity-list)
      (initialize-unreserved)
  Method: void doCheckin()
    Preconditions:
      (must-be-checked-out)
      (must-not-be-stale)
    Postconditions:
      (update-server-content)
  Method: void doCheckin(boolean keepCheckedOut, boolean forkOK)
    Preconditions:
      (version-history-is-tree) The versions identified by the PredecessorList of the checked-out resource MUST be descendants of the root version of the version history for the CheckedOut version.
      (checkin-fork-forbidden)
      (checkin-fork-discouraged)
      (merge-must-be-complete)
      (linear-activity)
    Postconditions:
      (create-version)
      (initialize-version-content-and-properties)
      (checked-in)
      (keep-checked-out)
      (add-to-history)
      (initialize-activity-list)
      (initialize-version-controlled-bindings)
  Method: void doRefresh(Boolean IgnoreDirty)
    Preconditions:
      (must-not-be-dirty)
    Postconditions:
      (content-synchronized)
  Method: void doUncheckout()
    Preconditions:
      (must-be-checked-out-version-controlled-resource)
    Postconditions:
      (cancel-checked-out)
      (restore-content)
  Method: <ControllableResource>Iterator doUpdate(Version v, PropertyNameList wantedPropertyList)
    Preconditions:
      (version-in-version-history)
      (must-not-update-baseline-folder)
    Postconditions:
      (update-content-and-properties)
      (report-properties)
      (update-version-controlled-folder-members)
  Method: ControllableResource doMerge( Version source, boolean noAutoMerge, boolean noCheckout, boolean forkOK, boolean unreserved, <Activity>List activityList, boolean newActivity, PropertyNameList wantedPropertyList)
    Preconditions:
      (checkout-not-allowed)
      (**all-checkout-preconditions**)
      (must-not-update-baseline-folder)
    Postconditions:
      (ancestor-version)
      (descendant-version)
      (checked-out-for-merge)
      (update-merge-list)
      (report-properties)
      (update-version-controlled-folder-members)
  Method: MergePreviewReport doMergePreviewReport(Version source)
========================================================================
Type: Folder
  Method: <Resource>Iterator doReadMemberList(PropertyNameList wantedPropertyList, boolean deep)
    Postconditions:
      (read-bound-members)
      (read-all-members)
  Method: void doBaselineControl()
    Preconditions:
      (controlled-configuration-must-not-exist)
    Postconditions:
      (create-controlled-configuration)
      (reference-controlled-configuration)
      (create-new-baseline)
  Method: void doCreateBaselineControlledFolder(Baseline baseline)
    Preconditions:
      (cannot-add-to-existing-history)
      (one-baseline-controlled-folder-per-history-per-workspace)
    Postconditions:
      (create-controlled-configuration)
      (select-existing-baseline)
========================================================================
Type: Workspace
  Method: doCreateResource()
    Preconditions:
      (workspace-location-allowed)
      (workspace-server-location-specified)
  Method: doMove()
    Postconditions:
      (workspace-moved)
      (update-workspace-reference)
  Method: <ControllableResource>Iterator doMerge( <Resource>List sourceList, boolean noAutoMerge, boolean noCheckout, boolean checkinActivity, boolean forkOK, boolean unreserved, <Activity>List activityList, boolean newActivity, PropertyNameList wantedPropertyList)
    Preconditions:
      (cannot-merge-checked-out-resource)
    Postconditions:
      (merge-baseline)
      (merge-sub-baselines)
      (set-baseline-controlled-folder-members)
  Method: <MergePreviewReport>Iterator doMergePreviewReport(List sourceList)
  Method: <ControllableResource>Iterator doLocateByHistoryReport(List versionHistoryList, PropertyNameList wantedPropertyList)
========================================================================
Type: VersionHistory
  Method: doCopy()
    Preconditions:
      (cannot-copy-history)
  Method: doMove()
    Preconditions:
      (cannot-rename-history)
  Method: doDelete()
    Postconditions:
      (delete-version-set)
========================================================================
Type: Version
  Method: doWriteContent()
    Preconditions:
      (cannot-modify-version)
  Method: doCopy()
    Postconditions:
      (copy-creates-new-resource)
  Method: doMove()
    Preconditions:
      (cannot-rename-version)
  Method: doDelete()
    Preconditions:
      (no-version-delete)
    Postconditions:
      (update-predecessor-list)
      (version-history-has-root)
      (delete-version-reference)
  Method: void doAddLabel(String label)
    Preconditions:
      (add-must-be-new-label)
    Postconditions:
      (add-label)
  Method: void doSetLabel(String label)
    Postconditions:
      (set-label)
  Method: void doRemoveLabel(String label)
    Preconditions:
      (label-must-exist)
    Postconditions:
      (remove-label)
========================================================================
Type: Folder Version
  Method: doCopy()
    Preconditions:
      (cannot-copy-folder-version)
========================================================================
Type: Baseline
  Method: <CompareBaselineReport>Iterator doCompareBaselineReport(Baseline baseline)
    Preconditions:
      (baselines-from-same-history)
========================================================================
Type: Configuration
  Method: doCheckin()
    Preconditions:
      (no-checked-out-baseline-controlled-folder-members)
      (one-version-per-history-per-baseline)
    Postconditions:
      (create-baseline-folder)
  Method: doUpdate()
    Preconditions:
      (baseline-controlled-members-must-be-checked-in)
    Postconditions:
      (set-baseline-controlled-folder-members)
      (update-sub-baselines)
========================================================================
Type: Activity
  Method: doCreateResource()
    Preconditions:
      (activity-location-allowed)
  Method: doMove()
    Postconditions:
      (update-activity-reference)
  Method: doDelete()
    Postconditions:
      (delete-activity-reference)
  Method: doCheckin()
    Preconditions:
      (atomic-activity-checkin)
    Postconditions:
      (activity-checkin)



