}  if (l == PureFactory.empty) { return false;
  protected boolean match(ATerm pattern, List list)  {     if (pattern.getType() == LIST) {      ATermList l = (ATermList)pattern;      if (this == PureFactory.empty) {	      if (l == PureFactory.empty) {          return true;        }        else if (isListPlaceHolder(l.getFirst())) {          list.add(this);          return true;        }        else {          return false;        }      }      List submatches = first.match(l.getFirst());      if (submatches == null) {	      return false;      }      list.addAll(submatches);      submatches = next.match(l.getNext());      if (submatches == null) {	      return false;      }      list.addAll(submatches);      return true;    }    return super.match(pattern, list);  }