anchor.diff:  open System.Windows.Input
   open System.Windows.Interactivity
   
  +open System.Reflection
  +open Microsoft.FSharp.Quotations.Patterns
  +
   type EventToCommand() as self =
       inherit TriggerAction<DependencyObject>()
  +
  +    let getModuleType = function
  +        | Call (_, methodInfo, _) -> methodInfo.DeclaringType
  +        | _ -> failwith "Expression is not a method."
  +    let optionModuleType = getModuleType <@ Option.isSome None @>
   
       let getCommand() =
           match self.Command with
  
positive.code: 
      /// The converter parameter used to map the EventArgs of the command to the VM
      static member EventArgsConverterParameterProperty with get() = eventArgsConverterParameterProperty
  
      // Dependency Property properties
  
  
negative.code:             match this.AssociatedFrameworkElement with
              | Some fe -> not fe.IsEnabled
              | _ -> true
          
          let unwrapOptionAndExecute p =
              if this.FilterOptionEventArgs then
                  if p <> null then
                      let t = p.GetType ()
                      if t.IsGenericType && t.GetGenericTypeDefinition () = typedefof<Option<_>> then     
                          let args = t.GetGenericArguments ()
                          let exec = this.GetType().GetMethod("ExecuteOption", BindingFlags.Instance ||| BindingFlags.NonPublic)
                          let exec' = exec.MakeGenericMethod args
                          exec'.Invoke(this, [| p |]) |> ignore
                      else
                          this.Execute p
              else
                  this.Execute p
  
          match associatedElementDisabled, command with
          | (true, _) -> ()
          | (_, null) -> ()
          | (false, _) ->
              let parameter = getParameter param
              unwrapOptionAndExecute parameter
  
      override this.OnAttached() =
          base.OnAttached()
  