@Test public void projection_indirect() { ModelLoader loader = generate(new String[] { "projective a = { key : INT; };", "b = a;", "c = b;", }); Class<?> a = loader.modelType("A"); Class<?> b = loader.modelType("B"); Class<?> c = loader.modelType("C"); assertThat(b.getInterfaces(), includes(a)); assertThat(c.getInterfaces(), includes(a)); assertThat(a.isAssignableFrom(c), is(true)); assertThat(b.isAssignableFrom(c), is(false)); }
@Override public List<Type> getInterfaces(EmitContext context, ModelDeclaration model) { return collect(context, model).stream() .map(context::resolve) .collect(Collectors.toList()); }
ProjectionDriver extends JavaDataModelDriver { @Override public List<Type> getInterfaces(EmitContext context, ModelDeclaration model) { return collect(context, model).stream() .map(context::resolve) .collect(Collectors.toList()); } }
ProjectionDriver extends JavaDataModelDriver { @Override public List<Type> getInterfaces(EmitContext context, ModelDeclaration model) { return collect(context, model).stream() .map(context::resolve) .collect(Collectors.toList()); }  }
ProjectionDriver extends JavaDataModelDriver { @Override public List<Type> getInterfaces(EmitContext context, ModelDeclaration model) { return collect(context, model).stream() .map(context::resolve) .collect(Collectors.toList()); }  @Override List<Type> getInterfaces(EmitContext context, ModelDeclaration model); }
ProjectionDriver extends JavaDataModelDriver { @Override public List<Type> getInterfaces(EmitContext context, ModelDeclaration model) { return collect(context, model).stream() .map(context::resolve) .collect(Collectors.toList()); }  @Override List<Type> getInterfaces(EmitContext context, ModelDeclaration model);  }