private void LoadMatchingExpressionsForTypes()
        {
            var nonPluralTypes = WorkspaceManager.KnownTypesManager.WholeTypeCache
                                 .Where(c =>
            {
                var(_, expression) = c;
                return(!expression.IsPlural);
            }).ToList();

            foreach (var(type, expressions) in nonPluralTypes
                     .Select(cc => (Type: cc.Value.ClassName, Expressions: KnownExpressionsFromAddons
                                    .Where(c => !(c is SyntaxSkriptEventValueExpression))
                                    .Where(c => !BannedClassNames.Contains(c.ClassName))
                                    .Where(c =>
                                           c.ReturnType == cc.Value.ClassName ||
                                           CheckClassExtendsAnother(c.ReturnType, cc.Value.ClassName)).ToList())))
            {
                ExpressionsForType.TryAdd(type, expressions);
            }

            ExpressionsForType.TryAdd(KnownTypesManager.JavaLangObjectClass,
                                      KnownExpressionsFromAddons.ToList());

            LoadEventExpressionsForTypes(nonPluralTypes);
        }
 public IReadOnlyList <SyntaxSkriptExpression> GetExpressionsThatCanFitType(string type)
 {
     return(ExpressionsForType.GetValue(type));
 }