using System;
using System.Collections.Generic;
using System.Text;

using NPanday.ProjectImporter.Digest;

/// Author: Leopoldo Lee Agdeppa III

namespace NPanday.ProjectImporter.Digest.Model
{

    public class Folder : IncludeBase
    {
        public Folder(string projectBasePath)
            : base(projectBasePath)
        {
        }
    }

}
