actually it's not. They should never use this class directly.