public override IEntity Generate(
            string componentIdentifier,
            string originalName,
            string type,
            ParameterCollection parameters,
            ICircuitContext context)
        {
            if (parameters.Any(p => p is AssignmentParameter asgParameter && asgParameter.Name.ToLower() == "v"))
            {
                var entity = new BehavioralVoltageSource(componentIdentifier);
                context.CreateNodes(entity, parameters);

                var expressionParameter = (AssignmentParameter)parameters.First(p => p is AssignmentParameter asgParameter && asgParameter.Name.ToLower() == "v");
                entity.Parameters.Expression  = expressionParameter.Value;
                entity.Parameters.ParseAction = (expression) =>
                {
                    var parser = new ExpressionParser(context.Evaluator.GetEvaluationContext(null), false, context.CaseSensitivity);
                    return(parser.Resolve(expression));
                };
                return(entity);
            }

            if (parameters.Any(p => p is AssignmentParameter asgParameter && asgParameter.Name.ToLower() == "i"))
            {
                var entity = new BehavioralCurrentSource(componentIdentifier);
                context.CreateNodes(entity, parameters);

                var expressionParameter = (AssignmentParameter)parameters.First(p =>
                                                                                p is AssignmentParameter asgParameter && asgParameter.Name.ToLower() == "i");

                entity.Parameters.Expression  = expressionParameter.Value;
                entity.Parameters.ParseAction = (expression) =>
                {
                    var parser = new ExpressionParser(context.Evaluator.GetEvaluationContext(null), false, context.CaseSensitivity);
                    return(parser.Resolve(expression));
                };
                return(entity);
            }

            return(null);
        }
        public override SpiceSharp.Components.Component Generate(
            string componentIdentifier,
            string originalName,
            string type,
            ParameterCollection parameters,
            ICircuitContext context)
        {
            if (parameters.Any(p => p is AssignmentParameter asgParameter && asgParameter.Name.ToLower() == "v"))
            {
                var entity = new BehavioralVoltageSource(componentIdentifier);
                context.CreateNodes(entity, parameters);

                var expressionParameter = (AssignmentParameter)parameters.First(p => p is AssignmentParameter asgParameter && asgParameter.Name.ToLower() == "v");
                var baseParameters      = entity.ParameterSets.Get <SpiceSharpBehavioral.Components.BehavioralBehaviors.BaseParameters>();
                baseParameters.Expression = expressionParameter.Value;
                baseParameters.Parser     = (sim) => CreateParser(context, sim);
                return(entity);
            }

            if (parameters.Any(p => p is AssignmentParameter asgParameter && asgParameter.Name.ToLower() == "i"))
            {
                var entity = new BehavioralCurrentSource(componentIdentifier);
                context.CreateNodes(entity, parameters);

                var expressionParameter = (AssignmentParameter)parameters.First(p =>
                                                                                p is AssignmentParameter asgParameter && asgParameter.Name.ToLower() == "i");

                var baseParameters = entity.ParameterSets.Get <SpiceSharpBehavioral.Components.BehavioralBehaviors.BaseParameters>();
                baseParameters.Expression = expressionParameter.Value;
                baseParameters.Parser     = (sim) => CreateParser(context, sim);

                return(entity);
            }

            return(null);
        }