+ this.instantiationVectors = switch (instantiationVectors.size()) {
+ case 0 -> null;
+ case 1 -> Objects.requireNonNull(instantiationVectors.get(0));
+ default -> instantiationVectors.stream().map(Objects::requireNonNull).toArray(CompositeRuntimeType[]::new);
+ };
+ }
+
+ @Override
+ public List<CompositeRuntimeType> directUsers() {
+ final var local = instantiationVectors;
+ if (local == null) {
+ return List.of();
+ } else if (local instanceof CompositeRuntimeType[] array) {
+ return Collections.unmodifiableList(Arrays.asList(array));
+ } else {
+ return List.of((CompositeRuntimeType) local);
+ }