docs: public Snapshot resolve() throws ResolvedFailedException {
          Jenkins h = Jenkins.getInstance();
          AbstractProject<?,?> job = h.getItemByFullName(jobName, AbstractProject.class);
          if(job==null) {
              if(h.getItemByFullName(jobName)==null) {
                  AbstractProject nearest = AbstractProject.findNearest(jobName);
                  throw new ResolvedFailedException(Messages.WorkspaceSnapshotSCM_NoSuchJob(jobName,nearest.getFullName()));
              } else
                  throw new ResolvedFailedException(Messages.WorkspaceSnapshotSCM_IncorrectJobType(jobName));
          }
  
          PermalinkList permalinks = job.getPermalinks();
          Permalink p = permalinks.get(permalink);
          if(p==null)
              throw new ResolvedFailedException(Messages.WorkspaceSnapshotSCM_NoSuchPermalink(permalink,jobName));
  
          AbstractBuild<?,?> b = (AbstractBuild<?,?>)p.resolve(job);
          if(b==null)
              throw new ResolvedFailedException(Messages.WorkspaceSnapshotSCM_NoBuild(permalink,jobName));
  
          WorkspaceSnapshot snapshot = b.getAction(WorkspaceSnapshot.class);
          if(snapshot==null)
              throw new ResolvedFailedException(Messages.WorkspaceSnapshotSCM_NoWorkspace(jobName,permalink));
  
          return new Snapshot(snapshot,b);
      }