'Return a field instance corresponding to parameters ``field_data``.'

@api.model
def _instanciate(self, field_data, partial):

    attrs = {'manual': True, 'string': field_data['field_description'], 'help': field_data['help'], 'index': bool(field_data['index']), 'copy': bool(field_data['copy']), 'related': field_data['related'], 'required': bool(field_data['required']), 'readonly': bool(field_data['readonly']), 'store': bool(field_data['store'])}
    if (field_data['ttype'] in ('char', 'text', 'html')):
        attrs['translate'] = bool(field_data['translate'])
        attrs['size'] = (field_data['size'] or None)
    elif (field_data['ttype'] in ('selection', 'reference')):
        attrs['selection'] = safe_eval(field_data['selection'])
    elif (field_data['ttype'] == 'many2one'):
        if (partial and (field_data['relation'] not in self.env)):
            return
        attrs['comodel_name'] = field_data['relation']
        attrs['ondelete'] = field_data['on_delete']
        attrs['domain'] = safe_eval((field_data['domain'] or '[]'))
    elif (field_data['ttype'] == 'one2many'):
        if (partial and (not ((field_data['relation'] in self.env) and ((field_data['relation_field'] in self.env[field_data['relation']]._fields) or (field_data['relation_field'] in self.pool.get_manual_fields(self._cr, field_data['relation'])))))):
            return
        attrs['comodel_name'] = field_data['relation']
        attrs['inverse_name'] = field_data['relation_field']
        attrs['domain'] = safe_eval((field_data['domain'] or '[]'))
    elif (field_data['ttype'] == 'many2many'):
        if (partial and (field_data['relation'] not in self.env)):
            return
        attrs['comodel_name'] = field_data['relation']
        (rel, col1, col2) = self._custom_many2many_names(field_data['model'], field_data['relation'])
        attrs['relation'] = (field_data['relation_table'] or rel)
        attrs['column1'] = (field_data['column1'] or col1)
        attrs['column2'] = (field_data['column2'] or col2)
        attrs['domain'] = safe_eval((field_data['domain'] or '[]'))
    if field_data['compute']:
        attrs['compute'] = make_compute(field_data['compute'], field_data['depends'])
    return fields.Field.by_type[field_data['ttype']](**attrs)
