@@ -0,0 +1,1718 @@
+/*%0A * Licensed to the Apache Software Foundation (ASF) under one or more%0A * contributor license agreements.  See the NOTICE file distributed with%0A * this work for additional information regarding copyright ownership.%0A * The ASF licenses this file to You under the Apache License, Version 2.0%0A * (the %22License%22); you may not use this file except in compliance with%0A * the License.  You may obtain a copy of the License at%0A *%0A *     http://www.apache.org/licenses/LICENSE-2.0%0A *%0A *  Unless required by applicable law or agreed to in writing, software%0A *  distributed under the License is distributed on an %22AS IS%22 BASIS,%0A *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.%0A *  See the License for the specific language governing permissions and%0A *  limitations under the License.%0A */%0Apackage org.tomitribe.crest.api;%0A%0Aimport java.util.ArrayList;%0Aimport java.util.Arrays;%0Aimport java.util.Iterator;%0Aimport java.util.List;%0A%0A/**%0A * Interface whose only purpose is to be used in conjunction%0A * with the java.util.ServiceLoader API as one potential%0A * way to load the list of classes that have commands.%0A *%0A * This interface intentionally has zero methods and never will%0A * so that the simplest implementation is a plain java.util.ArrayList%0A * (or pick your favorite collection)%0A *%0A * This interface is intentionally not used in any method or constructor of crest.%0A */%0Apublic interface Loader extends Iterable%3CClass%3C?%3E%3E %7B%0A%0A    static Iterator%3CClass%3C?%3E%3E of(final Class%3C?%3E commandClass, final Class%3C?%3E... commandClasses) %7B%0A        final List%3CClass%3C?%3E%3E list = new ArrayList%3C%3E();%0A        list.add(commandClass);%0A        list.addAll(Arrays.asList(commandClasses));%0A        return list.iterator();%0A    %7D%0A%7D%0A

Add Loader to the API as it is user-facing It should not be modified or moved