public Collection<State> get(Object object) {
        Collection<State> result = innerMap.get(object);

        // . in negate mode is just a noram char
        if (!hasNegate || EPSILON == object || ANY_CHARACTOR == object) {
            return result;
        }

        // for negate case, e.g. [^abc]
        Set<State> negateStates = negateMap.keySet();
        for (State state : negateStates) {

            if (result.contains(state)) {
                continue;
            }

            Collection<Object> negateObjects = negateMap.get(state);
            if (!negateObjects.contains(object)) {
                result.add(state);
            }
        }

        return result;

    }