code: @Override
      public boolean matches(IAtom atom) {
          boolean val = false;
          boolean matchesLeft = left.matches(atom);
          if (right != null) {
              if ("and".equals(operator) && matchesLeft) {
                  boolean matchesRight = right.matches(atom);
                  val = matchesLeft && matchesRight;
              } else if ("or".equals(operator)) {
                  boolean matchesRight = right.matches(atom);
                  val = matchesLeft || matchesRight;
              }
          } else {
              if ("not".equals(operator)) {
                  val = (!matchesLeft);
              } else {
                  val = matchesLeft;
              }
          }
          return val;
      }
docs: /*
  (non-Javadoc)
  @see
  org.openscience.cdk.isomorphism.matchers.smarts.SMARTSAtom#matches(org
  .openscience.cdk.interfaces.IAtom)