'Return an environment based on ``self`` with modified parameters.
:param cr: optional database cursor to change the current cursor
:param user: optional user/user id to change the current user
:param context: optional context dictionary to change the current context'

def __call__(self, cr=None, user=None, context=None):

    cr = (self.cr if (cr is None) else cr)
    uid = (self.uid if (user is None) else int(user))
    context = (self.context if (context is None) else context)
    return Environment(cr, uid, context)
