@Override
    @PublicAPI(usage = ACCESS)
    public Set<JavaClass> getAllInvolvedRawTypes() {
        return Stream.of(
                Stream.of(this.returnType.get()),
                this.parameters.getParameterTypes().stream(),
                this.typeParameters.stream()
        ).flatMap(s -> s).map(JavaType::getAllInvolvedRawTypes).flatMap(Set::stream).collect(toSet());
    }
@Test
    public void offers_all_involved_raw_types() {
        class SampleClass<T extends Collection<? super File> & Serializable> {
            @SuppressWarnings("unused")
            T method(List<Map<? extends Number, Set<? super String[][]>>> input) {
                return null;
            }
        }

        JavaMethod method = new ClassFileImporter().importClass(SampleClass.class).getMethod("method", List.class);

        assertThatTypes(method.getAllInvolvedRawTypes())
                .matchInAnyOrder(Collection.class, File.class, Serializable.class, List.class, Map.class, Number.class, Set.class, String.class);
    }