anchor.diff:  
           let ret = constructedHelper.Invoke (null, [|meth|])
           ret :?> Func<'T, obj>
  +
  +    static member CreateMagicMethodHelper2<'TTarget, 'TParam> (meth : MethodInfo) =
  +        let func = meth.CreateDelegate (typeof<Action<'TTarget, 'TParam>>) :?> Action<'TTarget, 'TParam>
  +        Action<'TTarget, obj> (fun t o -> func.Invoke (t, o :?> 'TParam))
  +
  +    static member MagicMethod2 (meth : MethodInfo) =
  +        let genericHelper = typeof<Clone>.GetRuntimeMethods() |> Seq.find (fun x -> x.Name = "CreateMagicMethodHelper2")
  +
  +        let constructedHelper = genericHelper.MakeGenericMethod ([|typeof<'T>; meth.GetParameters().[0].ParameterType|])
  +        
  +        let ret = constructedHelper.Invoke (null, [|meth|])
  +        ret :?> Action<'T, obj>
   
       static member CreateCloneMethod<'T when 'T :> Component> () =
           let typ = typeof<'T>
  
positive.code:             |> Seq.toArray
  
          let props =
              typ.GetRuntimeProperties ()
              |> Seq.choose (fun prop ->
                  if prop.CanRead && prop.CanWrite && not (ctorProps.Contains prop) then
                      Some prop
                  else
                      None
              )
              |> Seq.toArray
  
          let gets =
              ctorProps
              |> Array.map (fun x -> Clone.MagicMethod<'T> x.GetMethod)
  
  
          fun (o : obj) ->
              ctor.Invoke (gets |> Array.map (fun x -> x.Invoke (o :?> 'T)))
             //ctor.Invoke (ctorProps |> Array.map (fun x -> x.GetValue o))
  
  type IEntityLookupData =
  
  
negative.code:                 None
  
          member this.CloneComponent comp =
              this.Clone (comp :?> 'T) :> Component
  
  type EntityBuilder = EntityBuilder of (Entity -> EntityManager -> unit)
  
  