public IEnumerable <SyntaxNode> GetComponent(TranslationContext context, ExpressionSyntax entity,
                                              Type componentType)
 {
     context.RecordComponentAccess(
         context.IterationContext,
         componentType.GenerateTypeHandle(context.IterationContext.Stencil),
         RoslynEcsTranslator.AccessMode.Read);
     yield return(IdentifierName(context.IterationContext.GetComponentDataName(componentType)));
 }
        public IEnumerable <SyntaxNode> GetComponent(TranslationContext context, ExpressionSyntax entity,
                                                     Type componentType)
        {
            var type = TypeSystem.BuildTypeSyntax(componentType);

            context.RecordComponentAccess(
                context.IterationContext,
                componentType.GenerateTypeHandle(context.IterationContext.Stencil),
                RoslynEcsTranslator.AccessMode.Read);
            var expressionId = typeof(ISharedComponentData).IsAssignableFrom(componentType)
                ? nameof(EntityManager.GetSharedComponentData)
                : nameof(EntityManager.GetComponentData);

            yield return(RoslynBuilder.MethodInvocation(
                             expressionId,
                             IdentifierName(nameof(EntityManager)),
                             new[] { Argument(entity) },
                             new[] { type }));
        }