code: public F followLinks(LinkTracker<N, F> linkTracker) throws IOException {
          if (_backingFile == null) {
              F backingFile = (F) this;
              NfsGetAttributes attributes = safeGetAttributes(backingFile);
              while (NfsType.NFS_LNK == attributes.getType()) {
                  if (linkTracker == null) {
                      linkTracker = new LinkTracker<N, F>();
                  }
                  F newBackingFile = (F) linkTracker.addLink(backingFile.getPath());
                  if (newBackingFile != null) {
                      backingFile = newBackingFile;
                  } else {
                      backingFile = followLink(backingFile.readlink().getData(), linkTracker);
                  }
                  attributes = safeGetAttributes(backingFile);
              }
              _backingFile = backingFile;
              if (linkTracker != null) {
                  linkTracker.addResolvedPath(getPath(), _backingFile);
              }
          }
  
          return _backingFile;
      }
docs: /*
  (non-Javadoc)
  
  @see
  com.emc.ecs.nfsclient.nfs.io.NfsFile#followLinks(com.emc.ecs.nfsclient.
  nfs.io.LinkTracker)