It looks like the Clone functions in MatchString.cs often reference the clone when they meant to reference "this" (explicitly or implicitly). For example, https://github.com/PowerShell/PowerShell/blob/master/src/Microsoft.PowerShell.Commands.Utility/commands/utility/MatchString.cs#L65 checks the newly-created object to see if it has a PreContext, when it probably should check the current object.
It looks like this mistake occurs in both Clone() functions.
Also, where is the definition of the Match class?