code: public Type asSub(Type t, Symbol sym) {
          return asSub.visit(t, sym);
      }
docs: Return the least specific subtype of t that starts with symbol
  sym.  If none exists, return null.  The least specific subtype
  is determined as follows:
  
  <p>If there is exactly one parameterized instance of sym that is a
  subtype of t, that parameterized instance is returned.<br>
  Otherwise, if the plain type or raw type `sym' is a subtype of
  type t, the type `sym' itself is returned.  Otherwise, null is
  returned.