class ImmutableJsonPointer implements JsonPointer {

    public static ImmutableJsonPointer of(final JsonKey rootLevel, final JsonKey... subLevels) {
        checkRootLevel(rootLevel);
        requireNonNull(subLevels, "The sub levels must not be null!"
                + " If the JSON pointer does not require sub levels, just omit this argument.");

        final ImmutableJsonPointer result;

        final List<JsonKey> keyHierarchy = new ArrayList<>(1 + subLevels.length);
        keyHierarchy.add(rootLevel);
        Collections.addAll(keyHierarchy, subLevels);

        result = newInstance(keyHierarchy);

        return result;
    }

    private  ImmutableJsonPointer(final List<JsonKey> theJsonKeys);

}