Parámetros de tipo resueltos estáticamente

El siguiente fragmento de código (simplificado) se toma de una aplicación que estoy implementando y que utiliza sistemáticamente los parámetros de tipo resueltos.

type A< ^B when ^B : (static member MyMember : Unit -> Unit)> = {
  Field : unit
}
type TestA = {
  AField : A< BTy >
}
and BTy = {
  BField : Unit
} with
  static member MyMember () = ()

IntelliSense me da el siguiente error cuando defino el tipo de campo AF (AField : A< BTy >) cual es:El tipo 'BTy' no admite ningún operador llamado 'MyMember'.

Editado Declararlos por separado funciona, pero si tengo una referencia mutua yno poder declare un tercer tipo para colocar en la parte superior que contiene las informaciones comunes de los dos tipos. ¿Qué debo hacer para evitar este problema? De todos modos, si defino a continuación las definiciones.let pluto = ("" :> obj) :?> A< BTy > Funciona, me imagino porque ambos tipos son visibles desde el enlace let.

Respuestas a la pregunta(2)

Su respuesta a la pregunta