public virtual Schema SubClass(string name) { Schema subSchema; if (!SubSchemas.TryGetValue(name, out subSchema)) { var newIndexMap = new IndexMap(IndexMap); newIndexMap.Add(name, newIndexMap.Count); SubSchemas[name] = subSchema = new Schema(Env, newIndexMap); } return subSchema; }