class MyScript { #: System.Management.Automation.IValidateSetValuesGenerator {
  static [string[]] _GetValidValues([string]$wordToComplete,[bool]$Strict) {
    $local:possibleValues = $(
        Get-ChildItem $global:MyPSScriptRoot -Filter '*.ps1' -Recurse |
          Select-Object -ExpandProperty FullName | ForEach-Object {
            $_ -replace '\.ps1$','' -replace "$($MyPSScriptRoot -replace '\\',"\\")[/\\]",''
          }
      )
    return $(Get-PossibleArguments -WordToComplete $wordToComplete -FullValueSet $possibleValues -Strict:$Strict );
  }
  
  [String[]] GetValidValues() {
    return [MyScript]::_GetValidValues('',$true)
  }
}