anchor.diff:  
       let get (propertyName:string) (target:obj) : 'TResult =
           target |> invocation (Member propertyName)
  -        
  -    let getChain (chainOfMembers:string seq) (target:obj) =
  +
  +    let getChain (chainOfMembers:string seq) (target:obj) : 'TResult =
           let chainOfMembers' = String.concat "." chainOfMembers 
           Dynamic.InvokeGetChain(target, chainOfMembers') |> invocation Direct
    
  
positive.code:     /// infered casting with automatic implicit convert.
      let invocation (memberName:Calling) (target:obj)  : 'TResult =
          let resultType = typeof<'TResult>
          let (|NoConversion| Conversion|) t = if t = typeof<obj> then NoConversion else Conversion
          let finalConvertResult finalType r :'TResult = 
              match finalType with
              | NoConversion -> r
  
negative.code:         else
              let lambda arg =
                 let argType,returnType = FSharpType.GetFunctionElements resultType
                 let argArray =
                      match argType with
                      | a when FSharpType.IsTuple(a) -> FSharpValue.GetTupleFields(arg)
                      | a when a = typeof<unit>      -> [| |]
                      | ____________________________ -> [|arg|]
                 let invoker k = 
                      let memberName =
                           memberName |> function | GenericMember (name, targs) ->
  