src/com/google/javascript/rhino/jstype/UnionType.java
/**
   * This predicate is used to test whether a given type can appear in an
   * {@code Object} context, such as the expression in a {@code with}
   * statement.<p>
   *
   * Most types we will encounter, except notably {@code null}, have at least
   * the potential for converting to {@code Object}.  Host defined objects can
   * get peculiar.<p>
   *
   * VOID type is included here because while it is not part of the JavaScript
   * language, functions returning 'void' type can't be used as operands of
   * any operator or statement.<p>
   *
   * @return {@code true} if the type is not {@link NullType} or
   *         {@link VoidType}
   */
This predicate is used to test whether a given type can appear in an
Object context, such as the expression in a  with
statement.

Most types we will encounter, except notably  null, have at least
the potential for converting to  Object.  Host defined objects can
get peculiar.

VOID type is included here because while it is not part of the JavaScript
language, functions returning 'void' type can't be used as operands of
any operator or statement.

@return  true if the type is not  NullType or
VoidType
This predicate is used to test whether a given type can appear in an Object context such as the expression in a with statement . Most types we will encounter except notably null have at least the potential for converting to Object . Host defined objects can get peculiar . VOID type is included here because while it is not part of the JavaScript language functions returning ' void ' type can ' t be used as operands of any operator or statement . @return true if the type is not NullType or VoidType
@Override
  public boolean matchesObjectContext() {
    return anyMatch(JSType::matchesObjectContext, alternatesRetainingStructuralSubtypes);
  }
@ Override public boolean matchesObjectContext ( ) { return anyMatch ( JSType :: matchesObjectContext , alternatesRetainingStructuralSubtypes ) ; }
This predicate is used to test whether a given type can appear in an
 {@code Object} context, such as the expression in a {@code with}
 statement.<p>
This predicate is used to test whether a given type can appear in an { @code Object } context such as the expression in a { @code with } statement . <p >
// TODO(user): Reverse this logic to make it correct instead of generous.