code: static boolean analyzePredicate(Compiler compiler, int opPos, int stepType)
            throws javax.xml.transform.TransformerException
    {
  
      int argLen;
  
      switch (stepType)
      {
      case OpCodes.OP_VARIABLE :
      case OpCodes.OP_EXTFUNCTION :
      case OpCodes.OP_FUNCTION :
      case OpCodes.OP_GROUP :
        argLen = compiler.getArgLength(opPos);
        break;
      default :
        argLen = compiler.getArgLengthOfStep(opPos);
      }
  
      int pos = compiler.getFirstPredicateOpPos(opPos);
      int nPredicates = compiler.countPredicates(pos);
  
      return (nPredicates > 0) ? true : false;
    }
docs: Analyze a step and give information about it's predicates.  Right now this
  just returns true or false if the step has a predicate.
  
  @param compiler non-null reference to compiler object that has processed
  the XPath operations into an opcode map.
  @param opPos The opcode position for the step.
  @param stepType The type of step, one of OP_GROUP, etc.
  
  @return true if step has a predicate.
  
  @throws javax.xml.transform.TransformerException