public int WriteEmbeddedBehaviorsToDirectory(IEnumerable <string> behaviorUris, string path)
    {
        int count = 0;

        foreach (string uri in behaviorUris)
        {
            string             id                = BehaviorSystem.GetIdOfBehaviorUri(uri);
            Behaviors.Behavior behavior          = GetBehaviorData(uri);
            BehaviorCards.CardMetadata.Data meta = BehaviorCards.CardMetadata.GetMetaDataFor(behavior);
            string fileName = String.Join("_",
                                          meta.title.Split(Path.GetInvalidFileNameChars(), StringSplitOptions.RemoveEmptyEntries)).TrimEnd('.');
            string baseBehaviorDir = Path.Combine(path, fileName);
            string behaviorDir     = baseBehaviorDir;
            int    i = 1;
            while (Directory.Exists(behaviorDir))
            {
                behaviorDir = baseBehaviorDir + " " + i;
                i++;
            }
            Directory.CreateDirectory(behaviorDir);
            Behaviors.Behavior.WriteToDirectory(behaviorDir, id, behavior);
            count++;
        }
        return(count);
    }
    // TODO should BehaviorSystem know about this?
    // For the card library.
    public IEnumerable <string> GetCards()
    {
        foreach (string uri in LoadBehaviorLibrary())
        {
            if (IsLegacyBuiltinBehavior(uri))
            {
                // Skip these.
                continue;
            }

            Behavior data = GetBehaviorData(uri);
            BehaviorCards.CardMetadata.Data meta = BehaviorCards.CardMetadata.GetMetaDataFor(data);
            if (!meta.isCard || meta.hidden)
            {
                continue;
            }
            yield return(uri);
        }
    }