@Value.Lazy public List<TypeElement> includedTypes() { Optional<IncludeMirror> includes = include(); ImmutableList<TypeMirror> typeMirrors = includes.isPresent() ? ImmutableList.copyOf(includes.get().valueMirror()) : ImmutableList.<TypeMirror>of(); FluentIterable<TypeElement> typeElements = FluentIterable.from(typeMirrors) .filter(DeclaredType.class) .transform(DeclatedTypeToElement.FUNCTION); ImmutableSet<String> uniqueTypeNames = typeElements.filter(IsPublic.PREDICATE).transform(ElementToName.FUNCTION).toSet(); if (uniqueTypeNames.size() != typeMirrors.size()) { report() .annotationNamed(IncludeMirror.simpleName()) .warning( "Some types were ignored, non-supported for inclusion: duplicates, non declared reference types, non-public"); } return typeElements.toList(); }
public ResponseHandler getResponseHandler() { FluentIterable<ResponseHandler> handlers = from(getFields(this.getClass())) .filter(isValidField(this)) .transform(fieldToResponseHandler(this)); return getResponseHandler(handlers.toList()); }