anchor.diff:    |(_,_,_,RustParameter(rname,_)) -> rname
     |_ -> raise <| new System.Exception("Unreachable")
   
  +let deKeyword name=
  +  match name with
  +  |"type" -> "type_"
  +  |_ -> name
  +
   // parms is list of tuples (parameterName, parameterAnnotation, nativeParameterType, parameterSource)
  -let generateMethodFromEquippedAnnotation (mname, nname, mannot, parms, rty, rvsource)=
  +let generateMethodFromEquippedAnnotation (mname, nname, mannot, parms_k, rty, rvsource)=
  +  let parms=List.map (function |(nname,annot,ctype,RustParameter (rname,rtype)) -> (nname,annot,ctype,RustParameter (deKeyword rname, rtype)) |other -> other) parms_k
     // let's find return type and return expression
     let (rrt,rexpr)=
       match rvsource with
  
positive.code:   let nativeInvocation="((**self.0)."+nname+")("+native_parms+")"
    // we are ready to generate method
    "
  "+unsafe+"fn "+mname+generics+"("+parameters+") -> "+(rustTypeToString rtype_constraint)+" {
  "+constraints+"
  "+locals+"
    let hr=unsafe {
  
negative.code: pub struct %s(*mut *mut IUnknownVtbl);
  
  pub impl HasIID for %s {
    fn iid() -> &'static IID { &IID_I%s }
    fn new(ppVtbl : *mut *mut IUnknownVtbl) -> Self { %s(ppVtbl) }
    fn expose_iptr(&self) -> *mut *mut IUnknownVtbl { self.0 }
  }
  
  pub impl Drop for %s {
    fn drop(&mut self) {
      drop_com_ptr(self)
    }
  }
  
  pub impl Clone for %s {
    fn clone(&self) -> Self {
      clone_com_ptr(self)
    }
  }
  
  pub impl %s {
  %s
  }
  "          iname iname iname iname iname iname iname (generateMethods methods)
  
      sb.ToString()
    |None -> 
  