def METHOD_NAME(cls, index_name='', disable_persistent_identifier=False, **kwargs):
    instance = cls()
    updated_kwargs = copy.deepcopy(kwargs)
    if not kwargs.pop('id', None):
        updated_kwargs['id'] = uuid.uuid4()
    json_ = copy.deepcopy(cls.JSON_SKELETON)
    json_.update(kwargs.pop('json', {}))
    if kwargs.get('pid_type', 'lit') == 'lit' and 'titles' not in json_:
        json_.update({
            'titles': [
                {
                    'title': generate_random_string(60)
                }
            ]
        })
    if 'control_number' not in json_:
        json_['control_number'] = get_next_free_recid()
    else:
        reserve_recid(json_['control_number'])
    updated_kwargs['json'] = json_
    instance.record_metadata = super(TestRecordMetadata, cls)\
            .METHOD_NAME(updated_kwargs)
    if index_name:
        instance.es_index_result = es.index(
            index=index_name,
            body=instance.record_metadata.json,
            params={}
        )
        instance.es_refresh_result = es.indices.refresh(index_name)
    if not disable_persistent_identifier:
        instance.persistent_identifier = TestPersistentIdentifier\
                .METHOD_NAME(
                    object_uuid=instance.record_metadata.id,
                    pid_value=instance.record_metadata.json.get('control_number'),
                    **kwargs).persistent_identifier
    instance.inspire_record = InspireRecord(instance.record_metadata.json,
                                            model=RecordMetadata)
    return instance