title: Unknown need for type annotation or cast
body: <p>I know I must be missing something really obvious here. <code>B.GetInstance().Call()</code> generates the error: <em>Lookup on object of indeterminate type based on information prior to this program point. A type annotation may be needed prior to this program point to constrain the type of the object. This may allow the lookup to be resolved.</em></p>
  
  <p>I'm using v1.9.9.9.</p>
  
  <pre><code>type A() =
      member x.Call() = B.GetInstance().Call()
  
  and B() =
      static member GetInstance() = new B()
      member x.Call() = ()
  </code></pre>
  
  <p>I just discovered that this works: <code>(B.GetInstance() :&gt; B).Call()</code></p>
  
  <p>Any idea why the cast is necessary?</p>