public virtual char CharAt(int index) { string str = depth == 0 ? (string)s1 : Flatten(); return str[index]; }