core/src/main/java/com/google/errorprone/bugpatterns/threadsafety/ImmutableChecker.java
private static Optional<ClassSymbol> effectiveTypeOfThis(
      MethodSymbol symbol, TreePath currentPath, VisitorState state) {
    return stream(currentPath.iterator())
        .filter(ClassTree.class::isInstance)
        .map(t -> ASTHelpers.getSymbol((ClassTree) t))
        .filter(c -> isSubtype(c.type, symbol.owner.type, state))
        .findFirst();
  }
/**
   * Gets the effective type of `this`, had the bare invocation of {@code symbol} been qualified
   * with it.
   */
Gets the effective type of `this`, had the bare invocation of  symbol been qualified
with it.
Gets the effective type of ` this ` had the bare invocation of symbol been qualified with it .
private static Optional<ClassSymbol> effectiveTypeOfThis(
      MethodSymbol symbol, TreePath currentPath, VisitorState state) {
    return stream(currentPath.iterator())
        .filter(ClassTree.class::isInstance)
        .map(t -> ASTHelpers.getSymbol((ClassTree) t))
        .filter(c -> isSubtype(c.type, symbol.owner.type, state))
        .findFirst();
  }
private static Optional < ClassSymbol > effectiveTypeOfThis ( MethodSymbol symbol , TreePath currentPath , VisitorState state ) { return stream ( currentPath . iterator ( ) ) . filter ( ClassTree . class :: isInstance ) . map ( t -> ASTHelpers . getSymbol ( ( ClassTree ) t ) ) . filter ( c -> isSubtype ( c . type , symbol . owner . type , state ) ) . findFirst ( ) ; }
Gets the effective type of `this`, had the bare invocation of {@code symbol} been qualified
 with it.
Gets the effective type of ` this ` had the bare invocation of { @code symbol } been qualified with it .