{-# LANGUAGE FlexibleInstances, FlexibleContexts, UndecidableInstances,
             DataKinds, TypeFamilies, KindSignatures, PolyKinds, FunctionalDependencies #-}

module T10564 where

class HasFieldM (l :: k) r (v :: Maybe *)
        | l r -> v

class HasFieldM1 (b :: Maybe [*]) (l :: k) r v
        | b l r -> v

class HMemberM (e1 :: k) (l :: [k]) (r :: Maybe [k])
        | e1 l -> r

data Label a
type family LabelsOf (a :: [*]) ::  [*]

instance (HMemberM (Label (l::k)) (LabelsOf xs) b,
            HasFieldM1 b l (r xs) v)
         => HasFieldM l (r xs) v where
