code: public void assignTypeVarsFromTypeParams( IType[] typeParams )
    {
      _typeVarDefs = new ArrayList<ITypeVariableDefinition>( 2 );
      for( IType typeParam : typeParams )
      {
        if( typeParam instanceof TypeVariableType )
        {
          TypeVariableDefinitionImpl typeVarDef = getTypeVarDefImpl(((TypeVariableType)typeParam).getTypeVarDef());
          _typeVarDefs.add( typeVarDef );
        }
      }
  
      if( _typeVarDefs.isEmpty() )
      {
        _typeVarDefs = Collections.emptyList();
      }
    }
docs: Note a gosu class can be BOTH parameterzied AND generic. For example,
  <p/>
  class Bar<T> {
  function blah() : T {...}
  }
  class Foo<T extends CharSequence> extends Bar<T> {}
  <p/>
  The class Bar<T> here is parameterized by the type var from Foo, yet it is
  still a generic class. The blah() method in Foo's typeinfo must have a
  return type consistent with Foo's type var upper bound, CharSequence.
  
  //## todo: maybe we don't need this concept any longer? i.e., parameterization should work correctly regardless.