if (!member_name.IsNull()) { \
auto const rep = RepresentationUtils::RepresentationOfArrayElement(cid); \
const bool is_float_access = \
rep == kUnboxedFloat || rep == kUnboxedDouble; \
if (receiver_type->IsAssignableTo(member_name)) { \
if (is_length_getter) { \
type_class = member_name.type_class(); \
ReplaceWithLengthGetter(call); \
} else if (is_index_get) { \
if (is_float_access && !FlowGraphCompiler::SupportsUnboxedDoubles()) { \
return; \
} \
if (!index_type->IsNullableInt()) return; \
type_class = member_name.type_class(); \
ReplaceWithIndexGet(call, cid); \
} else { \
if (is_float_access && !FlowGraphCompiler::SupportsUnboxedDoubles()) { \
return; \
} \
if (!index_type->IsNullableInt()) return; \
if (!value_type->IsAssignableTo(
type)) return; \
type_class = member_name.type_class(); \
ReplaceWithIndexSet(call, cid); \
} \
return; \
} \
}