public boolean containsKey(String key) {
        if(isKeyNotValid(key))
            throw new IllegalArgumentException();

        boolean value = false;

        if(this.key.equals(key))
            value = true;

        if(!value && jsonNode != null && jsonNode.key.equals(key))
            value = true;

        if(!value && jsonNode instanceof JsonObject)
            value = ((JsonObject) jsonNode).containsKey(key);

        if(!value && tail != null)
            value =  tail.containsKey(key);

        return value;
    }