newClosure
  :: [AccessFlag]
  -> Text
  -> Text
  -> CodeGen a
  -> CodeGen (a, CgState)
newClosure accessFlags clName superClassName genCode =
  newClosureGeneric $ do
    setAccessFlags accessFlags
    setClosureClass clName
    setSuperClass superClassName
    genCode
newClosure
  :: [AccessFlag]
  -> Text
  -> Text
  -> CodeGen a
  -> CodeGen (a, CgState)
newClosure accessFlags clName superClassName genCode =
  newClosureGeneric $ do
    setAccessFlags accessFlags
    setClosureClass clName
    setSuperClass superClassName
    genCode
newClosure accessFlags clName superClassName genCode =
  newClosureGeneric $ do
    setAccessFlags accessFlags
    setClosureClass clName
    setSuperClass superClassName
    genCode