JUtils { public static boolean isIntersectionType(Type type) { return !type.isUnknown() && ((JType) type).typeBinding.isIntersectionType(); } private  JUtils(); static boolean isPrimitiveWrapper(Type type); @Nullable static Type primitiveWrapperType(Type type); @Nullable static Type primitiveType(Type type); static boolean isNullType(Type type); static boolean isIntersectionType(Type type); static boolean isTypeVar(Type type); static boolean isAnnotation(Symbol.TypeSymbol typeSymbol); static boolean isEffectivelyFinal(Symbol.VariableSymbol variableSymbol); static boolean isParameter(Symbol symbol); static Optional<Object> constantValue(Symbol.VariableSymbol symbol); static Set<Type> superTypes(Symbol.TypeSymbol typeSymbol); static Symbol.TypeSymbol outermostClass(Symbol.TypeSymbol typeSymbol); static Symbol getPackage(Symbol symbol); static boolean isVarArgsMethod(Symbol.MethodSymbol method); static boolean isSynchronizedMethod(Symbol.MethodSymbol method); static boolean isNativeMethod(Symbol.MethodSymbol method); static boolean isDefaultMethod(Symbol.MethodSymbol method); @Nullable static Object defaultValue(Symbol.MethodSymbol method); static boolean isOverridable(Symbol.MethodSymbol method); static boolean isParametrizedMethod(Symbol.MethodSymbol method); static boolean isRawType(Type type); static Type declaringType(Type type); static Set<Type> directSuperTypes(Type type); @Nullable static Symbol enclosingClass(Tree t); @Nullable static Symbol importTreeSymbol(ImportTree tree); static Symbol typeParameterTreeSymbol(TypeParameterTree tree); static SymbolMetadata parameterAnnotations(Symbol.MethodSymbol method, int param);  }
@Test void isIntersectionType() { JavaTree.CompilationUnitTreeImpl cu = test( "class C { java.io.Serializable f = (java.util.Comparator<Object> & java.io.Serializable) (o1, o2) -> o1.toString().compareTo(o2.toString()); }"); ClassTreeImpl c = (ClassTreeImpl) cu.types().get(0); VariableTreeImpl f = (VariableTreeImpl) c.members().get(0); TypeCastExpressionTreeImpl e = (TypeCastExpressionTreeImpl) f.initializer(); assertThat(JUtils.isIntersectionType(cu.sema.type(e.typeBinding))) .isEqualTo(JUtils.isIntersectionType(e.symbolType())) .isTrue(); }