private void ImportEvent()

in src/Refasmer/Importer/ImportLogic.cs [273:324]


    private void ImportEvent( EventDefinitionHandle srcHandle )
    {
        var src = _reader.GetEventDefinition(srcHandle);

        var accessors = src.GetAccessors();

        var adder = Import(accessors.Adder);
        var remover = Import(accessors.Remover);
        var raiser = Import(accessors.Raiser);

        var others = accessors.Others
            .Select(a => Tuple.Create(a, Import(a)))
            .Where(a => !a.Item2.IsNil)
            .ToList();

        if (adder.IsNil && remover.IsNil && raiser.IsNil && !others.Any())
        {
            Trace?.Invoke($"Not imported event {_reader.ToString(src)}");
            return;
        }

        var dstHandle = _builder.AddEvent(src.Attributes, ImportValue(src.Name), Import(src.Type));
        _eventDefinitionCache.Add(srcHandle, dstHandle);
        Trace?.Invoke($"Imported event {_reader.ToString(src)} -> {RowId(dstHandle)}");

        using var _ = WithLogPrefix($"[{_reader.ToString(src)}]");

        if (!adder.IsNil)
        {
            _builder.AddMethodSemantics(dstHandle, MethodSemanticsAttributes.Adder, adder);
            Trace?.Invoke($"Imported adder {_reader.ToString(accessors.Adder)} -> {RowId(adder)}");
        }

        if (!remover.IsNil)
        {
            _builder.AddMethodSemantics(dstHandle, MethodSemanticsAttributes.Remover, remover);
            Trace?.Invoke($"Imported remover {_reader.ToString(accessors.Remover)} -> {RowId(remover)}");
        }

        if (!raiser.IsNil)
        {
            _builder.AddMethodSemantics(dstHandle, MethodSemanticsAttributes.Raiser, raiser);
            Trace?.Invoke($"Imported raiser {_reader.ToString(accessors.Raiser)} -> {RowId(raiser)}");
        }

        foreach (var (srcAccessor, dstAccessor) in others)
        {
            _builder.AddMethodSemantics(dstHandle, MethodSemanticsAttributes.Other, dstAccessor);
            Trace?.Invoke($"Imported other {_reader.ToString(srcAccessor)} -> {RowId(dstAccessor)}");
        }

    }