code: private boolean feasible(int bidx, IQueryAtom qatom, IAtom atom) {
          int aidx = atom.getIndex();
          if (avisit[aidx] || !qatom.matches(atom))
              return false;
          ++numMapped;
          amap[qatom.getIndex()] = aidx;
          avisit[aidx] = true;
          store(bidx, qatom);
          return true;
      }
docs: Determine if a atom from the molecule is unvisited and if it is matched
  by the query atom. If the match is feasible the provided query bond index
  stored on the stack.
  
  @param qatom atom from the query
  @param atom atom from the molecule
  @return the match was feasible and the state was stored