final public boolean matches(String str)
 {
  int pos;
  pos=0;
  if(ignoreCase) str=str.toLowerCase();
  if(exact) return str.equals(prefix);

  if(prefix!=null)
   if(!str.startsWith(prefix)) return false;
       else
     pos=prefixlen;
  if(elements!=null)
   {
    int j=elements.length;
    for(int i=0;i<j;i++)
     {
     if( (pos=str.indexOf(elements[i],pos))==-1 ) return false;
     pos+=elements[i].length();
     }
   }
  if(suffix==null) return true;
  if(str.length()-pos<suffixlen) return false;

  return str.endsWith(suffix);
 }