ConfigBuilder { public static Implementations implementations(Class<?>... impls) { return new Implementations(impls); } private  ConfigBuilder(); static ViewConfig configureView(String name, ViewColumn... columns); static ViewConfig configureView(String name, FunctionModelConfig defaultConfig, ViewColumn... columns); static ViewConfig configureView(String name, NonPortfolioOutput... nonPortfolioOutputs); static ViewConfig configureView(String name, Columns columns, OtherOutputs otherOutputs); static ViewConfig configureView(String name,
                                         FunctionModelConfig defaultConfig,
                                         Columns columns,
                                         OtherOutputs otherOutputs); static Columns columns(ViewColumn... columns); static OtherOutputs nonPortfolioOutputs(NonPortfolioOutput... nonPortfolioOutputs); static ViewColumn column(String name); static ViewColumn column(String name, String outputName); static ViewColumn column(String name, FunctionModelConfig config); static ViewColumn column(String name, TargetOutput... outputs); static ViewColumn column(String name, String outputName, TargetOutput... outputs); static ViewColumn column(String name, String outputName, FunctionModelConfig config); static ViewColumn column(String name, FunctionModelConfig config, TargetOutput... targetOutputs); static ViewColumn column(String name, String outputName, FunctionModelConfig config, TargetOutput... targetOutputs); static TargetOutput output(String outputName, Class<?> inputType); static TargetOutput output(String outputName, Class<?> inputType, FunctionModelConfig config); static ViewOutput output(String outputName, FunctionModelConfig config); static ViewOutput output(String outputName); static NonPortfolioOutput nonPortfolioOutput(String name, ViewOutput output); static TargetOutput output(Class<?> inputType, FunctionModelConfig config); static TargetOutput output(Class<?> inputType); static FunctionModelConfig config(Implementations implementations, Arguments arguments); static FunctionModelConfig config(); static FunctionModelConfig config(Implementations implementations); static FunctionModelConfig config(Arguments arguments); static FunctionModelConfig config(Arguments arguments, Implementations implementations); static Implementations implementations(Class<?>... impls); static FnArgs function(Class<?> functionType, Arg... args); static Arguments arguments(FnArgs... args); static Arg argument(String name, Object value);  }
@Test(expectedExceptions = IllegalArgumentException.class) public void testImplementationsInherit() throws Exception { ConfigBuilder.implementations(TestFunctionInterface.class, TestFunction.class); }
@Test(expectedExceptions = IllegalArgumentException.class) public void testImplementationsInPairs() throws Exception { ConfigBuilder.implementations(TestFunction.class); }