internal override bool Nullable() { switch (contentType) { case Type.Sequence: return(left.Nullable() && right.Nullable()); case Type.Choice: return(left.Nullable() || right.Nullable()); case Type.Plus: return(left.Nullable()); default: return(true); // Type.Qmark, or Type.Star } }