protected ATermAppl makeAppl(String fun, ATermList args, boolean iq, ATermList annos)
public ATermAppl makeAppl(String fun)
  protected ATermAppl makeAppl(String fun, ATermList args, boolean iq, ATermList annos)  {    int hnr = ATermAppl.hashFunction(fun, args, iq, annos);    int idx = Math.abs(hnr) % table_size;    HashedWeakRef prev = null, cur;    ATermAppl appl;    if(args.getWorld() != this)      args = deepCopy(args);    if(annos.getWorld() != this)      annos = deepCopy(annos);        synchronized (table) {      // Lookup application in the world-global hashtable      cur = table[idx];      while(cur != null) {				ATerm term = (ATerm)cur.get();				if(term == null) {					// Found a ghost reference, remove it to speed up lookups.					if(prev == null)						table[idx] = cur.next;					else						prev.next = cur.next;				} else {					if(term.getType() == ATerm.APPL) {						appl = (ATermAppl)term;						if(appl.getName().equals(fun) && appl.getArguments().equals(args) &&							 appl.isQuoted() == iq) {							ATermList annos2 = appl.getAnnotations();							if(annos2 == annos)								return appl;						}					}				}				cur = cur.next;      }      // Application not found, create a new one      appl = new ATermAppl(this, fun, args, annos, iq);      cur = new HashedWeakRef(appl, table[idx]);      table[idx] = cur;    }    return appl;  }