Added additional comments to explain class generic type parameters and 'where' keyword.