Made Parts a protected set, calling ToArray only once in the ctor.  This also makes Length more efficient.