private synchronized void checkSelf(Set<TextSource> already) {
    //System.out.println(" self check "+this);
    if (already!=null) {
      if (already.contains(this)){
        //System.out.println(" self check "+this+" DO NOT NEED TO ALREADY CONTAINS ");
        return;
      }
      already.add(this);
    }
    try {  
      String newText=textLoader.check();
      if (newText!=null){
        reset();
        myLastModified=System.currentTimeMillis();
        setLastModified(myLastModified);
        this.text=newText;
        long len=this.text.length(),
             hash=this.text.hashCode();
        this.etag=((long)this.text.length())+((long)this.text.hashCode());
      }
      else
      if (text==null)
        throw new InternalException("No text found for path: "+path+" from TextLoader "+textLoader.getClass());
    } catch (TmplzException e) {
      failed=e;
      throw e;
    }
  }