code: public static final AbsComparator getComparator(final INodeReadTrx paramRtx,
          final AbsAxis paramOperandOne, final AbsAxis paramOperandTwo, final CompKind paramKind,
          final String paramVal) {
          if ("eq".equals(paramVal) || "lt".equals(paramVal) || "le".equals(paramVal) || "gt".equals(paramVal)
              || "ge".equals(paramVal)) {
              return new ValueComp(paramRtx, paramOperandOne, paramOperandTwo, paramKind);
          } else if ("=".equals(paramVal) || "!=".equals(paramVal) || "<".equals(paramVal)
              || "<=".equals(paramVal) || ">".equals(paramVal) || ">=".equals(paramVal)) {
              return new GeneralComp(paramRtx, paramOperandOne, paramOperandTwo, paramKind);
          } else if ("is".equals(paramVal) || "<<".equals(paramVal) || ">>".equals(paramVal)) {
              return new NodeComp(paramRtx, paramOperandOne, paramOperandTwo, paramKind);
          }
          throw new IllegalStateException(paramVal + " is not a valid comparison.");
      }
docs: Factory method to implement the comparator.
  
  @param paramRtx
  rtx for accessing data
  @param paramOperandOne
  operand one to be compared
  @param paramOperandTwo
  operand two to be compared
  @param paramKind
  kind of comparison
  @param paramVal
  string value to estimate
  @return AbsComparator the comparator of two axis