//TODO: Distribution public override Expression GetExpression(IReadOnlyDictionary <string, ParameterExpression> parameters) { Check(DepthParameter, parameters); Check(BranchParameter, parameters); var condition = Expression.Equal(Expression.Constant(Name), BranchParameter); // TODO: Negative depth if (MinDepth > 1) { condition = Expression.AndAlso(condition, Expression.LessThanOrEqual(Expression.Constant((byte)MinDepth), DepthParameter)); } if (MaxDepth >= 1) { condition = Expression.AndAlso(condition, Expression.LessThanOrEqual(DepthParameter, Expression.Constant((byte)MaxDepth))); } return(Expression.Condition(condition, Matched?.GetExpression(parameters) ?? Expression.Constant(0f), NotMatched?.GetExpression(parameters) ?? Expression.Constant(0f))); }