public class TestCompletion { public static ParallelPipeline test(T base, V newStage, T upstream, final ParallelPipeline anObject) { if (base != null){ return anObject; } else { return new ParallelPipeline<>(upstream, newStage); } } void f() { test(null, null, null, new ParallelPipeline<>(null, null)); } private static class ParallelPipeline { public ParallelPipeline(T p0, V p1) { } } }