<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def create_env(self, include_activation=True, **props) -> "Environment": """ Create a custom dictionary of environment variables representing an environment by passing values of properties as keyword arguments. Values of properties not mentioned in the env will be taken from the profile itself. Property values that are None should be interpreted and will be interpreted in Environment.applied as environment variables to be unset. Calling this does NOT modify the profile or the environment variables. TODO v5.x: Perhaps this can completely replace EnvvarProfile.to_envvars. """

        self: EnvvarProfile
        props = dict(props)
        env = Environment()

        if include_activation:
            env[self._active_profile_name_envvar] = self.profile_name

        for k in self.profile_properties:
            p = self._get_prop(k)
            if k in props:
                v = props.pop(k)
                env[p.get_envvar(self)] = p.to_str(self, v)
            else:
                env[p.get_envvar(self)] = self._get_prop_value(p)

        if props:
            raise ValueError(f"Unexpected property names: {', '.join(str(k) for k in props.keys())}")

        return env