anchor.diff:          | _ -> None
   
       let (|Abstract|_|) (m : MethodInfo) = if m.IsAbstract then Some() else None
  -    let (|Virtual|_|) (m : MethodInfo) = if m.IsVirtual then Some() else None
   
   open MethodInfo
   
  
positive.code:         new IProxyGenerationHook with
              member __.ShouldInterceptMethod(type', method') = 
                  match method' with 
                  | Virtual & PropertySetter propertyName when type'.GetProperty(propertyName).GetGetMethod() <> null -> true
                  | Virtual & PropertyGetter propertyName when type'.GetProperty(propertyName).GetSetMethod() <> null -> true 
                  | _ -> false 
              member __.NonProxyableMemberNotification(_, _) = ()          
              member __.MethodsInspected() = ()          
      }
  
      static member Create<'T when 'T :> Model and 'T : not struct>([<ParamArray>] constructorArguments)  = 
          let interceptors : IInterceptor[] = [| PropertyInterceptor() |]
          proxyFactory.CreateClassProxy(typeof<'T>, proxyOptions, constructorArguments, interceptors) |> unbox<'T>    
  
      interface INotifyPropertyChanged with
  
negative.code:                         let returnType = invocation.Method.ReturnType
                          if returnType.IsValueType then 
                              invocation.ReturnValue <- Activator.CreateInstance returnType
                  | _ -> 
                      invocation.Proceed()
  
  