code: public Iterable<ObjectType> getEachReferenceTypeWithProperty(
        String propertyName) {
      if (eachRefTypeIndexedByProperty.containsKey(propertyName)) {
        return eachRefTypeIndexedByProperty.get(propertyName).values();
      } else {
        return ImmutableList.of();
      }
    }
docs: Returns each reference type that has a property {@code propertyName}
  defined on it.
  
  Unlike most types in our type system, the collection of types returned
  will not be collapsed. This means that if a type is defined on
  {@code Object} and on {@code Array}, this method must return
  {@code [Object, Array]}. It would not be correct to collapse them to
  {@code [Object]}.