code: public boolean processWorkspaceBeforeDeletion(@Nonnull Job<?,?> project, @Nonnull FilePath workspace, @Nonnull Node node) throws IOException, InterruptedException {
          if (project instanceof AbstractProject) {
              return processWorkspaceBeforeDeletion((AbstractProject) project, workspace, node);
          } else {
              return true;
          }
      }
docs: Called before a workspace is deleted on the given node, to provide SCM an opportunity to perform clean up.
  
  <p>
  Hudson periodically scans through all the agents and removes old workspaces that are deemed unnecessary.
  This behavior is implemented in {@link WorkspaceCleanupThread}, and it is necessary to control the
  disk consumption on agents. If we don't do this, in a long run, all the agents will have workspaces
  for all the projects, which will be prohibitive in big Hudson.
  
  <p>
  However, some SCM implementations require that the server be made aware of deletion of the local workspace,
  and this method provides an opportunity for SCMs to perform such a clean-up act.
  
  <p>
  This call back is invoked after Hudson determines that a workspace is unnecessary, but before the actual
  recursive directory deletion happens.
  
  <p>
  Note that this method does not guarantee that such a clean up will happen. For example, agents can be
  taken offline by being physically removed from the network, and in such a case there's no opportunity
  to perform this clean up.
  
  <p>
  This method is also invoked when the project is deleted.
  
  @param project
  The project that owns this {@link SCM}. This is always the same object for a particular instance
  of {@link SCM}. Just passed in here so that {@link SCM} itself doesn't have to remember the value.
  @param workspace
  The workspace which is about to be deleted. This can be a remote file path.
  @param node
  The node that hosts the workspace. SCM can use this information to determine the course of action.
  
  @return
  true if {@link SCM} is OK to let Hudson proceed with deleting the workspace.
  False to veto the workspace deletion.
  
  @since 1.568