public override void Validate(ValidationContext ctx)
                                      {
                                          base.Validate(ctx);

                                          if (!Packages.Any())
                                          {
                                              ctx.Output.Add(new MetabaseValidationMsg(MetabaseValidationMessageType.Warning, Catalog, this, StringConsts.METABASE_NO_APP_PACKAGES_WARNING.Args(Name)));
                                          }

                                          if (Packages.Count() != Packages.Distinct().Count())
                                          {
                                              ctx.Output.Add(new MetabaseValidationMsg(MetabaseValidationMessageType.Error, Catalog, this, StringConsts.METABASE_APP_PACKAGE_REDECLARED_ERROR.Args(Name)));
                                          }

                                          foreach (var ap in Packages)
                                          {
                                              if (ap.Name.IsNullOrEmpty())
                                              {
                                                  ctx.Output.Add(new MetabaseValidationMsg(MetabaseValidationMessageType.Error, Catalog, this, StringConsts.METABASE_APP_PACKAGE_BLANK_NAME_ERROR.Args(Name)));
                                                  continue;
                                              }

                                              var refed = Metabank.CatalogBin.Packages.Where(pi => Metabank.INVSTRCMP.Equals(pi.Name, ap.Name)).Select(pi => pi.Name).FirstOrDefault();

                                              if (refed == null)
                                              {
                                                  ctx.Output.Add(new MetabaseValidationMsg(MetabaseValidationMessageType.Error, Catalog, this, StringConsts.METABASE_APP_PACKAGE_NOT_FOUND_IN_BIN_CATALOG_ERROR.Args(Name, ap.Name)));
                                              }
                                          }
                                      }