sig   module type Second =     sig       type t       val from_int : int -> Time_sig.Second.t       val from_float : float -> Time_sig.Second.t       val to_int : Time_sig.Second.t -> int       val to_float : Time_sig.Second.t -> float     end   module type S =     sig       type t       type field = [ `Hour | `Minute | `Second ]       type second       module Second :         sig           type t = second           val from_int : int -> t           val from_float : float -> t           val to_int : t -> int           val to_float : t -> float         end       val make : int -> int -> Time_sig.S.second -> Time_sig.S.t       val lmake :         ?hour:int ->         ?minute:int -> ?second:Time_sig.S.second -> unit -> Time_sig.S.t       val now : unit -> Time_sig.S.t       val midnight : unit -> Time_sig.S.t       val midday : unit -> Time_sig.S.t       val convert :         Time_sig.S.t -> Time_Zone.t -> Time_Zone.t -> Time_sig.S.t       val from_gmt : Time_sig.S.t -> Time_sig.S.t       val to_gmt : Time_sig.S.t -> Time_sig.S.t       val normalize : Time_sig.S.t -> Time_sig.S.t * int       val hour : Time_sig.S.t -> int       val minute : Time_sig.S.t -> int       val second : Time_sig.S.t -> Time_sig.S.second       val to_seconds : Time_sig.S.t -> Time_sig.S.second       val to_minutes : Time_sig.S.t -> float       val to_hours : Time_sig.S.t -> float       val equal : Time_sig.S.t -> Time_sig.S.t -> bool       val compare : Time_sig.S.t -> Time_sig.S.t -> int       val hash : Time_sig.S.t -> int       val is_pm : Time_sig.S.t -> bool       val is_am : Time_sig.S.t -> bool       val from_seconds : Time_sig.S.second -> Time_sig.S.t       val from_minutes : float -> Time_sig.S.t       val from_hours : float -> Time_sig.S.t       module Period :         sig           type +'a period constraint 'a = [< Period.date_field ]           type t = Period.date_field period           val empty : [< Period.date_field ] period           val add :             ([< Period.date_field ] as 'a) period -> 'a period -> 'a period           val sub :             ([< Period.date_field ] as 'a) period -> 'a period -> 'a period           val opp : ([< Period.date_field ] as 'a) period -> 'a period           val equal :             [< Period.date_field ] period ->             [< Period.date_field ] period -> bool           val compare :             [< Period.date_field ] period ->             [< Period.date_field ] period -> int           val hash : [< Period.date_field ] period -> int           val length : [< Period.date_field ] period -> Time_sig.S.second           val mul :             ([< Period.date_field ] as 'a) period -> 'a period -> 'a period           val div :             ([< Period.date_field ] as 'a) period -> 'a period -> 'a period           val make :             int -> int -> Time_sig.S.second -> [< Period.date_field ] period           val lmake :             ?hour:int ->             ?minute:int ->             ?second:Time_sig.S.second ->             unit -> [< Period.date_field ] period           val hour : int -> [< Period.date_field ] period           val minute : int -> [< Period.date_field ] period           val second : Time_sig.S.second -> [< Period.date_field ] period           val to_seconds : [< Period.date_field ] period -> Time_sig.S.second           val to_minutes : [< Period.date_field ] period -> float           val to_hours : [< Period.date_field ] period -> float         end       val add :         Time_sig.S.t ->         [< Period.date_field ] Time_sig.S.Period.period -> Time_sig.S.t       val sub :         Time_sig.S.t ->         Time_sig.S.t -> [< Period.date_field ] Time_sig.S.Period.period       val rem :         Time_sig.S.t ->         [< Period.date_field ] Time_sig.S.Period.period -> Time_sig.S.t       val next : Time_sig.S.t -> Time_sig.S.field -> Time_sig.S.t       val prev : Time_sig.S.t -> Time_sig.S.field -> Time_sig.S.t     end end