give emptyOrSingleton() a narrower return type