def _assert_take_fillable(self, values, indices, allow_fill=True,<EOL>fill_value=None, na_value=None):
<EOL>if allow_fill and fill_value is not None:<EOL><INDENT>if (indices < -<NUM_LIT:1>).any():<EOL><INDENT>msg = ('<STR_LIT>'<EOL>'<STR_LIT>')<EOL>raise ValueError(msg)<EOL><DEDENT>taken = [lab.take(indices) for lab in self.codes]<EOL>mask = indices == -<NUM_LIT:1><EOL>if mask.any():<EOL><INDENT>masked = []<EOL>for new_label in taken:<EOL><INDENT>label_values = new_label.values()<EOL>label_values[mask] = na_value<EOL>masked.append(np.asarray(label_values))<EOL><DEDENT>taken = masked<EOL><DEDENT><DEDENT>else:<EOL><INDENT>taken = [lab.take(indices) for lab in self.codes]<EOL><DEDENT>return taken<EOL>
Internal method to handle NA filling of take